Android 硬件电源按钮广播监听器

标签 android android-intent

我想在 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/

相关文章:

android - 从 Expo 添加 Facebook 广告时,React Native 按钮不起作用

android - 三星设备自动设置共享 Intent 的默认应用程序

android - 两个按钮打开两个新 Activity

android - 在 Android 中不使用 intent extras 将字符串传递给另一个 Activity

android - 如何创建乐谱?

java - 是否可以通过手机浏览器触发Android服务?

java - 如何在应用程序运行时将多个 textView 更改为特定的日期和时间

安卓 : upload Image and JSON using MultiPartEntityBuilder

java - 更改返回堆栈 Activity 按钮状态

android - 如何在 Intent 之间传递对象