デバイスの画面がオフになったときにのみ動作するアプリケーションがあります。ブロードキャスト レシーバー ( ) をセットアップしましたがIntent.ACTION_SCREEN_OFF
、正常に動作します。デバイスの画面が消えると常にLOGCATに記録されます。ここまでは順調ですね。
onReceive
ACTION_SCREEN_OFF からの私のコードは、いくつかのコード計算を使用しており、すべて正常に実行されます (画面がオフになったとき)。ここまでは順調ですね。
コードの最後でonReceive
新しいアクティビティを開始していますが、onCreate
ターゲティング アクティビティが常に実行されているとは限りません。(たとえば、私の HTC Desire 2.3.7 では問題なく動作します。HTC Wildfire S 2.3.5、Xperia Arc S 2.3.4 では実行されず、Samsung Galaxy ACE 2.2.1 では実行されることがあります。 t)。私のLOGCATはonReceive
、最後まで実行されたことを示していますが、アクティビティは開始されていません。このアクティビティを開始するには、次のコードを使用しています。
Intent startH_Activity = new Intent(getApplicationContext(), HandleActivity.class);
startH_Activity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startH_Activity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(startH_Activity);
注意すべき重要事項:
上記の一部の電話では機能しないと言いました。当然のように、すぐには機能しません(SCREEN_OFFが発生したとき)。常にアクティビティが次のように開始されます..画面が消えてから 10 ~ 15 分後 (これは受け入れられません)
画面が消えてアクティビティが開始されない場合、デバイスの電源ボタンを押すと、ターゲットのアクティビティがすぐに開始され、アプリは通常どおりに動作します。(繰り返しますが、これは受け入れられません。自動的に起動する必要があります)。
どんなデバイスでも PC に接続すると、正常に動作します。画面が消えた直後にアクティビティが開始されます。
多くの Stack Overflow を読んだ後、これは MAYBE デバイスがスリープ状態になるためであることに気付きました。そのため、電源ボタンを押すと通常どおりに動作するか、同期などのために10〜15分後に自動的にウェイクアップします。そこで、WAKELOCK を使用しました。
//OnCreate Service
powMan = (PowerManager) getSystemService(POWER_SERVICE);
wake = powMan.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG");
//OnReceive (screen goes off)
wake.acquire();
しかし、まだ成功していません。(私は間違っていますか?) wake lock が取得されても、これらのデバイスにはアクティビティが表示されません。
基本的に私が求めているもの。画面がオフになったときに通常のアクティビティを開くにはどうすればよいですか? または、少なくともアクティビティが開始されない場合に画面をオンにする方法 (電源ボタンを押すとアクティビティが表示されることを覚えておいてください)
私はこれについて本当にイライラしているので、今本当に助けが必要です. ご協力ありがとう御座います。