Androidデバイスのバッテリーレベルをプログラムで監視するにはどうすればよいですか? stackoverflow に投稿された例と、BatteryManager
のレシーバーを登録する必要があるドキュメントを読みましたACTION_BATTERY_CHANGED
。私の質問は、バッテリーレベルを継続的に監視する必要があるということです。インテントを使用ACTION_BATTERY_CHANGED
すると、アプリを終了して再起動するまで、更新は一定の値のままです。アプリの実行中にバッテリー レベルを監視する方法はありますか?
1721 次
1 に答える
3
次のコードを使用してみてください。実行すると、バッテリーのさまざまな情報が得られます。取得できる情報は他にもたくさんありますが、そのため、Android API でバッテリー用の適切なコマンドを選択する必要があります。
public void getActualData(){
IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = this.registerReceiver(null, ifilter);
//are we charging / charged?
int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING || status == BatteryManager.BATTERY_STATUS_FULL;
if(isCharging == true){
tvCharged.setText("CHARGING");
}else{
tvCharged.setText("NOT CHARGING");
}
//how are we charging
int chargePlug = batteryStatus.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1);
boolean usbCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_USB;
boolean acCharge = chargePlug == BatteryManager.BATTERY_PLUGGED_AC;
if(usbCharge == true){
tvHowCharging.setText("USB");
}else{
tvHowCharging.setText("ELECTRICAL OUTLET");
}
//get battery level and print it out
int level = batteryStatus.getIntExtra(BatteryManager.EXTRA_LEVEL, -1);
tvLevelOutput.setText(level + " / 100");
pbLevel.setProgress(level);
pbLevel.invalidate();
//get battery temperatur
int temp = batteryStatus.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, -1);
tvTempOutput.setText(temp + "Grad");
pbTemp.incrementProgressBy(temp);
pbTemp.invalidate();
//get battery voltage
int voltage = batteryStatus.getIntExtra(BatteryManager.EXTRA_VOLTAGE, -1);
tvVoltageOutput.setText(voltage + " V");
pbVoltage.incrementProgressBy(voltage);
pbVoltage.invalidate();
}
于 2013-03-01T17:27:01.647 に答える