0

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

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();

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

有什么建议么?

已编辑
我找到了一个可行的解决方案,并将其发布为答案。
如果有更好的解决方案,我想学习并了解它。
谢谢你。

4

1 回答 1

0

经过一些参考和麻烦,我找到了一个可行的解决方案。

BroadcastReceiver在活动 () 内部实现了一个,我希望在屏幕进入睡眠状态时调用LoginActivity视频活动 ( )。ScreenSaverActivity在 的onCreate方法中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();
在停止视频之后和返回之前的 ( LoginActivity) 活动之前。
有没有更好的答案。我想学习和了解它。

于 2014-06-17T10:57:01.367 回答