2011年8月18日木曜日

Android FLAG_DISMISS_KEYGUARD と FLAG_SHOW_WHEN_LOCKED を使う

KeyguardManagerexitKeyguardSecurely() メソッド及び newKeyguardLock() メソッドと、サブクラスの KeyguardManager.KeyguardLockdeprecated になっています。

これらのメソッドの代わりに WindowManager.LayoutParams クラスの FLAG_DISMISS_KEYGUARDFLAG_SHOW_WHEN_LOCKED を使うことが推奨されています。

■ FLAG_DISMISS_KEYGUARD

 このフラグが設定されると、secure lock keyguard でない場合、ウィンドウによって keyguard が表示されなくなる。security が必要でない keyguard では、ユーザーが他のウィンドウに移動したときに再表示されない(反対に FLAG_SHOW_WHEN_LOCKED では、secure、non-secure 両方の key guard を一時的に隠して、ユーザーがこれらを隠さない設定の他の UI に移動したときに再表示する。

 FLAG_SHOW_WHEN_LOCKED が同時に設定されていないと、keyguard が現在アクティブでユーザーより secure な場合(= unlock pattern を要求している場合)、ウィンドウを表示する前に lock pattern を確認する必要がある。

■ FLAG_SHOW_WHEN_LOCKED

 スクリーンがロックされたときに Windows に表示させるための特別なフラグで、このフラグをセットすると、アプリケーションウィンドウが key guard や他のロックスクリーンよりも優先される。
 
 FLAG_KEEP_SCREEN_ON と組み合わせて使うことで、画面をオンした後、 key guard を表示する前に直接ウィンドウを表示できる。
 
 FLAG_DISMISS_KEYGUARD と組み合わせて使うことで、自動で non-secure keyguards を表示させないようにできる。このフラグは一番上の full-screen window にのみ適用される。


関連するフラグ

FLAG_ALLOW_LOCK_WHILE_SCREEN_ON

FLAG_KEEP_SCREEN_ON




  1. public class KeyguardSampleActivity extends Activity {  
  2.   
  3.     @Override  
  4.     public void onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.         setContentView(R.layout.main);  
  7.           
  8.         Window window = getWindow();  
  9.           
  10.         // lock pattern を設定していても、  
  11.         // このアプリ起動中は画面オン時にロックはでない  
  12.         // 別のアプリやホームに移動するときにロックがでる  
  13.         window.setFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED,   
  14.                 WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);  
  15.   
  16.         // lock pattern を設定していない場合、  
  17.         // このアプリ起動中は画面オン時にロックはでない  
  18.         window.setFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD,   
  19.                 WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);  
  20.     }  
  21. }  



■ まとめ

1. lock pattern あり、FLAG_SHOW_WHEN_LOCKED

 このアプリ起動中は画面オン時にロックはでない
 別のアプリやホームに移動するときにロックがでる


2. lock pattern あり、FLAG_DISMISS_KEYGUARD

 普通にロックがでる


3. lock pattern あり、FLAG_SHOW_WHEN_LOCKED, FLAG_DISMISS_KEYGUARD

 このアプリ起動中は画面オン時にロックはでない
 別のアプリやホームに移動するときにロックがでる


4. lock pattern なし、FLAG_SHOW_WHEN_LOCKED

 このアプリ起動中は画面オン時にロックはでない
 別のアプリやホームに移動するときにロックがでる


5. lock pattern なし、FLAG_DISMISS_KEYGUARD

 このアプリ起動中は画面オン時にロックはでない
 別のアプリやホームに移動するときもロックはでない


6. lock pattern なし、FLAG_SHOW_WHEN_LOCKED, FLAG_DISMISS_KEYGUARD

 このアプリ起動中は画面オン時にロックはでない
 別のアプリやホームに移動するときもロックはでない



0 件のコメント:

コメントを投稿