私は、Battery_Status_Full(バッテリーが100%充電されている)/充電が切断されたときのどちらか早い方で、時刻をdbで更新する必要があるアプリを開発中です。BroadcastReceiverを介してACTION_BATTERY_CHANGEDを受け取った後、BatteryManager.Battery_Status_Fullを知っている
バッテリー切断イベントを取得し、そのイベントに基づいてデータベースを更新することができますが、デバイスがまだ充電中であり、サービス内でオンチャージしている間、onCreateで私はbroadcastReceiverをIntentFilter(Intent .ACTION_BATTERY_CHANGED)、100%のバッテリー充電が完了したかどうかを確認するために5分ごとに繰り返しイベントを起こそうとすると、100%のイベントを受信しないと思われます。 また、私のAlarmManagerでは、100%のバッテリー充電をチェックするサービスは、1回だけ起動され、繰り返しは実行されません。
ご案内しています。私はほとんど私のアプリで終わっているが、この小さなバグは私を夢中にさせている。 おかげ Omkar Ghaisas
----詳細は---- マイアプリのアーキテクチャは、以下のように
BroadcastReceiver(ACTION_POWER_CONNECTEDとACTION_POWERDISCONNECTEDために登録)です。いずれの場合も、DBトランザクションを処理するために個別のサービスを開始します。電源ことがADDと呼ばれる追加情報とインテントを設定し、切断のために、それは更新でそれを設定する接続
- サービスが開始されると、そののonCreateで、それはIntentFilter ACTION_BATTERY_CHANGED および内ヌルbroadcastreceiverに渡すことによって受信機を登録
onStartCommand、インテントのAddフラグの場合、新しいエントリがdbに保存されます。 更新フラグの場合 - 以前の更新DBエントリが作成されていない場合のみ、データベースを更新します。
上記のAdd/Updateロジック(If-Else)の下にsetRepeatingを持つAlarmManagerがあります
私は、新しいサービスの中で、戦闘レベルが100%に達したかどうかを確認すると、そこにデータベースを更新すると思います。
バッテリーが100%に達しておらず、Battery_Dicsonnectedが起動している場合、上記のUpdateブロック内では、その時のバッテリーレベルに関係なく、dbは更新されます。
疑問/懸念 -
- しかし、問題はalarmmanagerから呼び出されたばかりの新しいサービスは、一度だけ呼び出さ/開始された、ということです。
- ここでは、このアラームマネージャをどこで最初のサービスに配置しますか?
- 2番目のサービスは、バッテリの残量が常に100%に達していることを常に確認していますか?
Plsガイド。それが必要な場合は、コードを投稿することができます。 ありがとう オムカー
バッテリーが完全な状態に達していない可能性があり、充電器がその前に充電を停止すると判断する(99%など)ことがあります。あなたは 'ACTION_BATTERY_CHANGED'を取得したときにバッテリーレベルをチェックし、レベルが99%のときにバッテリーをフルにしておくことができます。繰り返しイベントについては、http://developer.android.com/reference/android/app/AlarmManager.html – zapl
私のオリジナルのクエリに詳細を追加しました。基本的な問題が何であるかを理解するのに役立つかもしれません。私は確信しています、初心者である、私はどこかに行っている必要がありますが、私は確信していません –
"nullのbroadcastreceiverで渡す"は、ACTION_BATTERY_CHANGEDを受信できる受信者がないことを意味ですか? – zapl