[Android] BatteryManager バッテリー情報を取り出す

バッテリーの充電情報を BatteryManager と Broadcast Intent のACTION_BATTERY_CHANGED を使って取得できます。また、Lollipop で追加された機能もあります。
 
batterymanager_2b

Android Studio 2.1.1
Android 6.0

 

sponsored link

BateryManager

 
BatteryManagerはバッテリー情報を sticky Intent でブロードキャストしますが、sticky Intent なので BroadCast の登録をわざわざしなくてもよく、null を渡せばできます。
Ref: BatteryManager
Monitoring the Battery Level and Charging State
 
簡単に今の電池残量は下のようにして取得できます
 

 
ただ、正確には BatteryManager.EXTRA_SCALE で最大値を出して
level/maxLevel
のように計算しますが、大概Max は100の場合が多いようですのでそのまま%で扱えます。

MainActivity.java

 
Lollipop からの機能は、Nexusでも一部の機能のみの実装だったりと機種次第のところがあります。いずれこれが実装されれば便利なアプリが作れそうです。
 
activity_main.xml

 
基本的にバッテリー残量などの外部デバイスを使う場合は実機に依存する部分があることを前提にすべきですが、Android Studio 2.0からemulatorである程度確認することができます(emulatorだけのテストでリリースするのは論外です)
 
batterymanager_1

バッテリー残量やその他のステータスを変更して試せます。