Android電池電量檢測

jopen 10年前發布 | 11K 次閱讀 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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!