android - 如何检测用户何时以编程方式在android中打开/关闭对讲
问题描述
我正在尝试根据可访问性选项(即对讲开/关)更新 UI。当用户打开对讲时,我需要显示一些帮助文本,否则应该隐藏帮助文本。
因为我们也有快捷方式(在 Pixel 设备中,长按上下音量键)来启用/禁用对讲。当我在 XYZ 活动时,有什么方法可以检测是否启用/禁用了对讲。
解决方案
您可以使用AccessibilityManager.AccessibilityStateChangeListener来接收是否监听 Accessibilty Service 中的更改。
不幸的是,如果启用了任何无障碍服务,这将是真的。
AccessibilityManager accessibilityManager= (AccessibilityManager) getSystemService(Context.ACCESSIBILITY_SERVICE);
// Put this in onCreate
accessibilityManager.addAccessibilityStateChangeListener(new AccessibilityManager.AccessibilityStateChangeListener() {
@Override
public void onAccessibilityStateChanged(boolean b) {
accessibilityChanged(b);
}
});
accessibiltyChanged(accessibiltyManager.isEnabled());
void accessibiltyChanged (Boolean enabled) {
// Do your stuff
}
您也可以尝试使用getEnabledAccessibilityServiceList。这将返回所有活动的无障碍服务的列表。但这不会是一个监听器,这意味着如果它发生变化,您将不会收到回调。一个技巧是定期调用这个函数来检查是否有任何变化。
推荐阅读
- angular - Angular Stepper:是否可以隐藏 Active Step 的垂直线?
- django - drf - 仅对 post() 方法使用序列化程序
- javascript - 与逻辑和运算符的严格相等和松散相等
- spring - 无法连接到 mongodb 容器主机
- r - getanID 函数不会为 R 中的组分配正确的值
- jenkins - 如果 jenkins 构建失败并重置构建号,则动态删除它
- ruby-on-rails - 我用 dokku 启动的 rails 应用程序总是失败(DigitalOcean)
- php - 我在将字符串值从 android 项目插入在线数据库时遇到问题
- ruby-on-rails - Ruby - 如何访问已解析 json 中的键值
- swift - 标签不会在键入时复制文本 - 尝试了许多解决方案(MacOS 应用程序)