我目前正在尝试开发一个人工智能,通过主动监控屏幕上像素的某些功能,以及用户如何与其交互,从而学习如何在Android上玩游戏。
我的问题是,我似乎找不到与检测其他应用程序接收的MotionEvents有关的任何相关信息。是否有任何标准方法可以设置全局OnTouchEvent挂钩,从而接收所有用户输入,而不管哪个应用程序处于活动状态?如果没有任何标准的方法,对于如何实现这一点,有什么想法吗?
发布于 2016-03-05 07:38:14
一个应用程序无法知道另一个应用程序内部正在发生的任何事情,除非另一个应用程序具体地共享了该数据。这是出于安全和隐私的原因。(想象一下,如果任何应用程序都知道用户正在输入其他应用程序(比如密码),那么手机将是多么不安全。)
发布于 2016-08-28 02:52:11
您可以检测到应用程序中的外部触摸事件。 WINDOWS_SERVICE是系统服务,它可以为您提供安卓设备上的触摸信息,因为您需要一个像素单位大小的布局,这样它就不会消耗您单击外部应用程序上的事件。
mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
1, // width is equal to 1px
1, // height is equal to 1px
WindowManager.LayoutParams.TYPE_PHONE, // Type Phone, These are non-application windows providing user interaction with the phone
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | // This window would never get key input focus.
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, // This window will get outside touch.
PixelFormat.TRANSPARENT // The view will be transparent
);现在您必须将布局添加到此窗口管理器服务中。
//Adding view to the window manager
mWindowManager.addView(touchLayout, params);要更好地解释代码,可以参考以下链接http://allinmyspace.com/2016/08/28/android-detect-touch-events-on-external-applications/
https://stackoverflow.com/questions/35811399
复制相似问题