Google は、黒人コミュニティに対する人種平等の促進に取り組んでいます。取り組みを見る

電池非搭載デバイスをサポートする

このページでは、取り外し可能な電池を搭載した製品や内蔵電池がない製品に Android がどのように対応するかについて説明します。内蔵電池がないデバイスは、電池の代わりに AC 電源コンセントや別のデバイスの USB ポートなど、外部電源に接続されます。

電池搭載の有無

アプリケーションで次のコードを使用することで、デバイスに電池が搭載されているかを検出できます。

```
    final Intent batteryInfo = registerReceiver(null, new
    IntentFilter(Intent.ACTION_BATTERY_CHANGED));

    return batteryInfo.getBooleanExtra(BatteryManager.EXTRA_PRESENT, true);
    ```
    

電池非搭載デバイスの動作

Android が製品の電池デバイスを検出しなかった場合、電池に関する次のデフォルト値が使用されます。Android 9 リリースではデフォルトが変更されていることにご注意ください。変更点は次の表の通りです。

電池の状態 Android 9 以降 Android 8.1 以前
Present false true
Status unknown charging
Remaining capacity 0 100%
Health unknown good
AC charger online status 変更なし 強制的に true

メーカーはカーネル power_supply ドライバか Health HAL を使用してデフォルト設定を変更できます。

Android 9 以降

Android 9 では、電池非搭載デバイス用のいくつかの古いコードが削除されています。このコードはデフォルトで、電池が搭載されて 100% 充電されており、電池の状態が良好でサーミスタの読み取り値も通常の温度であることを示していました。

この情報を処理するほとんどの Android framework API は、以前と同じように一般的な状況の処理を続けます。システムは充電中と見なされ(つまり、電池によって作動していない)、電池残量が少なくなっているとは見なされません。ユーザー インターフェースで電池アイコンが表示される場合は、感嘆符付きで表示され、電池残量の割合は 0% と表示されます。ただし、電池残量が少ないことでデバイスがシャットダウンすることはなく、充電や良好な電池を必要とするジョブもスケジュールされます。

Android 8.1 以前

電池のステータスが不明なため、Android framework API ではシステムは充電中である(または、電池の電力で動作していない)と見なされ、電池残量が少なくなっているとは見なされません。ユーザー インターフェースで電池アイコンが表示される場合は、感嘆符付きで表示され、電池残量の割合は 0% と表示されます。ただし、電池残量が少ないことでデバイスがシャットダウンすることはなく、充電や良好な電池を必要とするジョブもスケジュールされます。

実装

Android 9 のデフォルトのコードはお使いのデバイスで正しく動作する場合がありますが、上記のように製品の電池や電池ステータスを正確に反映させるには、カーネルや HAL を変更することをおすすめします。Android 9 以降で Linux power supply class の充電器が検出されない場合、デフォルトではすべての充電器タイプ(AC、USB、ワイヤレス)のステータスがオフラインになります。すべての充電器がオフラインになっていて電池デバイスが検出されない場合、前述のように電池の電力ではなく外部電源で作動しているという意味において、充電中と見なされます。

製品に電池が搭載されておらず、常に電源に接続されている場合は、Linux カーネルの power_supply class、charger ドライバを実装することをおすすめします。このドライバは AC 電源または USB 電源用で、online sysfs属性を true に設定します。または、デバイスの Health HAL で AC 充電器のオンライン プロパティを設定することもできます。設定するには、Health 2.0 の実装にある説明に沿って Health HAL を実装します。

このカスタム Health HAL は Health::getHealthInfo() の値を変更する BatteryProperties.chargerAcOnline = true のカスタム バージョンを実装します。

開始するにはお持ちの Health HAL 実装に hardware/interfaces/health/2.0/default/Health.cpp ファイルをコピーし、Health 2.0 READMEに沿ってファイルを変更してください。