3

私はこのコードを使用して、サービスのバッテリー情報を追跡しています。

    Intent i = new ContextWrapper(applicationContext).registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
     // now you can get the level and scale from this intent variable
    int level = i.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
    int scale = i.getIntExtra(BatteryManager.EXTRA_SCALE, -1);

float battPct = level/(float)scale;

1.自動的に交換されてからバッテリーが交換されるかどうか知りたいですか?それとも、定期的に自分でその意図を実行する必要がありますか?2.また、バッテリー残量の1%が使用されてからの経過時間を計算する方法があるかどうかを知りたいです。

4

2 に答える 2

9

変更値を取得するためのより良い方法を使用する必要がありますBroadcastReceiver

電池交換時に値を変更します。を使用する必要がありますBroadCastReceiver

IntentFilter batteryLevelFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(batteryLevelReceiver, batteryLevelFilter);

BroadcastReceiver batteryLevelReceiver = new BroadcastReceiver(){
    @Override
    public void onReceive(Context context, Intent intent){
        int level = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
        int scale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, -1);
        float battPct = level/(float)scale;       
    }
};
于 2013-03-09T17:33:30.157 に答える
0

次のことが私のために働いた:

マニフェストファイルで、検索**<activity android:name=".MainActivity">** して置き換えます***<activity android:name=".MainActivity" android:exported="true">***

于 2021-12-19T16:11:32.263 に答える