首页 > 解决方案 > 如何检测用户何时以编程方式在android中打开/关闭对讲

问题描述

我正在尝试根据可访问性选项(即对讲开/关)更新 UI。当用户打开对讲时,我需要显示一些帮助文本,否则应该隐藏帮助文本。

因为我们也有快捷方式(在 Pixel 设备中,长按上下音量键)来启用/禁用对讲。当我在 XYZ 活动时,有什么方法可以检测是否启用/禁用了对讲。

标签: androidaccessibility

解决方案


您可以使用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。这将返回所有活动的无障碍服务的列表。但这不会是一个监听器,这意味着如果它发生变化,您将不会收到回调。一个技巧是定期调用这个函数来检查是否有任何变化。


推荐阅读