1. 程式人生 > >Android 獲取電池溫度

Android 獲取電池溫度

1. Demo 下載

https://github.com/sufadi/BatteryInfo

2. 電池溫度

// 當前電池溫度
import static android.os.BatteryManager.EXTRA_TEMPERATURE;

    private  BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
            if (null == intent) {
                return;
            }

            String action = intent.getAction();

            if (Intent.ACTION_BATTERY_CHANGED.equals(action)) {
                // 電池溫度
                int temperature = intent.getIntExtra(EXTRA_TEMPERATURE, -1);

3. 電池健康狀態-溫度過低


    private String getHealth(int health) {
        String result = getString(R.string.battery_health_unknow);

        switch (health) {
            case BATTERY_HEALTH_UNKNOWN:// 未知
                break;
            case BATTERY_HEALTH_GOOD:// 良好
                result = getString(R.string.battery_health_good);
                break;
            case BATTERY_HEALTH_OVERHEAT:// 過熱
                result = getString(R.string.battery_health_overheat);
                break;
            case BATTERY_HEALTH_DEAD: // 沒電
                result = getString(R.string.battery_health_dead);
                break;
            case BATTERY_HEALTH_UNSPECIFIED_FAILURE: // 未知錯誤
                result = getString(R.string.battery_health_unspecified_failure);
                break;
            case BATTERY_HEALTH_OVER_VOLTAGE:// 過電壓
                result = getString(R.string.battery_health_over_voltage);
                break;
            case BATTERY_HEALTH_COLD: // 溫度過低
                result = getString(R.string.battery_health_cold);
                break;
        }

        return result;
    }

底層上報數值如下

enum {
    BATTERY_HEALTH_UNKNOWN = 1,
    BATTERY_HEALTH_GOOD = 2,
    BATTERY_HEALTH_OVERHEAT = 3,
    BATTERY_HEALTH_DEAD = 4,
    BATTERY_HEALTH_OVER_VOLTAGE = 5,
    BATTERY_HEALTH_UNSPECIFIED_FAILURE = 6,
    BATTERY_HEALTH_COLD = 7,
};

4.adb shell 檢視電池溫度

adb shell cat /sys/devices/platform/battery/Battery_Temperature

5. adb shell 設定電池溫度

adb shell “echo 55 > /sys/devices/platform/battery/Battery_Temperature”

這裡可以設定一些極限溫度,手機一般會報高溫和低溫警告