2014-06-13 64 views
0

我想唤醒设备并播放视频。 这是我的代码片段,以唤醒并禁用密钥保护。如何从安睡中唤醒Android设备并播放视频

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

是Mr_and_Mrs_D。屏幕已关闭,但视频正在后台播放。 – vidulaJ

+0

此代码snipet在哪里?在服务? –

回答

0

经过一番提及和麻烦,我找到了一个可行的解决方案。

我在活动(LoginActivity)内部实施BroadcastReceiver,我希望在屏幕进入睡眠状态时调用视频活动(ScreenSaverActivity)。在ScreenSaverActivityonCreate方法中,我有上述问题中提到的代码片段。
我认为将wakelock.releasewakelock.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)活动。
有没有更好的答案。我想学习和了解它。

相关问题