Вы можете использовать широковещательный приемник для получения информации о вашей батарее при изменении.
private BroadcastReceiver mBatteryInfoReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context ctx, Intent intent) {
mLevel = intent.getIntExtra(BatteryManager.EXTRA_LEVEL, Const.VALUE_UNSET);
mTemperature = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, Const.VALUE_UNSET);
mStatus = intent.getIntExtra(BatteryManager.EXTRA_STATUS, Const.VALUE_UNSET);
mPlugged = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, Const.VALUE_UNSET);
mScale = intent.getIntExtra(BatteryManager.EXTRA_SCALE, Const.VALUE_UNSET);
mHealth = intent.getIntExtra(BatteryManager.EXTRA_HEALTH, Const.VALUE_UNSET);
mVoltage = intent.getIntExtra(BatteryManager.EXTRA_VOLTAGE, Const.VALUE_UNSET);
mTechnology = intent.getStringExtra(BatteryManager.EXTRA_TECHNOLOGY);
}
Не забудьте (un-) зарегистрировать приемник в своей деятельности (или службе, если она должна работать в фоновом режиме).
Регистрация (OnCreate/OnStart ...):
registerReceiver(mBatteryInfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
Разрегистрировать (OnPause/onDestory):
unregisterReceiver(...)
Запись в файл не должен быть слишком трудно, просто найти здесь SO и не забудьте установить разрешения (для работы с файлами также):
<uses-permission android:name="android.permission.BATTERY_STATS"/>