이것Do! 저것Do!!

ShowMeSms를 만들다가 알아낸 내용을 정리해 둔다.

일단, 아래와 같은 class가 필요하다.
   1: public class ShowMeSmsWakeLock {
   2:  
   3:     private static PowerManager.WakeLock wakeLock;
   4:     
   5:     static void acquireWakeLock(Context context) {    
   6:         if (wakeLock != null) {
   7:             return;
   8:         }
   9:         
  10:         PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
  11:         wakeLock = pm.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK | 
  12:                                 PowerManager.ACQUIRE_CAUSES_WAKEUP, "ShowMeSmsWakeLock");
  13:         wakeLock.acquire();
  14:     }
  15:     
  16:     static void releaseWakeLock() {
  17:         if (wakeLock != null) {
  18:             wakeLock.release();
  19:             wakeLock = null;
  20:         }
  21:     }
  22: }

이것을 아래와 같이 사용하면 된다.
   1: PowerManager pm = (PowerManager)context.getSystemService(Context.POWER_SERVICE);
   2:  
   3: if (!pm.isScreenOn()) { // 현재 스크린이 슬립모드인지 아닌지 체크
   4:     ShowMeSmsWakeLock.acquireWakeLock(context);
   5:     
   6:     try {
   7:         Thread.sleep(10000); // 약 10초간 화면이 켜진 상태를 유지
   8:     } catch (Exception e) {
   9:         Log.d(LOGTAG,"Exception occured~!");
  10:     }
  11:     
  12:     ShowMeSmsWakeLock.releaseWakeLock();                
  13: }