Androidのモーニングロックとキーボードロック

3791 ワード

概要
Androidには2つのロックWalkLockとKeyguardLockがあります.
WalkLock-画面を点灯させるための起動ロック

KeyguardLock-キーボードのロックを解除するためのキーボードロックです.

WalkLockモーニングロック
WalkLockは画面を点灯させることができます.
起動ロックを取得
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);

WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK|PowerManager.ACQUIRE_CAUSES_WAKEUP, "Gank");

パラメータの説明:
PowerManager.FULL_WAKE_LOCK携帯電話の点灯度合い指定

PowerManager.ACQUIRE_CAUSES_WAKEUP WalkLockが画面を点灯させたのは、本当に画面を点灯させたわけではなく、Androidコンポーネント(Activity)で画面を点灯させたと理解できる.画面を点灯させたいという通知があればだめですが、PowerManagerが設定されている場合はACQUIRE_CAUSES_WAKEUというパラメータで、スクリーンを点灯できます.WalkLockはコンポーネントに依存せずに画面を点灯させることができます.

画面の現在の状態を取得
boolean state=wl.isScreenOn();//  true       ,  false       。

目覚ましとスリープ
wl.aquire();  //             

wl.release(); //         ,     。

説明:wl.release()この方法には注意すべき点があります.wlがスクリーンを目覚めてからスクリーンを休眠させるのは問題ありません.画面自体が起動状態である場合、wlは画面を起動していないので、wlが画面を休眠しようとすると、UnLock Sreen異常が発生します.
KeyguardLockキーボードロック
キーボードロックの取得
KeyguardManager km = (KeyguardManager)getSystemService(Context.KEYGUARD_SERVICE);

KeyguardLock kl = km.newKeyguardLock("KUnLock");

キーボードロックのステータスを取得
boolean state = km.inKeyguardRestrictedInputMode(); //  true      ,  false       

ロック解除とロック解除
kl.disableKeyguard();  //    

kl.reenableKeyguard(); //   

説明:
KeyguardLockは、キーボードがklによってロック解除されているかどうかにかかわらず、klを呼び出すreenableKeyguard()メソッドに異常はないという問題を起こしていません.


プログラムがキーボードロックオブジェクトを取得した場合、画面をロックすることは保証されません.本プログラムは他のプログラムが開いている画面をロックできないので(できればforループで永遠に画面を閉じることができます).だから自分の鍵だけをコントロールすることができて、他の人の鍵をコントロールすることができません.
まとめ
一般的に2つのロックは組み合わせて使用されており、キーボードをロック解除するときは画面を点灯する必要があります.キーボードをロックするときも、画面を同時にスリープさせるのが一般的です.