android在服务中读取用户输入

时间:2010-09-21 04:02:26

标签: java android

我想写一个Android应用程序,它将是一个后台服务,可以监听特定的手势或按键,然后触发一个动作。甚至可以用服务做这样的事情吗?如果是这样,有人可以指导我正确的方向。我有搜索高低可以似乎找到答案。

2 个答案:

答案 0 :(得分:1)

不难看出他们触摸的地方,但这样的触摸只提供位置,而不是时间,而不是起伏。

在您的服务中

@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)

答案 1 :(得分:0)

执行此操作(除了通过向您发送输入进行合作的应用程序之外)将是Android架构旨在禁止的那种巨大的安全漏洞。要做到这一点,你需要修改平台,并通过访问原始触摸和按钮输入来运行观察,可能作为驱动程序的一部分。

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