ByteScope

Android Battery Health

Android が見せてくれないバッテリーの数字を読み出します。設計容量、いまの容量、サイクル数、そして電圧・電流・電力・温度のリアルタイム表示。

すべてブラウザーが USB ケーブル越しに読み取ります。読み取った値がこの端末から出ることはありません。このページの背後にサーバーはありません。

ブラウザの対応を確認中…

このページが読む値

6 つの取得元のうち 5 つは任意項目です。同じ Android バージョンでも端末によって表示できる情報量がまったく違うのは、これが理由です。

取得元内容存在する頻度
/sys/class/power_supply/*/charge_full残量計がいま満充電として計測している容量 (µAh)。劣化度の分子です。Qualcomm 系や Samsung 端末では多く見られますが、無い端末も珍しくありません。
/sys/class/power_supply/*/charge_full_design出荷時の設計容量 (µAh)。劣化度の分母です。charge_full より公開されにくく、これが無いとパーセンテージは出せません。
/sys/class/power_supply/*/cycle_count電池の生涯で数えられた充放電サイクル数。少数派です。Android 14 で公式フィールドが追加されましたが、公開するかはメーカー次第です。
/sys/class/power_supply/*/current_now瞬時電流 (µA)。単位はカーネルの power-supply クラスで固定されていますが符号は固定されていないため、向きは充電状態から判断します。多くの端末にあり、このページは dumpsys の値よりこちらを優先します。
/sys/class/power_supply/*/voltage_now, temp端子電圧 (µV) と電池温度 (0.1 °C 単位)。どちらかの取得元からほぼ必ず取得できます。
dumpsys batteryフレームワーク側の情報: 残量、充電状態、HAL の健全性判定、充電カウンター、電池の種類。仕事用プロファイルやポリシーで禁止されていない限り、常に取得できます。

アプリ別の電池消費 (dumpsys batterystats) はまだ扱いません。checkin 形式のばらつきが大きく、誤ったランキングを出すくらいなら出さない方がよいためです。

このツールについて・FAQ・関連ツール

このツールについて

USB で Android 端末を Chromium 系ブラウザーにつなぐと、このページは設定アプリが見せてくれないバッテリーの値を読み取ります。出荷時の設計容量、残量計がいま計測している容量、数えられた充放電サイクル数、そして 1 秒ごとの電圧・電流・そこから求めた電力・電池自身の温度です。どこにもアップロードしません。このページは背後にサーバーのない静的ファイルで、値は USB ケーブルを通ってこのタブに届き、タブを閉じれば消えます。

Android にバッテリー劣化度の画面がない理由

iOS は iOS 11 以降「バッテリーの状態」を表示しています。Android に同じものが無いのは、うっかり忘れたからではなく構造的な理由があります。その画面に必要な数字は残量計 IC のドライバーから来るもので、プラットフォームはそれを任意項目として扱っているのです。charge_full、charge_full_design、cycle_count はカーネルの power-supply クラスの属性で、ドライバーが公開してもしなくてもかまいません。どれも公開しない端末も、Android として完全に正しい実装です。つまり設定アプリに劣化度を載せれば、出荷中のかなりの割合の端末で空欄になってしまう。だから公開 API は残量・状態・温度・電圧までで止まっています。Android 14 でようやく公式のサイクル数フィールドが追加されましたが、埋めるかどうかはやはりメーカーの自由です。

charge_full が実際に測っているもの

charge_full_design はドライバーに埋め込まれた定数です。セルの仕様上の容量、つまり電池に印刷されている数字そのものです。一方 charge_full は定数ではありません。空から満充電までにこの電池が受け入れる電荷量を、残量計が充放電を観察しながら学習し直している推定値です。後者を前者で割ったものが、どのアプリで見る劣化度でも中身は同じ計算で、このページも例外ではありません。特徴的な挙動もそこから説明できます。深放電のあとに 1〜2 ポイント動くのは残量計が再校正しただけで電池は変わっていませんし、設計値が控えめな端末では 100% を超えることもあります。どちらも推定値の性質であってセルの性質ではないので、このページはならして隠すのではなくそのまま表示します。

端末によって表示できる情報量が違う理由

どの属性が存在するかは、残量計 IC、そのドライバー、そしてメーカーがドライバーのどこまでをユーザー空間に見せると決めたかで決まります。Qualcomm 系や Samsung 自社の残量計は容量の 2 値を公開することが多く、MediaTek 搭載機ではどちらも無いことがよくあります。ベンダーによっては battery ではなく bms や battery_ext というノードに置いていることもあり、このページはそれも探しに行きます。3 つのうちサイクル数が飛び抜けて珍しい項目です。取得できなかったときは、どの取得元が無かったのかを明示します。推定値で埋めることはせず、端末が答えなかった項目を 0 mAh や 0% と書くこともしません。でっち上げた 0 は、空のバッテリーと見分けがつかないからです。

パーセンテージの読み方と、読み違え方

細かい数値ではなく大まかな帯として見てください。設計容量の 80% 以上なら、購入から 2〜3 年の端末としては普通です。60〜80% では駆動時間の短さを実感でき、寒い日や負荷の高い使い方では特にそうです。60% を下回ると、カメラのフラッシュや寒い朝のように瞬間的な電流が必要な場面で、残量表示がまだ残っていても電源が落ち始めます。交換を正当化するのはこの症状です。この数字が答えられないのは「ここからあと何年もつか」で、それは今日の比率ではなく充電の仕方と温度で決まります。1 回の読み取りでは傾向も分かりません。1 か月後にもう一度見てください。

自分で変えられる変数は温度

リチウムセルを劣化させるのはサイクル数と、高温かつ満充電で過ごした時間の 2 つです。サイクル数は避けられませんが、温度はかなりの部分を自分で選べます。リアルタイムパネルが 40 °C を橙、45 °C を赤で示すのはそのためで、45 °C を超えたまま充電を続けると容量の減りが目に見えて加速します。端末が温まると充電を絞るのも同じ理由です。急速充電そのものより、それが生む熱のほうが有害なので、暖かい窓辺でケースを付けたまま充電している端末は、涼しい机の上の同じ充電器より確実に傷んでいます。充電しながらここの温度グラフを見れば、ケースを外すだけでどれだけ違うかが分かります。ここから先は、Web ADB ハブに端末全体のダッシュボードがあり、デブロートはバックグラウンドで電池を食うプリインストールアプリを消し、ストレージ解析はもう一つの「足りなくなるもの」を扱います。

よくある質問

Android で充放電サイクル数を確認するには?

USB デバッグを有効にした端末を USB でつなぎ、このページの「サイクル数」を見てください。値は /sys/class/power_supply/*/cycle_count か、Android 14 以降なら dumpsys battery の公式フィールドから読み取ります。どちらも任意項目で、設定のどこかに隠れているのではなく、多くの端末では本当に存在しません。このページが「提供されていない」と表示するなら、アプリでも表示できません。端末上のアプリは同じファイルを読むだけで、別のノードを試すシェル権限すら持たないからです。*#*#4636#*#* のテストメニューにも、素の Android ではサイクル数は含まれていません。

劣化度が何 % になったら交換すべき?

「ここで交換」という閾値はありません。そう言い切るツールはむしろ疑ってください。この割合は charge_full ÷ charge_full_design であり、再校正で揺れる残量計の推定値です。交換を正当化するのは数字ではなく症状です。負荷をかけると残量 20〜30% で電源が落ちる、以前は夜まで持ったのに昼過ぎに充電が必要になる、同じ使い方なのに明らかに熱くなる、といったものです。多くの端末は 2 年目までは 80% 以上、4 年で 60〜70% あたりになります。85% で使用感に不満がないなら、この数字は何もするなと言っているのと同じです。

劣化度も容量もサイクル数も出ないのはなぜ?

メーカーの残量計ドライバーがその属性を公開していないからで、これは仕様上許されていて実際によくあることです。charge_full と charge_full_design はカーネルの power-supply クラスの任意項目で、省略したドライバーも規格に適合しています。権限の問題でも、USB デバッグで解錠できるものでもなく、アプリでも root でも値を生み出すことはできません。root で読めるファイルは増えますが、そもそも作られていないファイルは増えません。容量 2 値はあるのにサイクル数だけ無い、という組み合わせが最も多く見られます。3 つのうちサイクル数がいちばん珍しい項目だからです。

充電中、何度から危険?

45 °C を超えた状態が続くと容量の低下が測定できるレベルになり、多くの端末はこの温度で自ら充電電流を絞り始めます。急速充電中に一時的に 40 °C を超えるのは普通で気にする必要はありませんが、毎晩 1 時間 45 °C というのが電池の寿命を削ります。対策は地味ですが効きます。急速充電中はケースを外す、熱を逃がせないベッドやソファの上に置かない、車内や直射日光の下で充電しない。このページの温度は電池自身のサーミスタの値で、本体表面より内部のセルのほうが熱いので、見るべきはこちらです。

root は必要?

不要です。ここで読んでいるのはすべて通常の ADB シェルが読めるファイルとダンプなので、有効にするのは USB デバッグだけです。root があれば一部の端末でベンダー独自ノードをいくつか追加で読めますが、ドライバーが公開していない属性を作り出すことはできないため、容量値が無い端末が有る端末に変わるわけではありません。platform-tools のインストールも不要です。このページは WebUSB でブラウザーから直接 ADB プロトコルを話すためです。ただし ADB インターフェースを掴めるのは同時に 1 つのプログラムだけなので、デスクトップの adb サーバーが動いている場合は adb kill-server で止めてください。

iPhone の「バッテリーの状態」と同じ数字?

考え方は同じですが、実装は同じではありません。Apple も最大容量の比率を表示しますが、それは Apple 自身のバッテリー管理ファームウェアが独自のフィルタリングと独自の「満充電」の定義で算出した値です。このページが表示するのは、端末の残量計がいま報告している比率そのもので、ならしていません。だから読み取りごとに揺れますし、上方に再学習した残量計では 100% を超えることもあります。Android と iPhone の数字を小数点以下まで比べても意味はありませんが、同じ端末の数字を数か月単位で比べるのは意味があります。

  • Web ADB Toolkit

    デバイスのダッシュボード、shell ドロワー、その他すべての Web ADB ツール。

  • Android Debloater

    バックグラウンドで電池を消費するプリインストールアプリを削除します。

  • Android Storage Analyzer

    端末の容量を何が占めているかを見て、空き容量を増やします。