Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/203.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android是否可以创建服务覆盖并拦截所有触摸事件数据?_Android_Android Layout_Ontouchlistener_Android Overlay - Fatal编程技术网

Android是否可以创建服务覆盖并拦截所有触摸事件数据?

Android是否可以创建服务覆盖并拦截所有触摸事件数据?,android,android-layout,ontouchlistener,android-overlay,Android,Android Layout,Ontouchlistener,Android Overlay,您好,我正在尝试创建一个透明的覆盖,拦截(并且不阻止其他应用程序)我在智能手机上执行的所有触摸事件,特别是我对滚动事件感兴趣,这是我服务类中的代码: @Override public void onCreate() { super.onCreate(); windowManager=(WindowManager)this.getSystemService(Context.WINDOW_SERVICE); view=new LinearLayoutCompat(this

您好,我正在尝试创建一个透明的覆盖,拦截(并且不阻止其他应用程序)我在智能手机上执行的所有触摸事件,特别是我对滚动事件感兴趣,这是我服务类中的代码:

  @Override
public void onCreate() {
    super.onCreate();
    windowManager=(WindowManager)this.getSystemService(Context.WINDOW_SERVICE);
    view=new LinearLayoutCompat(this);


    LayoutParams params=new LayoutParams(1, ViewGroup.LayoutParams.MATCH_PARENT);


    view.setLayoutParams(params);
    view.setOnTouchListener(this);

}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {

    LayoutParams params = new LayoutParams(
            1, /* width */
            1, /* height */
            LayoutParams.TYPE_PHONE,
            LayoutParams.FLAG_NOT_FOCUSABLE
                    | LayoutParams.FLAG_NOT_TOUCH_MODAL
                    | LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH,
            PixelFormat.TRANSPARENT
    );
    params.gravity = Gravity.LEFT | Gravity.TOP;
    windowManager.addView(view, params);
    return super.onStartCommand(intent, flags, startId);
}




@Override
public boolean onTouch(View view, MotionEvent motionEvent) {


    Log.d(TAG,motionEvent.toString());



    return false;
}
然而,有了这一点,我只得到了运动事件类型之外的动作,我需要所有的事件数组来跟踪滚动,提前谢谢

我正试图创建一个透明的覆盖层,拦截(而不是阻止其他应用程序)我在智能手机上所做的所有触摸事件


幸运的是,出于明显的隐私和安全原因,这在Android 4.0+上是不可能的。恶意软件作者喜欢这种“窃听”攻击,对用户输入进行无形的监视。

我理解,我会想象这就是原因,谢谢你:D!