Нет обновлений температуры батареи в HTC Hero / Android 2.1
Я пишу приложение для Android, используя старые телефоны Android, предназначенные для мониторинга температуры. Теперь у меня проблема с HTC Hero под управлением Android 2.1 update-1. Он не получает обновления датчика температуры аккумулятора. Это только получает начальное значение. Тем не менее, он получает обновления о подключении внешнего питания. Если внешний источник питания изменен , будет получена новая температура.
Это поведение задается аппаратными средствами, или я могу что-то с этим поделать?
Я использую BroadcastReceiver:
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(batteryReceiver, filter);
BroadcastReceiver batteryReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(LOG_TAG, "onReceive, action = " + intent.getAction());
float temperature = intent.getIntExtra(BatteryManager.EXTRA_TEMPERATURE, 999) / 10f;
boolean externalPower = (intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0) != 0);
// ...
}
};
Это отлично работает на Galaxy S4 / Android 4.3.
Как я уже сказал, если внешний источник питания изменяется (зарядное устройство подключено или отключено), всегда вызывается приемник, и принимается новая температура.
Повторная регистрация приемника не помогает.
Я пытался вручную получить Intent, как это через определенные промежутки времени, но температура постоянна (даже если она определенно изменилась).
handleBatteryIntent(registerReceiver(null, filter));
Кажется, что температура обновляется только при изменении состояния внешнего источника питания (EXTRA_PLUGGED).
Я пробовал два других приложения батареи, и у них та же проблема.