android - accessibilityService 中的 onKeyEvent() 未按预期工作

标签 android accessibility accessibilityservice

我在 AccessibilityService 中添加了一个 onKeyEvent() 。我知道当按键按下时(在我的例子中是音量按钮),onKeyEvent() 被调用两次,一次用于 ACTION_DOWN,一次用于 ACTION_UP。

当用户提供辅助功能权限并打开我的应用程序时,一切正常。

然后用户终止了我的应用程序,这次当我按下音量按钮时 onKeyEvent() 调用了 4 次(2 次 ACTION_DOWN 和 2 次 ACTION_UP)。

然后用户打开我的应用,然后从最近的应用中杀死它。这一次 onKeyEvent() 被调用 6 次(3 次 ACTION_DOWN 和 3 次 ACTION_UP)

这样下去

我没有在 onAccessibilityEvent()onDestory() 中做任何事情。

根据@Mike M 的建议,我已更改为 onServiceConnected,但我仍然面临同样的错误

onServiceConnected() 中我这样做:

    info.flags=AccessibilityServiceInfo.FLAG_REQUEST_FILTER_KEY_EVENTS;

    info.flags=AccessibilityServiceInfo.FLAG_REPORT_VIEW_IDS;

    setServiceInfo(info);

这是我的 onKeyEvent()

 @Override

  public boolean onKeyEvent(KeyEvent event) {

    Log.v("accessibilityservice","inside onKeyEvent")

    int action = event.getAction();

    int keyCode = event.getKeyCode();

    if (action == KeyEvent.ACTION_UP) {

        if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {

            Log.d("Hello", "KeyUp");

        } else if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {

            Log.d("Hello", "KeyDown");

        }

        return true;

    } else {

        return super.onKeyEvent(event);

    }

}

我该如何解决?

最佳答案

为什么不尝试检测服务/应用程序是否已在 OnServiceConnected 事件或一些更长的生命周期中注册?

关于android - accessibilityService 中的 onKeyEvent() 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57703757/

相关文章:

android - 在辅助功能模式下,我想覆盖 TextView 的 TalkBack

android - 在 Pie 上的 AccessibilityService 中的状态栏下显示覆盖 View

java - 在 Android 上设置为默认 SMS 应用程序时,我是否需要写入 SMS Provider?

command-line-interface - 命令行应用程序的可访问性 (a11y) 准则是什么?

android - 为什么我的应用程序启动后,WorkManager会多次触发?

html - anchor 链接跳得太远

java - AccessibilityService剪贴板复制事件

android - 如何从AccessibilityNodeInfo获取webview

android - 用于 Android 听写应用程序的 PocketSphinx

android - map 未显示