区分长按和短按硬件按钮

时间:2014-10-01 08:54:56

标签: android android-activity key

在我的活动中,我重写了dispatchKeyEvent(最终的KeyEvent事件)方法以获取KeyEvent.KEYCODE_VOLUME_UP和KeyEvent.KEYCODE_VOLUME_DOWN。我想要的是抓住长按,让系统处理短按(实际上是改变音量)。

如果你知道如何实现这样的行为,请停止阅读并回答问题,因为我的疑惑对你来说是无关紧要的:)

我发现,我想做的事情与系统如何实现音量变化之间存在联系。方法isLongPress()只能在KeyEvent.ACTION_DOWN上返回true,并且只在KeyEvent.ACTION_DOWN上更改卷。如果我们假设一秒钟的音量会在KeyEvent.ACTION_UP上改变,我可以用这种方式实现我想要的:

if (event.getAction() == KeyEvent.ACTION_UP) {
                if (!event.isLongPress())
                    return super.dispatchKeyEvent(event);
                else {
                    // handle long press here
                    return true;
                }
            } else {

                return true;
            }

但是这不会起作用,因为音量在ACTION_UP上没有变化......所以任何想法我如何实现这样的行为?

0 个答案:

没有答案