November 28, 2012

スクリーンのON/OFFイベントを検出する


スクリーン(LCD)のON/OFFイベントを検出する方法です。

スクリーンのON/OFFはシステムからBroadcast intentで飛んできますので、それを取得することで対応できます。受信するにはIntentFilterに取得したいIntent(この場合はACTION_SCREEN_OFF)を指定してBroadcast receiverを登録します。例ではOFFの1つだけですが、複数登録することももちろんできます。Activityが有効な間受信したい場合はonCreateで登録し、onDestroyで解除します。受信するとBroadcastReceiverのonReceiveがコールされます。

例)ActivityでスクリーンOFFを検出します

public class SampleAppActivity extends Activity {
    private BroadcastReceiver screenStatusReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            // Receive screen off
            if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
                // OFF
            }
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Register a receiver to receive screen status updates
        IntentFilter filter = new IntentFilter();
        filter.addAction(Intent.ACTION_SCREEN_OFF);
        registerReceiver(screenStatusReceiver, filter);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        // Unregister a receiver
        unregisterReceiver(screenStatusReceiver);
    }
}

参考:Android Developers:BroadcastReceiver

No comments:

Post a Comment