这是我的问题。
我为我的应用程序覆盖音量调低键以在长时间按下时执行某些特定任务,它可以正常工作。我可以为此拦截按键和按键事件。
关键侦听器事件是在特定的自定义组件中编写的,而不是在使用该组件的活动中编写的。
当我在按下音量降低键的同时按下菜单按钮时出现问题,当我在显示菜单时释放它时,我无法拦截它的按键事件。
你能解释一下背后的原因吗?而这个问题能否解决?
谢谢。
这是我的问题。
我为我的应用程序覆盖音量调低键以在长时间按下时执行某些特定任务,它可以正常工作。我可以为此拦截按键和按键事件。
关键侦听器事件是在特定的自定义组件中编写的,而不是在使用该组件的活动中编写的。
当我在按下音量降低键的同时按下菜单按钮时出现问题,当我在显示菜单时释放它时,我无法拦截它的按键事件。
你能解释一下背后的原因吗?而这个问题能否解决?
谢谢。
单击菜单时,您的窗口焦点会发生变化。焦点来到菜单视图。因此 onKeyDown() 不起作用,因为如果屏幕的焦点位于顶部的视图或活动上,onKeyDown 将起作用。
使用以下代码知道屏幕的焦点
@Override
public void onWindowFocusChanged(boolean hasFocus) {
// TODO Auto-generated method stub
System.out.println("....window focus changed..");
super.onWindowFocusChanged(hasFocus);
}