Androidアプリの実行中に今現在画面がロックされているかどうかのロック状態を調べるにはKeyguardManager:: inKeyguardRestrictedInputMode()を使う。trueならロック中、falseならロックされていない。
package com.Test127; import android.app.Activity; import android.app.KeyguardManager; import android.content.Context; import android.os.Bundle; import android.util.Log; public class Test127Act extends Activity { private KeyguardManager _KeyguardManager; private boolean _bScreenLocked = false; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); _KeyguardManager = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE); _bScreenLocked = _KeyguardManager.inKeyguardRestrictedInputMode(); } @Override public void onPause() { super.onPause(); _bScreenLocked = _KeyguardManager.inKeyguardRestrictedInputMode(); if(_bScreenLocked) { //ロックされた //呼ばれないことあり Log.d("Test127","onPause() Locked!!! Do something ...."); } } @Override public void onWindowFocusChanged(boolean hasFocus) { super.onWindowFocusChanged(hasFocus); if(_bScreenLocked == true && hasFocus) { //アンロックされた //呼ばれないことあり Log.d("Test127","onWindowFocusChanged() Unlocked!!! Do something ...."); } _bScreenLocked = _KeyguardManager.inKeyguardRestrictedInputMode(); } }
プロジェクトファイルをダウンロード