2014-06-13 66 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)活動。
有沒有更好的答案。我想學習和了解它。

相關問題