Android BATTERY_STATUS_NOT_CHARGING と BATTERY_STATUS_DISCHARGING


Android で、バッテリの状態を調べるには、

のようにします。

ここで得られる status の値は、リファレンスによれば

BATTERY_STATUS_CHARGING
BATTERY_STATUS_DISCHARGING
BATTERY_STATUS_FULL
BATTERY_STATUS_NOT_CHARGING
BATTERY_STATUS_UNKNOWN

の 5 種類有ります。

充電中かどうか調べるには、

とします。これは、「充電中」もしくは「満充電 = 充電中だがこれ以上充電できない」という風に理解できます。

それでは、放電中かどうか調べる場合、

BATTERY_STATUS_DISCHARGING = 放電中
BATTERY_STATUS_NOT_CHARGING = 充電中でない

はどう違うのでしょうか?

外部電源が接続されていない状態(=放電中)で、上記 status がどの値を返すのか、手持ちの実機で調べてみると、以下のような結果になりました。

SO-02C (Xperia acro/Android2.3): BATTERY_STATUS_DISCHARGING
SO-03C (Xperia ray/Android2.3): BATTERY_STATUS_DISCHARGING
FAR70A (Fujitu Arrows/Android4.0): BATTERY_STATUS_NOT_CHARGING
TF-201 (Asus Eee Pad/Android4.1): BATTERY_STATUS_NOT_CHARGING

調べた機種が少ないのですが、どうやらスマートフォンでは BATTERY_STATUS_DISCHARGING、(10インチ)タブレットでは BATTERY_STATUS_NOT_CHARGING になるようです。(7インチタブレットや、Android3.2 のタブレットがどんな値になるのか気になりますが、手元にないので調査不能です。)

したがって、放電中かどうか調べる場合は、

とする必要があります。

※ 2012/12/29 記事中のコード部分で BatteryManager の定数に、”BatteryManager.” が抜けていたので修正しました。
※ 端末がどのような status を返すか調べるコードを こちらに公開しました。