Android 如何使服务侦听onTouchEvent

Android 如何使服务侦听onTouchEvent,android,android-service,android-view,Android,Android Service,Android View,我正在尝试使用以下代码从服务收听触控事件 public void onCreate() { super.onCreate(); // Toast.makeText(getBaseContext(),"onCreate", Toast.LENGTH_LONG).show(); mView = new HUDView(this); WindowManager.LayoutParams params = new WindowManage

我正在尝试使用以下代码从服务收听触控事件

  public void onCreate() {
        super.onCreate();
    //    Toast.makeText(getBaseContext(),"onCreate", Toast.LENGTH_LONG).show();
        mView = new HUDView(this);
        WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
                WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
                PixelFormat.TRANSLUCENT);
        params.gravity = Gravity.RIGHT | Gravity.TOP;
        params.setTitle("Load Average");
        WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
        wm.addView(mView, params);
    }

这段代码在Android 2.3版上运行良好,但在4.0版和4.1版中没有调用onTouchEvent。有什么问题吗

我正在尝试聆听来自服务的点击,服务与活动相连。该活动照常使用,但服务部门会不断记录水龙头。当使用TYPE_SYSTEM_OVERLAY时,它在Android2.3上工作得非常好,但在4.1上不会调用onTouchEvent。当使用类型_SYSTEM _alertontouchEvent时,会调用该触控事件,但该触控事件不会传递给该活动,并且会变得无响应。

请尝试以下操作:

findViewById(R.id.someView).setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent ev) {
        final int action = ev.getAction();
        final float x = ev.getX();
        final float y = ev.getY();
        Points p = new Points();
        p.setPoints(x,y);
        list.add(p);

        return true;        
    }
});

服务不应处理UITry,这可能需要1pxX1px窗口覆盖。我试过了,但没用。它必须与Oncreate()中的LayoutParams有关。
findViewById(R.id.someView).setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent ev) {
        final int action = ev.getAction();
        final float x = ev.getX();
        final float y = ev.getY();
        Points p = new Points();
        p.setPoints(x,y);
        list.add(p);

        return true;        
    }
});