我想在 android 服务中监听设备电源按钮。因为我在服务中,所以我不能使用 key 监听器。目前,我正在通过使用 android.intent.action.SCREEN_OFF/android.intent.action.SCREEN_ON 过滤器注册一个广播监听器来实现这一点,如下所示。
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
Receiver mReceiver = new Receiver();
registerReceiver(mReceiver, filter);
问题
这不是执行此操作的理想方式,因为屏幕状态可以在不按电源按钮的情况下更改。例如,当来电响铃时,它会出现在屏幕上。我怎样才能听到准确的硬件电源按钮?还是不可能?
最佳答案
当按下设备电源按钮时调用 dispatchKeyEvent 方法
/* lock power button */
@Override
public boolean dispatchKeyEvent(@NonNull KeyEvent event)
{
return event.getKeyCode() == KeyEvent.KEYCODE_POWER || blockedKeys.contains(event.getKeyCode()) || super.dispatchKeyEvent(event);
}
关于Android 硬件电源按钮广播监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42340049/