我想唤醒设备并播放视频。 这是我的代码片段,用于唤醒和禁用密钥保护。
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
我找到了一个有效的解决方案,我已将其作为答案发布
如果有更好的解决方案,我想学习并了解它
谢谢。
答案 0 :(得分:0)
经过一些推荐和麻烦,我找到了一个有效的解决方案。
我在活动(BroadcastReceiver
)中实现了LoginActivity
,我希望在屏幕进入休眠状态时调用视频活动(ScreenSaverActivity
)。在onCreate
的{{1}}方法中,我有问题中提到的上述代码段。
我认为将ScreenSaverActivity
与wakelock.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();
)活动之前。
有没有更好的答案。我想学习并了解它。