如何在Android中以编程方式检测用户何时打开/关闭对讲

时间:2019-01-12 13:18:08

标签: android accessibility

我正在尝试基于辅助功能选项(即打开/关闭对讲)更新UI。当用户打开对讲时,我需要显示一些帮助者文本,否则该帮助者文本应被隐藏。

我们还有快捷方式(在Pixel设备中,长按上下音量键)可启用/禁用对讲功能。当我进行XYZ活动时,是否有任何方法可以检测对讲功能是否已启用。

1 个答案:

答案 0 :(得分:0)

您可以使用AccessibilityManager.AccessibilityStateChangeListener接收是否收听Accessibilty Service中的更改。

不幸的是,如果启用了 ANY 的辅助功能服务,这将是正确的。

AccessibilityManager accessibiltyManager= (AccessibilityManager) getSystemService(Context.ACCESSIBILITY_SERVICE);

// Put this in onCreate
accessibiltyManager.addAccessibilityStateChangeListener(new AccessibilityManager.AccessibilityStateChangeListener() {
    @Override
    public void onAccessibilityStateChanged(boolean b) {
        accessibiltyChanged(b);
    }
});
accessibiltyChanged(accessibiltyManager.isEnabled());

void accessibiltyChanged (Boolean enabled) {
   // Do your stuff
}

您也可以尝试使用getEnabledAccessibilityServiceList。这将返回所有活动无障碍服务的列表。但这不会成为收听者,这意味着如果发生这种情况,您将不会得到回调。黑客可能会定期调用此函数,以检查是否有任何更改。