1

AlarmManager を使用して、定期的に繰り返されるアラームを開始します。Wi-Fi が常に接続されている必要があるため、Wi-Fi のウェイクロックが必要だと思います。私には明確ではないのは、このウェイクロックを作成する場所であり、アラームがトリガーされるたびに作成しないようにすることです。私のアプリにはアクティビティがありません。

タグをウェイクロックに割り当てることができることは知っていますが、ウェイクロックがタグで存在するかどうかを Android に問い合わせる方法はないようです。それができれば、アラームがトリガーされたときにウェイクロックがすでに存在していることがわかるので、わざわざ再作成する必要はありません。または、代替ソリューションはありますか?

4

2 に答える 2

1

私はやや似たようなシナリオに直面しなければなりませんでした。また、電話の画面がロックされている場合でも、AlarmManager を使用してサービスを定期的にトリガーします。この場合、WiFi は常にオンになっている必要があります。多くのデバイスでは、WiFi スリープ ポリシーを手動またはプログラムで変更するだけで十分であり、ウェイクロックを使用する必要がないことがわかりました。ただし、一部の HTC デバイスでは、この設定が夜間にまったく機能しないことがわかりました。アプリを監視したところ、00:00 (真夜中) から朝の 7:00 の間に WiFi がオフになることがわかりました。また、この問題に対処できる HTC 電話の特別な設定について著者が言及している別の場所 (stackoverflow ではない) の投稿も見つけました。

Settings.System.putInt(getContentResolver(), "smartsync_turn_off_wifi", 0);

これは約 1 年半前に発生しました。この設定を使用すると、少なくとも最近まで、Android 3.1 までの HTC デバイスで問題が解決されていました。少し前に、私たちのアプリの一部のユーザーが、Android 4.x を搭載した HTC が、夜間に WiFi がオフになるため、想定どおりの動作をしていないと報告しています。新しいデバイスではもう。

とにかく、@AndroidDev、あなたの問題と私の問題は多少関連しているように見えるので、あなたがそれを解決できたかどうか、そして応答が肯定的であればどのように解決したかを知りたい.

于 2014-04-05T18:53:51.920 に答える
0

既存のウェイクロック (タグ付き) のリストを取得する方法はあると思いますが、それが正しい解決策であるかどうかは疑問です。「wakelock Detector」のようなアプリをチェックしてください。リストを取得し、タグを既知のタグのリストと照合して、どのアプリがそれを作成したかを突き止めていると思います。また、ウェイクロックの持続時間にも注意してください。CPU ウェイクロックは、非常に短期間の使用を目的としています。アラームの周期はわかりませんが、ウェイクロックを長時間保持しようとしているようです。

「Wi-Fi のウェイクロック」と言うときは、通常のウェイクロックを意味しているだけだと思います。画面と CPU のウェイクロックはありますが、wifi のウェイクロックなどはありません。また、タグで独自のウェイクロックを見つけることは私には意味がありません.ウェイクロックへの参照がまだない場合、どうすればそれを解放できますか?

「常に接続を維持するにはWi-Fiが必要」と書いています。Wi-Fi AP が使用可能なままである場合、デバイスがスリープ状態になっても、ユーザーが「スリープ中に Wi-Fi をオンにしておく」設定を変更していない限り、Wi-Fi は接続されたままになります。アプリでこの設定を確認できます。

于 2013-10-08T14:42:45.410 に答える