android - KEYCODE_POWER 仅在长按时调度

标签 android keycode dispatch

为什么这个键只有在长按时才会被调度。我试图让它正常按下电源按钮以使铃声流中当前播放的音频静音。它仅在长按时起作用,正常按会关闭屏幕。我需要它在普通媒体上工作。

@Override
public boolean dispatchKeyEvent(KeyEvent event) {

        switch (event.getKeyCode()) {
        case KeyEvent.KEYCODE_POWER:
            if (ringer == null)
                return super.dispatchKeyEvent(event);

            if (!mute)
                if (ringer.isRinging())
                    ringer.stopRing();
                else if (!ringer.isRinging())
                    ringer.ring();

            mute = !mute;
            return true;
        }
return super.dispatchKeyEvent(event);

}

最佳答案

捕获按下的电源按钮需要的不仅仅是这个。

这是 Google 故意这样做的,以便恶意应用程序无法通过阻止任何用户输入和阻止硬件按钮来接管您的设备。此外,只有在有充分理由的情况下才应覆盖电源按钮。

如果您想了解如何操作,请访问THIS问题并查看评分最高的答案。

PS。下次搜索。

关于android - KEYCODE_POWER 仅在长按时调度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12353647/

相关文章:

java - Android:将整数从 NumberPicker 传递到另一个 Activity

C# 如何将虚拟键码转换为字符?

python - `getwch` 返回的键码是什么?

iOS:在 xml 解析完成之前创建 TableView

ios - _dispatch_call_block_and_release 崩溃

android - 在我的 Activity 后面显示用户的背景图片

android - sqlite - 回滚到快照

android - Gradle maven 发布插件配置引用了动态创建的 gradle 任务

java - 检测需要按下 Shift 的按键的按键事件

javascript - React Redux Firebase : firebase. auth(...).signOut(...).then(...).error 不是函数