2012年2月25日土曜日

[Android SDK] 画面ON/OFFを検知する

画面の電源ON/OFF時にはインテントが発行されますので、BroadcastReceiverを利用して受け取るようにします。 まずは、受け取るためにBroadcastReceiverを作成します。作成したActivityもしくはService内に作成すると良い。
// ブロードキャストリスナー
BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
 @Override
 public void onReceive(Context context, Intent intent) {
  String action = intent.getAction();
  if (action != null) {
   if (action.equals(Intent.ACTION_SCREEN_ON)) {
    // 画面ON時
    Log.d(TAG, "SCREEN_ON");
   } else if (action.equals(Intent.ACTION_SCREEN_OFF)) {
    // 画面OFF時
    Log.d(TAG, "SCREEN_OFF");
   }
  }
 }
};
作成したBroadcastReceiverでインテントを受け取るには、IntentFilterを使い対象を登録する必要があります。 画面の電源ON/OFFでは次の二つを登録すると良い。
// リスナーの登録
Context c;
c.registerReceiver(broadcastReceiver, new IntentFilter(Intent.ACTION_SCREEN_ON));
c.registerReceiver(broadcastReceiver, new IntentFilter(Intent.ACTION_SCREEN_OFF));
また、受信するActivityまたはServiceのIntentFilterにも追加する。

なお、不要になったときは登録を削除します。
// リスナーの登録削除
Context c;
c.unregisterReceiver(broadcastReceiver);

0 件のコメント:

コメントを投稿