用于收听拖动手势的后台应用

时间:2014-09-03 10:33:52

标签: android

我需要注册一个广播接收器,它会在整个系统中告诉我任何类型的Drag事件。我的应用程序将在后台运行并执行任何任务,如果发生任何类型的Drag事件,即使任何其他应用程序正在前台运行。可能吗?我怎么能这样做呢?

更新:不要以为我会制作键盘记录程序。我的应用程序将可见,但将在后台运行。而我想要的只是检测拖动事件(向左拖动,向右拖动,向上拖动并向下拖动)。 如果你能告诉我如何在任何其他应用程序之上显示4个按钮,那么我会接受任何答案,因为这也可以为我提供我想要的东西。

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)

因此,您真正的要求是能够将一些输入传递到您的应用,同时允许屏幕专用于输出视频。

您是否考虑过以下事项:

  • 检测设备的倾斜或方向以控制方向
  • 有4个nfc标签,并检测你们中的哪一个改变了方向(可能没有给你足够快的响应)

也可以直接从通知中选择操作,因此您可以有一个或多个通知提供控制方向的操作,并且只需允许通知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