我有一个要求,我需要在屏幕锁定上显示叠加并订阅TYPE_SYSTEM_OVERLAY上的触摸事件。但是从论坛中,我发现这已不再可能(即订阅覆盖上的触摸事件)。
我无法更改为Type_Phone,因为它没有显示在屏幕锁定上。 (我已经尝试了几种类型,只有叠加显示在屏幕锁定上)。有关如何实现这一目标的任何想法?
mWindowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
mView = LayoutInflater.from(getApplicationContext()).inflate(R.layout.fragment_main, null);
WindowManager.LayoutParams mLayoutParams = new WindowManager.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT, 0, 0,
WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON,
PixelFormat.RGBA_8888);
mWindowManager.addView(touchLayout, mLayoutParams);
...
view.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
Log.i("Spot", "xyz..");
}
return true;
}
});
基本上,我想实现类似于按下电源按钮时发生的事情。系统触发覆盖(在锁定屏幕顶部),然后点击设备关闭