Android電池電量檢測

jopen 10年前發布 | 39K 次閱讀 Android Android開發 移動開發

電池的信息,電壓,溫度,充電狀態等等,都是由BatteryService來提供的。電池的這些信息是BatteryService通過廣播 主動把數據傳送給所關心的應用程序。

應用如果想要接收到BatteryService發送出來的電池信息,則需要注冊一個Intent為Intent.ACTION_BATTERY_CHANGED的BroadcastReceiver。

代碼如下:

    IntentFilter mIntentFilter = new IntentFilter();  
                mIntentFilter.addAction(Intent.ACTION_BATTERY_CHANGED);  
                registerReceiver(mIntentReceiver, mIntentFilter);  

private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() {  
        @Override  
        public void onReceive(Context context, Intent intent) {  
            // TODO Auto-generated method stub  
            String action = intent.getAction();  
            if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {  

                // 電池狀態,返回是一個數字  
                // BatteryManager.BATTERY_STATUS_CHARGING 表示是充電狀態  
                // BatteryManager.BATTERY_STATUS_DISCHARGING 放電中  
                // BatteryManager.BATTERY_STATUS_NOT_CHARGING 未充電  
                // BatteryManager.BATTERY_STATUS_FULL 電池滿  
                int status = intent.getIntExtra("status", 0); // 電池狀態  

                // 電池健康情況,返回也是一個數字  
                // BatteryManager.BATTERY_HEALTH_GOOD 良好  
                // BatteryManager.BATTERY_HEALTH_OVERHEAT 過熱  
                // BatteryManager.BATTERY_HEALTH_DEAD 沒電  
                // BatteryManager.BATTERY_HEALTH_OVER_VOLTAGE 過電壓  
                // BatteryManager.BATTERY_HEALTH_UNSPECIFIED_FAILURE 未知錯誤  
                int health = intent.getIntExtra("health", 0); //電池健康情況  

                int scale = intent.getIntExtra("scale", 0); // 電池最大容量  
                int nVoltage = intent.getIntExtra("voltage", 0); // 電池的電壓  
                int level = intent.getIntExtra("level", 0); // 電池的電量,數字  
                int temperature = intent.getIntExtra("temperature", 0); // 電池的溫度  

                if (nVoltage != 0) {  

                    tv_status.setText("電池電量:" + level + "%");  

                    Log.i(TAG, "voltage = " + nVoltage + " level = " + level  
                            + " temperature = " + temperature + "...success");  
                } else {  
                    Log.i(TAG, "voltage = " + nVoltage + "...failed");  
                }  
            }  
        }  
    };  
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!