我正在尝试重新编程提高音量和降低音量键的功能。我的方法使用浮动视图来拦截关键事件(类似于“聊天头”应用)。我正在使用的视图标志是:LayoutParams.FLAG_NOT_TOUCH_MODAL
,但不幸的是,这阻止了其他事件。例如,如果我尝试使用Messenger应用,则不会出现键盘,并且backButton被阻止。这是因为我的观点具有重点。
遵循advice不适用于我的情况。我拥有github的完整代码。
我正在努力查看标志部分。你对我有什么想法吗?我是否必须使用其他方法才能使视图能够响应关键事件并且不会干扰其他应用程序?
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
int keyCode = event.getKeyCode();
int action = event.getAction();
Log.d(TAG, MotionEvent.actionToString(action)
+ ", " + KeyEvent.keyCodeToString(keyCode));
if (event != null && mListener != null) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
mListener.onBackButtonPressed();
return true;
}
if (event.getKeyCode() == KeyEvent.KEYCODE_VOLUME_UP) {
Toast.makeText(getContext(), "volume up", Toast.LENGTH_SHORT).show();
return true;
}
if (event.getKeyCode() == KeyEvent.KEYCODE_VOLUME_DOWN) {
Toast.makeText(getContext(), "volume down", Toast.LENGTH_SHORT).show();
return true;
}
}
return super.dispatchKeyEvent(event);
}