よくある質問(FAQ)

アプリケーションで画面のON/OFFを検知することはできますか?

BroadcastReceiverを使用することで画面のON/OFFを検知できます。

下記に参考のソースコードを記載します。
検知を開始する時にレシーバ登録(registerReceiver)します。(例の場合はonCreate)
登録後、画面ON/OFFのタイミングでonReceiveメソッドが実行されます。

検知を終了する時にレシーバ解除(unregisterReceiver)してください。(例の場合はonDestroy)

▼例

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // レシーバを登録する
        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction(Intent.ACTION_SCREEN_ON);
        intentFilter.addAction(Intent.ACTION_SCREEN_OFF);
        registerReceiver(screenOnOffReceiver, intentFilter);
    }
    
    @Override
    protected void onDestroy() {
        super.onDestroy();

        // レシーバを解除する
        unregisterReceiver(screenOnOffReceiver);
    }

    private final BroadcastReceiver screenOnOffReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            
            if (action.equals(Intent.ACTION_SCREEN_ON)) {
                // 画面をONにした場合の処理を記載する
                
            } else if (action.equals(Intent.ACTION_SCREEN_OFF)) {
                // 画面をOFFにした場合の処理を記載する
                
            }
        }
    }
}