我在onKeyEvent()中添加了一个AccessibilityService。我知道当按键发生时(在我的例子中是音量按钮),onKeyEvent()会被调用两次,一次是动作向下,一次是动作向上。
当用户提供可访问性权限并打开我的应用程序时,一切工作正常。
然后用户杀死了我的应用程序,这次当我按下音量按钮时,调用了4次(2次操作向下,2次操作向上)。
然后用户打开我的应用程序,然后从最近的应用程序中删除它。这次
onKeyEvent()被调用6次(3次操作向下,3次操作向上)
这件事一直持续下去
我没有在onKeyEvent()onAccessibilityEvent()中做任何事情。
在@mike m的建议下,我已经改为onserviceconnected,但仍然面临同样的错误
onDestory()中,我这样做:

    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/

10-12 05:14