首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Android中检测外部应用程序的单击事件?

如何在Android中检测外部应用程序的单击事件?
EN

Stack Overflow用户
提问于 2016-03-05 07:31:00
回答 2查看 1.5K关注 0票数 1

我目前正在尝试开发一个人工智能,通过主动监控屏幕上像素的某些功能,以及用户如何与其交互,从而学习如何在Android上玩游戏。

我的问题是,我似乎找不到与检测其他应用程序接收的MotionEvents有关的任何相关信息。是否有任何标准方法可以设置全局OnTouchEvent挂钩,从而接收所有用户输入,而不管哪个应用程序处于活动状态?如果没有任何标准的方法,对于如何实现这一点,有什么想法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-03-05 07:38:14

一个应用程序无法知道另一个应用程序内部正在发生的任何事情,除非另一个应用程序具体地共享了该数据。这是出于安全和隐私的原因。(想象一下,如果任何应用程序都知道用户正在输入其他应用程序(比如密码),那么手机将是多么不安全。)

票数 4
EN

Stack Overflow用户

发布于 2016-08-28 02:52:11

您可以检测到应用程序中的外部触摸事件。 WINDOWS_SERVICE是系统服务,它可以为您提供安卓设备上的触摸信息,因为您需要一个像素单位大小的布局,这样它就不会消耗您单击外部应用程序上的事件。

代码语言:javascript
复制
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
);

现在您必须将布局添加到此窗口管理器服务中。

代码语言:javascript
复制
//Adding view to the window manager
mWindowManager.addView(touchLayout, params);

要更好地解释代码,可以参考以下链接http://allinmyspace.com/2016/08/28/android-detect-touch-events-on-external-applications/

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35811399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档