【问题标题】:Android 4.4 hide navbar/statusbar using Accessibility service & serviceAndroid 4.4 使用辅助功能服务和服务隐藏导航栏/状态栏
【发布时间】:2014-02-24 19:16:49
【问题描述】:

我通过为我的应用程序集成无障碍服务实现了一些功能。

我目前有一个可以检测 TouchEvent 的“系统覆盖”ImageView。但是我已经看到它完成了沉浸式模式,无需 root 即可隐藏状态栏或导航栏。

我需要能够访问我的触摸检测窗口的视图,以便处理任何可访问性

我的无障碍服务包含:

     ...
        @Override
        public void onServiceConnected() {
            serviceInstance = this;
        }
    ...

我的触摸检测器:

  ...
        WindowManager wm;
        private MyAccessibilityService myAccessibilityService;
        private ImageView mTouchDetector;

        @Override
        public void onCreate() {

            super.onCreate();

            myAccessibilityService = MyAccessibilityService.getSharedInstance();

    WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                    100,
                    100,
                    0, 0,
                    WindowManager.LayoutParams.TYPE_PHONE,
                    WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, debugMode());
            params.gravity = Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM;
            wm = (WindowManager) getSystemService(WINDOW_SERVICE);
            wm.addView(mTouchDetector, params);
    }
...

【问题讨论】:

  • 您能解释一下您所说的“但是我已经看到它完成了沉浸式模式,在没有 root 的情况下隐藏状态栏或导航栏是可能的”?你想完成什么?
  • 使用无障碍服务,全局隐藏系统 ui。在 nexus 设备上充分利用整个屏幕。我的应用没有位于前台的活动,它是一个带有“系统覆盖”的服务
  • 一定是因为play store上的沉浸模式应用使用了没有root的服务!

标签: android service accessibility statusbar navbar


【解决方案1】:

我已经部分解决了这个问题,但是返回按钮有一些问题,请查看这里是否得到解决。

照常创建服务,但将这些标志添加到叠加层:

到窗口管理器:

TYPE_PRIORITY_PHONE、FLAG_FULLSCREEN | FLAG_NOT_TOUCH_MODAL

到视图:

int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN;
FloatingView.setSystemUiVisibility(uiOptions);

Android floating window with hidden statusbar Accessibility problems

【讨论】:

  • 谢谢它的工作,我想我应该继续关注线程以获得最终解决方案。
  • 有人找到让后退按钮也能正常工作的方法吗?
  • 它可以工作,但无法访问键盘和后退按钮。有什么解决办法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-26
  • 1970-01-01
  • 2016-02-02
相关资源
最近更新 更多