我需要注册一个广播接收器,它会在整个系统中告诉我任何类型的Drag
事件。我的应用程序将在后台运行并执行任何任务,如果发生任何类型的Drag
事件,即使任何其他应用程序正在前台运行。可能吗?我怎么能这样做呢?
更新:不要以为我会制作键盘记录程序。我的应用程序将可见,但将在后台运行。而我想要的只是检测拖动事件(向左拖动,向右拖动,向上拖动并向下拖动)。 如果你能告诉我如何在任何其他应用程序之上显示4个按钮,那么我会接受任何答案,因为这也可以为我提供我想要的东西。
答案 0 :(得分:1)
根据您的链接,您的应用可以在没有“正常”用户界面的情况下运行Service
,但我认为您链接的代码可能会略微过时。
请记住,您的服务必须在前台运行 - 代码在您的链接中提供,但未明确调用。如果不在前台运行,系统可以很好地停止您的应用,而不是在后台运行它。
当我使用此类叠加创建任务切换器时,我发现有必要使用TYPE_SYSTEM_ALERT
而不是TYPE_SYSTEM_OVERLAY
。
我在没有FLAG_WATCH_OUTSIDE_TOUCH
的情况下声明了我的窗口参数。
WindowManager.LayoutParams params =
new WindowManager.LayoutParams(width, height, x, y,
WindowManager.LayoutParams.TYPE_SYSTEM_ALERT,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL,
PixelFormat.TRANSLUCENT);
您的服务还应确保在WindowManager
结束时正确取消注册。没有这个,你的应用程序将泄漏内存。
public void onDestroy()
{
super.onDestroy();
if (overlay != null)
{
((WindowManager) getSystemService(WINDOW_SERVICE)).removeView(overlay);
overlay = null;
}
}
我看到这是在OverlayView.destory()
中完成的(请注意该方法名称的拼写错误 - 最好为该方法使用正确的名称。)
答案 1 :(得分:0)
因此,您真正的要求是能够将一些输入传递到您的应用,同时允许屏幕专用于输出视频。
您是否考虑过以下事项:
也可以直接从通知中选择操作,因此您可以有一个或多个通知提供控制方向的操作,并且只需允许通知API处理出现在视频前面的工作
当然,有些应用会设法在其他应用之前叠加自己的用户界面。这样的例子是Thrutu,虽然你似乎被推动了时间,并且让这样的解决方案工作并不简单 - 见How do I implement a slide-out drawer on the Android's call screen?
答案 2 :(得分:0)
我找到了答案here。我需要开始服务。
答案 3 :(得分:0)
库突出显示允许您创建浮动应用程序(覆盖其他应用程序的应用程序)。我用了一些我在市场上推出的Android应用程序。它使创建浮动窗口变得非常简单。请查看:
http://forum.xda-developers.com/showthread.php?t=1688531