1. 클래스 추가
package kr.co.multi.beacontest;
import android.content.Context;
import android.os.PowerManager;
public class AlarmWakeLock {
private static PowerManager.WakeLock mWakeLock;
public static void wakeLock(Context context) {
if (mWakeLock != null) {
return;
}
PowerManager pm = (PowerManager) context
.getSystemService(Context.POWER_SERVICE);
mWakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK
| PowerManager.ACQUIRE_CAUSES_WAKEUP
| PowerManager.ON_AFTER_RELEASE, "MyWake");
mWakeLock.acquire();
}
public static void releaseWakeLock() {
if (mWakeLock != null) {
mWakeLock.release();
mWakeLock = null;
}
}
}
2. 서비스쪽에 onCreate에 추가
MainActivity.mActivity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
이때 mActivity는 필자의 경우 activity 클래스에서 Activity mActivity = this; 를 static으로 받아왔다.
activity 클래스에서 한다음에 서비스에서 요청하는 방식으로 해도 될꺼다 아마...
참고로 WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON 이것도 추가하는 사람이 많던데 이거 쓰면 화면이 안꺼진다... 왜 쓰는지...;;
3. 화면을 깨우기 원하는 곳에 써주자 물론 필자의 경우 서비스 클래스에서
AlarmWakeLock.wakeLock(MainActivity.mActivity);
AlarmWakeLock.releaseWakeLock();
결국 자문자답의 형태로 문제를 해결하게 되었는데 인터넷의 여러가지 방법중에서 필자는 겨우 되는걸 발견