Context から KeyguardManager を取得し KeyguardManager.KeyguardLock でスクリーンロックをはずします。
KeyguardManager.OnKeyguardExitResult ハンドラが呼ばれると PowerManager.WakeLock でスクリーンスリープから復帰します。
[java] protected WakeLock wakelock; protected KeyguardManager keyguardmanager; protected KeyguardLock keyguardlock;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.alarm);
final Context _context = this.getApplicationContext();
keyguardmanager = (KeyguardManager) _context.getSystemService(Context.KEYGUARD_SERVICE);
keyguardlock = keyguardmanager.newKeyguardLock("FindMyPhone");
keyguardlock.disableKeyguard();
keyguardmanager.exitKeyguardSecurely(new OnKeyguardExitResult() {
public void onKeyguardExitResult(boolean success) {
wakelock = ((PowerManager) _context.getSystemService(Context.POWER_SERVICE))
.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "FindMyPhone");
wakelock.acquire();
}
});
}
@Override
public void onDestroy() {
super.onDestroy();
if (wakelock != null && wakelock.isHeld()) {
wakelock.release();
}
if (keyguardlock != null) {
keyguardlock.reenableKeyguard();
}
}
[/java]
onDestroy() のライフサイクルでキーロックと スクリーンを戻してますが、ちょっと疑問です。 アプリの仕様にもよると思いますが、スクリーンロックは最初の状態にちゃんと戻さないと、予期しない問題が起こるとの事です。