我在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/