我对 Android 上的辅助功能不太熟悉。在学习课程和文档时,我在课堂TYPE_ACCESSIBILITY_OVERLAY上遇到了这种情况WindowManager。
文档说(仅相关文字)
例如,如果存在可触摸的全屏辅助功能覆盖层,则辅助功能服务可以对其下方的窗口进行内省,即使它们被可触摸窗口覆盖。
因此,我着手实现这一目标,即全屏辅助功能叠加层,并尝试内省其下方的窗口
扩展AccessibilityService并在调用时添加了我的全屏覆盖onServiceConnected(添加覆盖的灵感来自这里)
@Override
protected void onServiceConnected() {
WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
FrameLayout mLayout = new FrameLayout(this);
WindowManager.LayoutParams lp = new WindowManager.LayoutParams();
lp.type = WindowManager.LayoutParams.TYPE_ACCESSIBILITY_OVERLAY;
lp.format = PixelFormat.TRANSLUCENT;
lp.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
lp.width = WindowManager.LayoutParams.MATCH_PARENT;
lp.height = WindowManager.LayoutParams.MATCH_PARENT;
lp.gravity = Gravity.TOP;
wm.addView(mLayout, lp);
mLayout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
// Here I'm getting the touch events on the overlay …Run Code Online (Sandbox Code Playgroud)