我希望编写一个Android应用程序,它将作为后台服务运行,监听特定的手势或按键事件,并触发相应的操作。使用服务是否可以实现这样的功能?如果可以,能否指导我正确的方向。我已经搜索了很多地方,但似乎找不到答案。
它们的接触并不难读取,但这种接触只提供位置信息,而不是时间信息,也不会在上升或下降时发生。
为您服务
@Override
public void onDestroy() {
super.onDestroy();
if (layout != null) {
((WindowManager) getSystemService(WINDOW_SERVICE)).removeView(layout);
layout = null;
}
}
@Override
public void onCreate() {
super.onCreate();
layout = new RelativeLayout(this);
WindowManager.LayoutParams params = new WindowManager.LayoutParams(WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
PixelFormat.TRANSLUCENT);
params.setTitle("test");
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
wm.addView(layout, params);
}
至于你的触摸处理程序,它必须是这样的
public boolean gestureHandler(MotionEvent event, boolean eat) {
if(event.getAction() == MotionEvent.ACTION_OUTSIDE)
除非在与发送其输入的应用程序顶部合作的情况下进行此操作,否则这将是一种巨大的安全漏洞,而 Android 架构旨在禁止此类漏洞。要执行此操作,您需要修改平台,并由某些具有访问原始触摸和按钮输入权限的内容运行进行监视,可能作为该驱动程序的一部分。
换句话说,您可以在自己的已 root 的手机或制造的设备上艰难地完成此操作,但对于大多数人来说不可用。