gpt4 book ai didi

android - 监听拖动手势的后台应用程序

转载 作者:行者123 更新时间:2023-11-29 01:39:29 24 4
gpt4 key购买 nike

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

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

最佳答案

根据您的链接,通过作为服务运行,您的应用可以在没有“正常”UI 的情况下运行,但我认为您链接的代码可能已经过时了。

请记住,您的服务必须在前台运行 - 代码已在您的链接中提供,但未明确调用。如果不在前台运行,系统很可能会停止您的应用程序,而不是在后台运行它。


当我使用此类覆盖创建任务切换器时,我发现有必要使用 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 中正确注销覆盖 View 。否则,您的应用程序将泄漏内存。

public void onDestroy()
{
super.onDestroy();
if (overlay != null)
{
((WindowManager) getSystemService(WINDOW_SERVICE)).removeView(overlay);
overlay = null;
}
}

我看到这是在 OverlayView.destory() 中完成的(请注意该方法名称的拼写错误 - 使用正确的名称是个好主意对于那个方法)。

关于android - 监听拖动手势的后台应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25642077/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com