2014-06-13 5 views
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(); 

비디오는 재생 중이지만 장치가 깨어나지 않습니다.

제안 사항?

수정
나는 해결책을 찾았으며 대답으로 게시했습니다.
더 좋은 해결책이 있다면, 나는 그것을 배우고 알고 싶습니다.
감사합니다.

+0

"동영상이 재생 중이지만 기기가 깨어나지 않고 있습니다."??? –

+0

예 Mr_and_Mrs_D. 화면이 꺼져 있지만 비디오가 백그라운드에서 재생 중입니다. – vidulaJ

+0

이 코드 스 니펫은 어디에 있습니까? 서비스에서? –

답변

0

몇 가지 언급과 문제가 발생하면 작동중인 해결책을 찾았습니다.

액티비티 (LoginActivity) 내에 BroadcastReceiver을 구현했는데, 화면이 잠자기 상태가 될 때 비디오 작업 (ScreenSaverActivity)을 호출하기를 원합니다. ScreenSaverActivityonCreate 메소드 내부에는 질문에서 언급 한 위 코드가 있습니다.
wakelock.releasewakelock.aquire과 함께 쓰는 것은 실수라고 생각합니다. 그런 다음이 세 줄을 ScreenSaverActivity에 추가하고 위의 코드 조각을 다음과 같이 변경했습니다.

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


내가 넣어 getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);



getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD); getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);,
keyguardLock.reenableKeyguard();
wakeLock.release();
비디오를 중지 한 후 이전 ( LoginActivity) 활동으로 돌아 가기 전에.
더 좋은 대답이 있습니까? 나는 그것을 배우고 알고 싶다.