温度監視専用の古い Android 携帯を使用して Android アプリを作成しています。現在、Android 2.1 update-1 を実行している HTC Hero で問題が発生しています。バッテリー温度センサーの更新を受信しません。初期値のみを取得します。ただし、外部電源が接続された状態の更新は受信します。外部電源が変更されると、新しい温度が受信されます。
この動作はハードウェアによって設定されていますか、それとも私にできることはありますか?
私は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 で正常に動作します。
私が言ったように、外部電源が変更された場合 (充電器が差し込まれたり抜かれたりした場合)、受信機は常に呼び出され、新しい温度が受信されます。
受信機を再登録しても役に立ちません。
このようなインテントを間隔を置いて手動で取得しようとしましたが、温度は一定です (確実に変化したとしても)。
handleBatteryIntent(registerReceiver(null, filter));
温度は、外部電源の状態 (EXTRA_PLUGGED) が変化した場合にのみ更新されるようです。
他の 2 つのバッテリー アプリを試しましたが、どちらも同じ問題を抱えています。