Android中獲取手機電量信息


  有些時候我們需要在我們的應用上為用戶展示當前手機的電量,這時候我們就需要用到廣播了,我們都知道在動態注冊廣播的時候,我們需要傳入一個BroadcastReceiver類對象,還有一個意圖過濾器IntentFilter,平時我們使用自定義廣播的時候IntentFilter中的action可以自定義寫成任意形式,但是如果我們要過去系統電量,就需要用到這個系統為我們提供好的action,Intent.ACTION_BATTERY_CHANGED。同樣的,因為我們監聽的是系統廣播,所以廣播的發送方是系統,我們只需要在需要接受到改廣播的類中注冊廣播就可以了。

1 IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);

然后我們自定義了一個BroadcastReceiver,用來處理廣播中的獲得電量的邏輯代碼:

 1 package ggcomic.rabbit.lx.ggcomic.broadcastReceiver;
 2 
 3 import android.content.BroadcastReceiver;
 4 import android.content.Context;
 5 import android.content.Intent;
 6 import android.widget.TextView;
 7 
 8 /**
 9  * 監聽獲取手機系統剩余電量
10  * Created by Lx on 2016/9/17.
11  */
12 public class BatteryReceiver extends BroadcastReceiver {
13     private TextView pow;
14 
15     public BatteryReceiver(TextView pow) {
16         this.pow = pow;
17     }
18 
19     @Override
20     public void onReceive(Context context, Intent intent) {
21         int current = intent.getExtras().getInt("level");// 獲得當前電量
22         int total = intent.getExtras().getInt("scale");// 獲得總電量
23         int percent = current * 100 / total;
24         pow.setText(percent + "%");
25     }
26 }

這里我們調用intent.getExtras()方法得到intent攜帶的Bundle集合,系統為我們寫好了一些字段,如我們使用的"level","scale",分別是存儲的當前電量總電量信息。這是約定俗成的,Google的開發工程師為我們寫好的,記住會用就可以。我們這里需要在一個控件上展示出來我們的當前電量,於是我在廣播接收器的構造函數中傳遞進來了該控件的實例。得到當前電量和總電量之后,我們就可以計算出當前電量剩余的百分比,然后設置在控件上。自定義完廣播接收器后,我們還需要在需要接受廣播的類中注冊廣播,如下所示:

1 IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
2 receiver = new BatteryReceiver(tvElectric);
3 registerReceiver(receiver, filter);

當然,由於我們是動態注冊廣播,所以不要忘了在生命周期的onDestroy()方法中取消注冊廣播:

1 @Override
2     protected void onDestroy() {
3         super.onDestroy();
4         //銷毀廣播
5         unregisterReceiver(receiver);
6     }

這樣,我們就成功獲得了當前電量的百分比,是不是很簡單呢~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM