私はAndroid 3.0で作業しており、デバイスがスリープ状態になるか、画面が消えるときにアプリケーションで知る必要があります。Androidでスリープイベントに登録するには?
このインテント/イベントに登録することで、このような場合にいくつかのアクションを実行できますか?これを通知する何らかのアクションがBroadcastReceiverにありますか?
私はAndroid 3.0で作業しており、デバイスがスリープ状態になるか、画面が消えるときにアプリケーションで知る必要があります。Androidでスリープイベントに登録するには?
このインテント/イベントに登録することで、このような場合にいくつかのアクションを実行できますか?これを通知する何らかのアクションがBroadcastReceiverにありますか?
Thisページには、探しているもののチュートリアルがあります。
そのページからコピーしたコード(リンクのみからこれをオンにするために、直接役に立つものに答える):
1)意図を受け取るために、アプリケーション内のクラスを作成します。たとえば、次のレシーバーは単独でスタンドアロン変数をパート2で使用するように設定します。
2)画面のオン/オフイベントを受信するようにアクティビティを変更します。
public class ExampleActivity extends Activity {
@Override
protected void onCreate() {
// initialize receiver
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
BroadcastReceiver mReceiver = new ScreenReceiver();
registerReceiver(mReceiver, filter);
// your code
}
@Override
protected void onPause() {
// when the screen is about to turn off
if (ScreenReceiver.wasScreenOn) {
// this is the case when onPause() is called by the system due to a screen state change
System.out.println("SCREEN TURNED OFF");
} else {
// this is when onPause() is called when the screen state has not changed
}
super.onPause();
}
@Override
protected void onResume() {
// only when screen turns on
if (!ScreenReceiver.wasScreenOn) {
// this is when onResume() is called due to a screen state change
System.out.println("SCREEN TURNED ON");
} else {
// this is when onResume() is called when the screen state has not changed
}
super.onResume();
}
}
手動睡眠(ユーザーが行った、電源ボタンを押す)と自動睡眠(X分後)を区別することは可能ですか? –
@Yaniv:「私は、デバイスがスリープになったときに/画面をオフに自分のアプリケーションに知っておく必要がありますあなたの受信機は、あなただけの受信意思の理由を知るために、あなたの放送受信機での静的変数をチェックします。 " - なぜ? Androidアプリケーションの99.999%はこれを必要としません。これを行うための唯一の方法は、かなりユーザーに対して敵対的な行動(例えば、常に実行中のサービス)を想定しています。だから、あなたが達成しようとしていることを説明してください。より良い解決策を見つけることができます。 – CommonsWare