2017-02-20 78 views
3

我想在android服务中监听设备电源按钮。由于我在服务中,因此我无法使用密钥监听器。目前我通过注册一个广播监听器来做到这一点,像下面这样使用android.intent.action.SCREEN_OFF/android.intent.action.SCREEN_ON过滤器。Android硬件电源按钮广播监听器

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

问题

这不是要做到这一点,因为屏幕状态可以更改,恕不按下电源按钮的理想方式。例如,当拨打电话进行来电时,它会显示在屏幕上。我怎样才能听到确切的硬件电源按钮?还是不可能?

回答

0

设备时按下电源按钮,然后dispatchKeyEvent方法调用

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

dispatchKeyEvent方法不适用于服务。这只适用于活动。 –

+0

检查:http://stackoverflow.com/questions/39064523/detect-power-button-longpress – user2025187