Android浮动窗口隐藏状态栏辅助功能问题

2024-01-02

我正在开发 android 4.4.2 构建一个应用程序,该应用程序具有由辅助服务创建的系统覆盖/浮动窗口。

Edit:我希望能够全局隐藏状态栏(在任何应用程序中)(通过下面的代码实现)但是,当显示叠加层时,我停止从侦听器和软件/硬件后退按钮接收可访问性事件 当浮动视图注入windowmanager时:

  1. AccessibilityEvent 侦听器未接收更新
  2. 软/硬件后退键未注册(主页/最近的键已注册)

为了隐藏状态栏'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"
    />

嘿,我想这会起作用!

您只需要正确设置 WindowManager.LayoutParams height width 属性即可。 这样您就可以从侦听器和软件/硬件后退按钮接收可访问性事件。

Try this

WindowManager manager = ((WindowManager) context.getApplicationContext()
            .getSystemService(Context.WINDOW_SERVICE));
    WindowManager.LayoutParams localLayoutParams = new WindowManager.LayoutParams();
    localLayoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR;
    localLayoutParams.gravity = Gravity.TOP;
    localLayoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE |
            // this is to enable the notification to receive touch events
            WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |
            // Draws over status bar
            WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
    localLayoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
    localLayoutParams.height = retrieveStatusBarHeight(context);
    localLayoutParams.format = PixelFormat.TRANSPARENT;
    StatusBarOverlayView view = new StatusBarOverlayView(context);
    manager.addView(view, localLayoutParams);

public static int retrieveStatusBarHeight(Context context) {
    int result = 0;
    int resourceId = context.getResources().getIdentifier("status_bar_height", "dimen", "android");
    if (resourceId > 0) {
        result = context.getResources().getDimensionPixelSize(resourceId);
    }
    return result;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android浮动窗口隐藏状态栏辅助功能问题 的相关文章

  • 更改首选项的背景颜色

    我有一个PreferenceCategory xml 文件 我已经在其中定义了所有首选项 我从扩展的类中调用它PreferenceActivity 我无法设置设置屏幕的背景 该屏幕是在如下所示的 xml 文件的帮助下显示的 请看我已经定义了
  • Android 构建 gradle 在特定设备上失败

    我面临一个奇怪的问题 当我编译我的应用程序以在 Android 7 0 的设备上运行它时 它可以工作 但是当我尝试为 Android 4 2 1 的设备进行编译时 它会失败并出现以下错误 错误 任务 app transformClasses
  • Android Studio磁盘空间不足如何解决?

    我随机收到此错误 并且不确定为什么 Android Studio 的磁盘空间变低 Android Studio 系统目录分区磁盘空间不足 Update 此应用程序安装在运行 10 10 1 的 Mac 上 具有 251GB 内部存储和占用
  • 如何在 android-studio 0.3.6 中运行 Gradle 1.9?

    我只是花了一些时间尝试将现有的 android studio 项目从 gradle 1 8 迁移到 gradle 1 9 Final 昨天发布 但失败了19th Nov 我在这里阅读了大多数其他与 gradle 相关的帖子 但没有一个对我有
  • 不使用 CookieManager 的 Android 会话 cookie

    我的应用程序进行多次网络调用以获得身份验证 我需要将此会话存储在 cookie 中 我想使用 Cookie Manager 但经过一些研究后 我发现它仅适用于 API 9 及更高版本 并且我的应用程序需要向后兼容 我使用 HTTPURLCo
  • 注销时Firebase facebook按钮android身份验证

    我在我的 Android 应用程序中使用 firebase 并在 facebook SDK 中使用登录 我面临的唯一问题是 当我使用 facebook 登录然后注销时 facebook 登录按钮处于 注销 状态 当我单击它时 它会询问我是否
  • 在 Android 中关闭 Spinner 中的下拉菜单

    在 Android 中打开和关闭微调器时 我需要为箭头图标设置动画 打开微调器时我可以旋转箭头 我只是放了一个setOnTouchListener on the Spinner 当下拉菜单关闭或隐藏时 问题就来了 因为我不知道如何在该操作上
  • Android Things 文件系统

    我正在 Android 上构建这个应用程序 我希望能够让它访问 U 盘上的媒体文件 甚至树莓派的 SD 卡上的媒体文件 我还不知道我将如何处理这些文件 但我只是想知道它是否可能 如果不是这样也没关系 我还有其他解决方案 但我想我会先从明显的
  • android studio 底部工具栏的“运行”选项卡消失了

    Android Studio 底部工具栏中曾经有一个 运行 选项卡 但该选项卡不再显示 怎么把它带回来 请检查下图以了解它消失之前的位置 Run 选项卡曾经位于 TODO 选项卡之前的红色圆圈中 查看 gt 工具窗口 gt 运行 Or us
  • 用于代码生成的 ANTLR 工具版本 4.7.1 与当前运行时版本 4.5.3 不匹配

    我正在开发一个 Android 应用程序 当前使用 DSL 和一些库 突然构建给了我这个错误 任务 app kaptDebugKotlin 失败 用于代码生成的 ANTLR 工具版本 4 7 1 与当前运行时版本 4 5 3 不匹配 用于解
  • ImageButton 拉伸背景图像

    我正在尝试创建一个没有边框的 ImageButton 但遇到了图像按钮大小的问题 我使用 Eclipse ADT 将 ImageButton 拖到布局中并选择背景图像 图像按钮显示如下 正如您所看到的 背景图像和图像按钮周边之间有一个边框
  • Android 依赖项:apklib 与 aar 文件

    据我了解 apklib包含代码 共享资源Maven aar文件由以下人员分发Gradle The aar与 apklib 的主要区别在于 类被编译并包含在 aar 根目录下的classes jar 中 然而apklib不能包含已编译的类文件
  • UnsupportedOperationException:特权进程中不允许使用 WebView

    我在用android sharedUserId android uid system 在我的清单中获得一些不可避免的权利 从 HDMI 输入读取安卓盒子 http eweat manufacturer globalsources com s
  • 在Android的activity中调用onResume

    在活动的过程中通过调用 this OnResume 强制 onResume 事件可以吗 或者我应该实现另一个由 OnResume 和第一个成员调用的过程 实现在您的重写中调用的另一个过程onResume 后者不打算由您调用 它是一种方便的方
  • EditText 的高度不会扩展到其父级的高度

    我在滚动视图中放置了编辑文本 高度 match parent并期望它的高度等于滚动视图 但事实并非如此 它的高度就像wrap content这意味着如果 EditText 中没有文本 我必须将光标指向要弹出的软键盘的第一 行 我想要的是我可
  • 从 AlertDialog 返回值

    我想构建一个函数来创建 AlertDialog 并返回用户输入的字符串 这是我用于创建对话框的函数 如何返回该值 String m Text private String openDialog String title AlertDialo
  • 在 TextView onTextChanged 上设置文本

    我有一个定义为类属性的文本视图 以便我可以在整个类中访问它 在 onCreate 方法中我执行以下操作 chars TextView findViewById R id chars chars setText 300 之后 public v
  • 如何用 XML 制作双渐变(类似 iphone)

    如何使用 XML 制作这种可绘制渐变 我可以做一个从颜色 A 到颜色 B 的简单渐变 但我不知道如何在同一个可绘制对象中组合两个渐变 我终于找到了一个带有图层列表的解决方案 这对我来说已经足够好了
  • 如何手动添加Android Studio依赖

    我多次尝试向我的项目添加依赖项 但每次都会出现错误 我想添加它们的依赖项是 de hdodenhof circleimageview 1 3 0 and com github bumptech glide glide 3 6 1 所以我想下
  • TYPE_ACCELEROMETER 和 TYPE_LINEAR_ACCELERATION 传感器有什么区别?

    I think TYPE ACCELEROMETER显示设备加速 但是 我不明白什么时候应该使用TYPE LINEAR ACCELERATION 我需要计算移动设备的速度 哪种传感器适合此应用 另外 我读到TYPE LINEAR ACCEL

随机推荐

  • WIA 2.0 复式房产

    我正在使用 C 开发一个应用程序以使用 WIA 2 0 库 目前我可以使用大部分功能 例如 ADF 自动文档进纸器 过滤器等等 现在 我需要使用扫描仪 富士通 的双面打印器 我正在尝试将 WIA DPS DOCUMENT HANDLING
  • Visual Studio 2019 测试资源管理器将所有测试置于“未运行测试”下

    我有一个ASP NET 核心 3项目与Visual Studio 专业版 19 4 1 with xUnit 2 4 0 我在那里写了几个测试 我的问题是 Visual Studio 始终在 未运行测试 下显示该项目中的所有测试 相同的测试
  • 如何在java中弯曲图像

    有什么办法可以弯曲BufferedImage在Java中 我认为如果我将图像裁剪成更小的部分并旋转它们 那么我基本上会弯曲图像 但它似乎不起作用 这是我创建的方法 This is a recursive method that will a
  • sqlite递归祖先查询

    我试图弄清楚如何对分层表使用递归查询 我需要获取给定记录的祖先 并且记录应按其在层次结构中的级别顺序排序 也就是说 第一条记录应该是顶级节点 下一条记录应该是子节点 然后是它的子节点 一直到正在查询的记录 考虑一个名为 食物 的表 其中包含
  • CSS vw 和 vh 但相对于父级而不是视口

    我正在尝试创建一个固定纵横比的框 调整大小以不溢出其父级 经典填充底部技巧 https stackoverflow com questions 1495407 maintain the aspect ratio of a div with
  • 显示字符串中不可打印的字符

    是否可以用十六进制值可视化 python 字符串中的不可打印字符 例如如果我有一个内部带有换行符的字符串 我想将其替换为 x0a 我知道有repr 这会给我 n 但我正在寻找十六进制版本 我不知道任何内置方法 但使用理解很容易做到 impo
  • 使用 AngularJS 将表单控件设置为焦点不变

    在我的表单中 我想在用户关注表单控件时将其设置为不受影响 以便隐藏在触摸字段且字段无效时显示的验证消息 我怎样才能做到这一点 我曾尝试编写指令但无法使其发挥作用 我可以在控制台中看到指令中的值从 true 更改为 false 但表单控件没有
  • 在 Xcode 6 beta 中使用尺寸类

    在 Xcode 6 Beta 1 中使用 Swift 从头开始 构建一个新项目 并查看 Storyboard 的文件检查器 有Use Size Classes below Use Auto Layout 这是这个的截图 1 什么是Use S
  • 某些 SMS 消息如何传输发件人姓名?

    我注意到我从公司收到的某些短信带有 发件人姓名 例如 就在今天 我收到了一条来自我以前从未使用过的号码 不是我的联系人 的短信 但发件人姓名显示为 Adobe 我也从其他公司得到这个 例如 Facebook Google 和银行 它与电子邮
  • 使用 jQuery Mobile 动态更改翻转切换的值

    我正在使用 jQuery Mobile 并将一些设置保存在 cookie 中 当设置页面重新加载时 我读取 cookie 以设置所有值 我在设置时遇到问题翻转拨动开关 http jquerymobile com demos 1 0a2 do
  • 使用GDB运行时致命错误消失

    我有一个程序 它在测试用例中产生致命错误 我可以通过读取致命错误的日志和堆栈跟踪来定位问题 原来是对空指针进行了读操作 但是当我尝试将 GDB 附加到它并在可疑代码周围设置断点时 无法观察到空指针 程序运行顺利 没有任何错误 这是一个单进程
  • HTML5 拖放上传

    有谁知道如何使用HTML5实现桌面拖放文件上传吗 我找到了以下参考资料 使用拖放选择文件 2017 08 https developer mozilla org en Using files from web applications Se
  • 为什么字符串的空间复杂度是 O(n) 而数字是 O(1)?

    我对辅助空间复杂性有点迷失 在我参加的讲座中 讲师指出字符串的空间复杂度为 O n 因为字符串的长度 n 会有所不同 但诸如数字 布尔值 未定义等原语具有恒定的空间复杂度 O 1 我很困惑 因为如果字符串的空间长度不同 那么数字也不一样吗
  • 如何管理开发和生产之间的 SQL 权限?

    我正在尝试建立一个顺利的部署过程 我们可以使用单个部署脚本部署到生产或开发 SQL 服务器 但我不知道如何最好地管理两个环境之间的用户和权限 例如 在开发中我们希望开发者团队拥有db owner数据库角色 在生产中 我们要么不希望访问 要么
  • Chrome 上的 D3 地图平移和缩放性能

    为了让事情变得更容易 这里有一个JSFiddle http jsfiddle net 3twag6Lx 我所拥有的 TRY 在 FireFox 版本 35 0 1 中平移地图 单击并按住地图上的任意位置 然后快速左右移动 平移运动应该快速且
  • 由于mac上的gcc不支持openmp,我该怎么做才能让它支持呢?

    起初 我在我的Mac上使用默认的gcc 但它不支持openmp 使用 gcc v 我得到 gcc 4 2 1 所以 我使用brew来安装gcc 完成后 使用 gcc v 没有任何变化 酿造给我提示 可能不支持openmp 使用 brew r
  • 如何创建带有预览的打印对话框以打印图像文件

    我有一个 mac cocoa 图像编辑应用程序 我想向我的应用程序添加打印图像功能 我基本上总是随身携带一个 jpg png 文件 每当用户进入 文件 gt 打印 菜单时 我想为用户提供一个带有打印选项 设置的对话框来打印此 jpg png
  • 删除电话号码中的括号、破折号和空格

    我的电话号码是 123 456 7890 我正在使用replaceAll去除方法 and 和字符串中的空格 我尝试以下 String phNo 123 456 7890 replaceAll s trim 但它不起作用 有什么解决办法吗 这
  • sed 在特定行号处内嵌替换特定列号值

    我有一个 5 列 csv 文件 空格分隔 如下所示 username1 20130310 enabled 20130310 enabled username2 20130310 enabled 20130321 disabled usern
  • Android浮动窗口隐藏状态栏辅助功能问题

    我正在开发 android 4 4 2 构建一个应用程序 该应用程序具有由辅助服务创建的系统覆盖 浮动窗口 Edit 我希望能够全局隐藏状态栏 在任何应用程序中 通过下面的代码实现 但是 当显示叠加层时 我停止从侦听器和软件 硬件后退按钮接