0

我正在使用专门用于温度监测的旧 Android 手机编写一个 Android 应用程序。现在我遇到了运行 Android 2.1 update-1 的 HTC Hero 的问题。它不接收电池温度传感器的更新。它只得到一个初始值。但是,它会接收外部电源插入状态的更新。如果更换了外部电源,则会收到新的温度

这种行为是由硬件设置的还是我能做些什么?

我正在使用广播接收器:

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)发生变化时才会更新温度。

我尝试了另外两个电池应用程序,它们也有同样的问题。

4

0 回答 0