1

为什么此键仅在长按时才会发送。我试图让它正常按下电源按钮会使铃声流中当前正在播放的音频静音。它只适用于长按,正常按会关闭屏幕。我需要它在普通印刷机上工作。

@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);

}

4

2 回答 2

2

如此处所述https://stackoverflow.com/a/15828732/1065357

如果您在活动或具有焦点的视图中覆盖此方法,则用户无法长按电源按钮

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    if(!hasFocus) {
        Intent closeDialog = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
        sendBroadcast(closeDialog);
    }
}
于 2013-04-05T09:49:24.213 回答
1

捕捉按下的 POWER 按钮需要的不仅仅是这些。

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

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

PS。下次搜索。

于 2012-09-10T14:35:01.690 回答