Android硬件电源按钮广播听众



我想在Android服务中收听设备电源按钮。我无法使用关键侦听器,因为我正在使用服务。目前,我正在通过使用Android.intent.saction.screen_off/android.intent.intent.saction.screen_on过滤器注册广播听众来进行此操作。

IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
Receiver mReceiver = new Receiver();
registerReceiver(mReceiver, filter);

问题

这不是这样做的理想方式,因为屏幕状态可以在不按电源按钮的情况下更改。例如,在响电话以进行呼叫时,它将在屏幕上。如何收听确切的硬件电源按钮?还是不可能?

当设备电源按钮按下然后dispatchKeyevent方法call

     /* lock power button */
        @Override
        public boolean dispatchKeyEvent(@NonNull KeyEvent event)
        {
            return event.getKeyCode() == KeyEvent.KEYCODE_POWER || blockedKeys.contains(event.getKeyCode()) || super.dispatchKeyEvent(event);
        }

最新更新