如何从睡眠中唤醒Android设备并播放视频

时间:2014-06-13 06:14:10

标签: android wakelock android-wake-lock keyguard

我想唤醒设备并播放视频。 这是我的代码片段,用于唤醒和禁用密钥保护。

pm = (PowerManager) getApplicationContext().getSystemService(
    Context.POWER_SERVICE);
keyguardManager = (KeyguardManager) getApplicationContext()
    .getSystemService(Context.KEYGUARD_SERVICE);
KeyguardLock keyguardLock = keyguardManager.newKeyguardLock("TAG");
wakeLock = pm.newWakeLock(
        (PowerManager.SCREEN_BRIGHT_WAKE_LOCK
            | PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP),
        "TAG");
wakeLock.acquire();
keyguardLock.disableKeyguard();
playVideo(getApplicationContext());
wakeLock.release();

视频正在播放但设备未唤醒。

有什么建议吗?

EDITED
我找到了一个有效的解决方案,我已将其作为答案发布 如果有更好的解决方案,我想学习并了解它 谢谢。

1 个答案:

答案 0 :(得分:0)

经过一些推荐和麻烦,我找到了一个有效的解决方案。

我在活动(BroadcastReceiver)中实现了LoginActivity,我希望在屏幕进入休眠状态时调用视频活动(ScreenSaverActivity)。在onCreate的{​​{1}}方法中,我有问题中提到的上述代码段。
我认为将ScreenSaverActivitywakelock.release放在一起是错误的。然后我尝试将这三行添加到wakelock.aquire并更改上面的代码片段,如下所示,最终有效;

     ScreenSaverActivity      getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);      getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);

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

我放了,
          pm = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE); keyguardManager = (KeyguardManager) getApplicationContext().getSystemService(Context.KEYGUARD_SERVICE); keyguardLock = keyguardManager.newKeyguardLock("TAG"); wakeLock = pm.newWakeLock((PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP), "TAG"); wakeLock.acquire(); keyguardLock.disableKeyguard(); playVideo();
     keyguardLock.reenableKeyguard();
停止视频后,返回上一个(wakeLock.release();)活动之前。
有没有更好的答案。我想学习并了解它。