Android 獲取當前手機電量


通常,獲取手機電量會寫一個IntentFilter,BroadcastReceiver,然后注冊registerReceiver(batteryReceiver, intentFilter);

等待onReceive回調再去解析intent來獲取電量(注冊后會第一時間回調一次,所以基本上可以馬上獲得電量信息)

IntentFilter intentFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
class BatteryReceiver extends BroadcastReceiver{

		@Override
		public void onReceive(Context context, Intent intent) {
			// TODO Auto-generated method stub
			//判斷它是否是為電量變化的Broadcast Action
			if(Intent.ACTION_BATTERY_CHANGED.equals(intent.getAction())){
				//獲取當前電量
				int level = intent.getIntExtra("level", 0);
				//電量的總刻度
				int scale = intent.getIntExtra("scale", 100);
				//把它轉成百分比
				tv.setText("電池電量為"+((level*100)/scale)+"%");
			}
		}
		
	}

不過我后來發現registerReceiver方法會返回intent對象,如果IntentFilter過濾的是Intent.ACTION_BATTERY_CHANGED,

那么從registerReceiver方法會返回的intent對象中也可以獲得電量信息的。

如果我們獲取電量是一次性的,不需要持續監聽電量變化,那么可以這樣:Intent intent = registerReceiver(null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

然后對intent處理即可。

以前沒注意過registerReceiver的返回值,在此mark一下O(∩_∩)O~

 


免責聲明!

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



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