我正在开发 android 4.4.2 构建一个应用程序,该应用程序具有由辅助服务创建的系统覆盖/浮动窗口。
Edit:我希望能够全局隐藏状态栏(在任何应用程序中)(通过下面的代码实现)但是,当显示叠加层时,我停止从侦听器和软件/硬件后退按钮接收可访问性事件
当浮动视图注入windowmanager时:
- AccessibilityEvent 侦听器未接收更新
- 软/硬件后退键未注册(主页/最近的键已注册)
为了隐藏状态栏'FLAG_FULLSCREEN | FLAG_NOT_TOUCH_MODAL'需要允许触摸屏幕的其余部分并且'查看.SYSTEM_UI_FLAG_FULLSCREEN' allows
无障碍服务(通过连接方法):
@Override
public void onServiceConnected() {
serviceInstance = this;
windowManager = (WindowManager) getSystemService(WINDOW_SERVICE);
FloatingView = new View(this);
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
0, 0,
0, 0,
TYPE_PRIORITY_PHONE,
FLAG_FULLSCREEN | FLAG_NOT_TOUCH_MODAL, PixelFormat.OPAQUE);
params.gravity = Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM;
params.windowAnimations = android.R.style.Animation_Toast;
params.gravity = Gravity.BOTTOM | Gravity.RIGHT;
windowManager.addView(FloatingView, params);
int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
FloatingView.setSystemUiVisibility(uiOptions);
}
无障碍服务(通过连接方法):
@Override
public void onAccessibilityEvent(AccessibilityEvent accessibilityEvent) {
Log.i("","Just log me some rubbish");
}
我的 AccessibilitySetup.xml:
<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
android:accessibilityEventTypes="typeAllMask"
android:accessibilityFeedbackType="feedbackAllMask"
android:notificationTimeout="0"
android:accessibilityFlags="flagDefault"
android:canRetrieveWindowContent="true"
android:description="@string/notification_description"
/>