原文鏈接:https://blog.csdn.net/qijian0503/article/details/81910342
親測可用
上運行結果圖
上代碼
/**
* 實時獲取電量
*/
public static int getSystemBattery(Context context){
int level = 0;
Intent batteryInfoIntent = context.getApplicationContext().registerReceiver(null,
new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
level = batteryInfoIntent.getIntExtra("level",0);
int batterySum = batteryInfoIntent.getIntExtra("scale", 100);
int percentBattery= 100 * level / batterySum;
Log.i(ControlerInfo.LogTag,"level = " + level);
Log.i(ControlerInfo.LogTag,"batterySum = " + batterySum);
Log.i(ControlerInfo.LogTag,"percent is " + percentBattery+ "%");
return percentBattery;
}
以上代碼主要是在註冊接收者時,註冊了一個空對象進去了,所以也不需要進行註銷動作,這樣便達到了在只需要簡單的電量參數時,調用此方法就行,不需要將具體代碼寫進廣播接收者中去。親測在低於21 的API 中有效及高於21的 API 中也是可用的。
方式二:
public static int getBatteryRemainingCapacity(Context context){
int batteryRemainingCapacity = 1;
if(Build.VERSION.SDK_INT >= 21){
BatteryManager batteryManager = (BatteryManager)context.getSystemService(Context.BATTERY_SERVICE);
batteryRemainingCapacity = batteryManager.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY);
}
return batteryRemainingCapacity;
}