1. 程式人生 > >Android 獲取電池電壓和電池電壓高提示

Android 獲取電池電壓和電池電壓高提示

1. Demo 下載

https://github.com/sufadi/BatteryInfo

2. 獲取電池電壓

// 當前電池電壓
import static android.os.BatteryManager.EXTRA_VOLTAGE;

    private  BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {

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

            String action = intent.getAction();
            // 當前電池電壓
            int batteryVolt = intent.getIntExtra(EXTRA_VOLTAGE, -1);

3. 電池電壓高

// 過電壓
import static android.os.BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE;
// 電池健康情況
import static android.os.BatteryManager.EXTRA_HEALTH;

    private  BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {
            if (null == intent) {
                return;
            }
            int health = intent.getIntExtra(EXTRA_HEALTH, BATTERY_HEALTH_UNKNOWN);
            
            if(health == BATTERY_HEALTH_OVER_VOLTAGE) {
                // 電池電壓過高,一般觸發的條件是充電器電壓達到 6.6 V
            }

檢視底層上報的值-BatteryServiceConstants.h
frameworks/native/services/batteryservice/include/batteryservice/BatteryServiceConstants.h:23: BATTERY_HEALTH_OVER_VOLTAGE = 5

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,
};

即底層上報 health 為 5 的時候,觸發電池電壓高的警告