본문 바로가기

Android/일반

안드로이드/Android 잠든 단말을 깨우자! PushWakeLock !!


 < 개발 환경 > 
   SDK 버전 : 안드로이드 SDK 2.2  
   API LEVEL : 8 
   이클립스 버젼 : Indigo
   테스트단말 : 삼성갤럭시 S2




안드로이드/Android 잠든 단말을 깨우자! PushWakeLock !!



안드로이드에서 알림이나 메시지(PUSH)를 받을 때, 단말이 켜져 있으면 상관이 없으나, 단말 스크린이 꺼져 있거나, 잠겨 있는 상태에 메시지를 받는 경우가 생깁니다. 그럴경우 사용자에게 알려주어야 할 중요한 정보가 단말이 꺼져서 받지 못하는 불쌍사가 발생하게 되는데요.!


그럴 경우를 대비해서 알림이나 메시지(PUSH) 가 도차 했을 경우, 스크린이 잠겨 있는 OFF 상태를 ON 상태로 바꿔 사용자에게 메시지가 왔다는 사실을 전달해 줍니다.


자 그럼 사용법을 알아볼까요?


package arabiannight.tistory.com.wakelock; 

import android.app.KeyguardManager;
import android.content.Context;
import android.os.PowerManager;
import android.util.Log; 

public class PushWakeLock {     
	private static PowerManager.WakeLock sCpuWakeLock;    
	private static KeyguardManager.KeyguardLock mKeyguardLock;    
	private static boolean isScreenLock;     
	
	static void acquireCpuWakeLock(Context context) {        
		Log.e("PushWakeLock", "Acquiring cpu wake lock");        
		Log.e("PushWakeLock", "wake sCpuWakeLock = " + sCpuWakeLock);        
		
		if (sCpuWakeLock != null) {            
			return;        
		}         
		PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);         
		sCpuWakeLock = pm.newWakeLock(                
				PowerManager.SCREEN_BRIGHT_WAKE_LOCK |                
				PowerManager.ACQUIRE_CAUSES_WAKEUP |                
				PowerManager.ON_AFTER_RELEASE, "hello");        
		
		sCpuWakeLock.acquire();        
	}
	
	static void releaseCpuLock() {        
		Log.e("PushWakeLock", "Releasing cpu wake lock");
		Log.e("PushWakeLock", "relase sCpuWakeLock = " + sCpuWakeLock);
		
		if (sCpuWakeLock != null) {            
			sCpuWakeLock.release();            
			sCpuWakeLock = null;        
		}    
	}
}


다음은 사용법 입니다.


// 잠든 단말을 깨워라.
PushWakeLock.acquireCpuWakeLock(this);
        
// WakeLock 해제.
PushWakeLock.releaseCpuLock();


퍼미션은 꼭 추가해 주셔야 합니다.

 
 <uses-permission android:name="android.permission.WAKE_LOCK" />



WakeLock을 사용 하실때는, 적절한 곳에 wake와 release를 사용해 주시면 됩니다. wake와 release를 동시간대 하게되면, Wake되는 모습을 볼 수 없기 때문에 알람매니저를 사용해서 release 시켜 주거나 하는 것을 추천해 드립니다.^^ 

그리고 꼭 wake를 사용하신 후에는 release 시켜 줘야 합니다.



스크린 샷 입니다.~!! 

     [ 스크린 OFF ]                               [ WAKE UP ]                               [ WAKE Release ]





테스트 파일 입니다.~!!


TestWakeupCpuLock.zip




예전에 가지고 있던 소스라 출처를 못적었습니다.~! 

출처 표시를 원하시면, 바로 표시해 드리겠습니다.~! 

감사합니다!!