【问题标题】:Android screen wakeup only works with full_wake_lockAndroid 屏幕唤醒仅适用于完整的 wake_lock
【发布时间】:2014-06-09 21:32:36
【问题描述】:

我有一个服务来监听推送通知并创建一个活动。除非设备的屏幕关闭,否则一切正常。期望的行为是通知将屏幕唤醒到锁定状态主屏幕并显示通知。

我只能通过以下方式创建此行为:

mWakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK |
                           PowerManager.ACQUIRE_CAUSES_WAKEUP |
                           PowerManager.ON_AFTER_RELEASE,
                           WAKELOCK_KEY);

但是,我看到 Android 已弃用 FULL_WAKE_LOCK 以支持 FLAG_KEEP_SCREEN_ON。但是,我在从后台服务调用的活动中尝试了这个:

getWindow().addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON |
                     WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

我的日志显示正在创建此活动,但屏幕仍未显示此活动。如果我按下电源按钮,显示屏会立即显示活动,证明它已创建。以下是我尝试过的一些事情的总结:

  1. FULL_WAKE_LOCK(有效但已弃用)
  2. WindowManager - FLAG_TURN_SCREEN_ON、FLAG_KEEP_SCREEN_ON(不起作用)
  3. Google WakefulBroadCastReceiver(不起作用)

FULL_WAKE_LOCK 有什么替代品吗?

【问题讨论】:

    标签: android wakelock powermanager


    【解决方案1】:

    从服务中唤醒 (SCREEN_ON) 设备适用于

    newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP | ON_AFTER_RELEASE, "MyTag").

    在 Android 4.1、4.4、5.0 上测试

    在我的应用程序中,我通过AlarmManager 唤醒设备并注册广播事件。 确保在WakefulBroadCastReceiver启动服务之前获取唤醒锁,并在服务的同一调用堆栈中释放锁not,因为这样做会将设备驻留在 SCREEN_OFF 中。

    【讨论】:

    • FULL_WAKE_LOCK 已弃用。
    【解决方案2】:

    这是 Android Clock 在 onCreate 方法中所做的:

        final Window win = getWindow();
        win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
                | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
        // Turn on the screen unless we are being launched from the AlarmAlert
        // subclass as a result of the screen turning off.
        win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
                | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
                | WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON);
    

    你使用的是第一组标志吗?

    编辑:我刚刚对其进行了测试,它可以工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-28
      • 2022-12-17
      • 1970-01-01
      • 2012-11-29
      • 1970-01-01
      相关资源
      最近更新 更多