安卓(Android)開發如何獲取當前電量?

方法一隻能查看

方法二可以在代碼中直接獲取

方法三讓系統主動告訴你, 及時獲取無延遲

安卓(Android)開發如何獲取當前電量?

方法一: 使用adb直接查看

如果不需要在程序中使用電量信息只是要查看一下電量的話(你直接看顯示不好嗎? 話說有些智能設備沒有屏幕的)

可以使用命令查看

adb shell dumpsys battery

一般結果如下

Current Battery Service state:
AC powered: false //是否正在使用交流電充電
USB powered: true //是否正在使用其他設備USB接口充電
Wireless powered: false //是否是無線充電
status: 2 //狀態
health: 2 //電池健康程度
present: true //當前量是否為百分比
level: 77 //當前量
scale: 100 //總量
voltage: 4130000 //電壓
temperature: 389 //溫度
technology: Li-ion //電池類型
安卓(Android)開發如何獲取當前電量?

方法二:使用電池服務

安卓6及以上

batteryManager = getSystemService(BatteryManager.class);

安卓6以下

batteryManager = (BatteryManager) getSystemService(Context.BATTERY_SERVICE);
安卓(Android)開發如何獲取當前電量?

方法三: 註冊接收器

新建一個類, 使用該類繼承於BroadcastReceiver, 實現onReceive方法.

在Activity, Service或AndroidManifest.xml中註冊接收器

final BroadcastReceiver mBatteryReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
//當前電量
final int level = intent.getIntExtra("level", 0);
//總電量
final int scale = intent.getIntExtra("scale", 100);
//電量百分比
mPower = level * 100 / scale;
}
};

在代碼中註冊

registerReceiver(mBatteryReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

在AndroidManifest.xml文件中註冊

<application>
...
<receiver>
<intent-filter>
<action>
/<intent-filter>
/<receiver>
...
/<application>

當前電池電量發生變量的時候會系統會回調接收器的onReceive方法, 在onReceive方法中可以獲取當前電量

因為這種方法是系統在電量變化主動通知應用程序,所有這種方法是非常及時的


分享到:


相關文章: