我在一个AccessibilityService
中添加了一个onKeyEvent()
。 我知道当按键被按下(在我的情况下是音量按钮)时,onKeyEvent()
会被调用两次,一次为ACTION_DOWN,一次为ACTION_UP。
当用户提供辅助功能权限并打开我的应用程序时,一切正常。
然后用户关闭我的应用程序,这时当我按音量按钮时,onKeyEvent()
被调用4次(2个ACTION_DOWN和2个ACTION_UP)。
然后用户再次打开我的应用程序,然后从最近使用的应用中关闭它。 这次onKeyEvent()
被调用6次(3个ACTION_DOWN和3个ACTION_UP)
这种情况一直持续。
我在 onAccessibilityEvent()
和onDestroy()
中什么都没有做。
在@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);
}
}
我怎样解决这个问题?