我正在使用专用于温度监控的旧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上运行良好。
就像我说的那样,如果更换外部电源(插入或拔出充电器),则始终会调用接收器,并接收新的温度。
重新重新设置接收器无济于事。
我已经尝试按间隔手动获取Intent,但温度是恒定的(即使它确实发生了变化)。
handleBatteryIntent(registerReceiver(null, filter));
似乎仅在外部电源状态(EXTRA_PLUGGED)发生变化时才更新温度。
我已经尝试了其他两种电池应用,但它们也遇到了同样的问题。