如何检测用户何时关闭Android中的辅助功能服务?

时间:2018-05-02 09:04:19

标签: android kotlin accessibilityservice android-wear-2.0

我正在Android中开发一个辅助功能服务。 我想在用户关闭辅助功能服务时禁用某些功能,但我不确定如何检测到它。

我认为当用户将其关闭时,它会调用onDestroy(),但显然,它没有被调用。

有什么方法可以知道用户何时切换无障碍服务? 或者是否有一个函数在用户切换时被调用?

(以防万一,我正在为Android服装开发。)

非常感谢!! 我感谢您的帮助! :)

2 个答案:

答案 0 :(得分:0)

我不知道任何通知应用程序有关辅助服务状态更改的事件,广播或回调。我能想到的最好的事情是偶尔手动检查服务状态:

AccessibilityManager am = (AccessibilityManager) getSystemService(ACCESSIBILITY_SERVICE);
boolean isAccessibilityEnabled = am.isEnabled();

文档:AccessibilityManager#isEnabled()

答案 1 :(得分:0)

interface AccessibilityManager.AccessibilityStateChangeListener

  

系统辅助功能状态的侦听器。要侦听设备上辅助功能状态的更改,请实现此接口并通过调用addAccessibilityStateChangeListener将其注册到系统。

示例:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // ...
    AccessibilityManager am = (AccessibilityManager) getSystemService(Context.ACCESSIBILITY_SERVICE);
    am.addAccessibilityStateChangeListener(new AccessibilityManager.AccessibilityStateChangeListener() {
        @Override
        public void onAccessibilityStateChanged(boolean b) {
            Log.d(TAG,"onAccessibilityStateChanged b=" + b);
            updateServiceStatus(b);
        }
    });
    updateServiceStatus(am.isEnabled());
}

programcreek.com上的更多java示例。