android在服务中读取用户输入

我想写一个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) 

这样做(除了通过发送他们的输入合作的应用程序之外)将是一个巨大的安全漏洞,安卓体系结构旨在禁止。 要做到这一点,你需要修改平台,并通过访问原始触摸和按钮输入的东西来完成观察,可能作为驱动程序的一部分。

换句话说,您可能很难在自己的root手机或制造的设备上进行此操作,但它对大多数人来说都无法使用。