こんにちは、スマートフォンで行うすべてのタッチ イベントをインターセプトする (他のアプリケーションをブロックしない) 透明なオーバーレイを作成しようとしています。特にスクロール イベントに関心があります。これはサービス クラスのコードです。
@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;
}
ただし、これでは ACTION_OUTSIDE タイプのモーションイベントしか取得できません。スクロールを追跡するには、すべてのイベントの配列が必要です。よろしくお願いします!