0

Android のバッテリー レベルが 1% 変化しても監視したい。次の 2 つの条件を満たす必要があります。

1-効率のために、ポーリングまたは定期的にバッテリーレベルをチェックしたくありません(アラームマネージャー、ハンドラー、またはポーリングにつながるものは使用しません)

2-一方、アプリケーションがフォアグラウンドにない場合やアプリケーションが強制終了された場合でも、バッテリー レベルの変化を受け取る必要があります。

現在、私はこのコードを使用しています:

IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
context.registerReceiver(new MyBatteryReceiver(), ifilter);

コンテキスト (または私のアクティビティ) が有効になるまで、つまり MyBatteryReceiver がバッテリ レベルの変化を受け取るまで、うまく機能します。

他の人は、registerReceiver で null を使用することを提案しています。

context.registerReceiver(null, ifilter);

この解決策は、バッテリー レベルを定期的にチェックする必要があることを意味します。

私はこれを含む多くの投稿をチェックしました:

マニフェストを使用して Android からバッテリーの統計情報にアクセスしたり、バッテリー レベルを監視したりします

しかし、誰もこの質問に答えませんでした:ポーリングせずにアンドロイドのバッテリーレベルを監視する方法は?もちろん、レベルが低すぎたり高すぎたりする場合は、次のブロードキャストを使用できます。

<action android:name="android.intent.action.ACTION_BATTERY_LOW"/>
<action android:name="android.intent.action.ACTION_BATTERY_OKAY"/>

残念ながら、バッテリー レベルの変化に同様のブロードキャストを使用することはできません。

<action android:name="android.intent.action.BATTERY_CHANGED" />
4

0 に答える 0