本頁說明 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 以下版本 |
---|---|---|
分享螢幕畫面 | 否 | 是 |
狀態 | 未知 | 充電中 |
剩餘容量 | 0 分 | 100% |
健康 | 未知 | 良好 |
AC 充電器線上狀態 | 未修改 | 強制設為 true |
製造商可以透過核心變更預設設定 power_supply 或 Health HAL。
Android 9 以上版本
Android 9 會移除先前的部分的無電池耗電程式碼 裝置預設使用電池供電,目前充電時間為 100%,搭配正常溫度讀數,身體狀況良好 熱敏式
處理這類資訊的大多數架構 API 都會繼續處理常見的 與先前相同:系統視為 充電 (也就是未於電池供電),因此不會納入考量 電池電力不足的情況下如果使用者介面繪製電池圖示, 畫面中還會顯示驚嘆號,而電池電量百分比會顯示為 0%。 但裝置不會因電量不足而關機,且會排定需要充電或電量充足的工作。
Android 8.1 以下版本
由於電池狀態不明,Android 架構 API 會將系統視為「充電中」(或不使用電池電力運作),而不會視為電量不足。如果使用者介面顯示電池圖示,則會顯示驚嘆號,電池百分比則會顯示為 0%。但因為電量偏低,裝置不會關閉 需要充電,或電池電力充足。
實作
Android 9 預設程式碼可能會在您的裝置上正常運作,但建議您如上所述,修改核心或 HAL,以便準確反映產品的電源和電池狀態。如果 Android 9 以上版本未偵測到 Linux 電源供應器 類別 充電器裝置,根據預設,所有充電器類型 (AC、USB、Wireless) 都會使用 離線狀態。如果所有充電器都離線,但沒有電池裝置 仍會視為充電狀態 裝置是在外部運作,而非電池供電 (如上所述)。
如果產品沒有電池,且始終連接至電源,建議您為 AC 或 USB 電源實作 Linux 核心 power_supply 類別 charger 驅動程式,將其 online sysfs
屬性設為 true
。你也可以在 Health HAL 中設定 AC 充電器線上房源
設定裝置存取權如要實作 Health HAL,請按照實作
Health 2.0,
這個自訂 Health HAL 實作自訂版本的 Health::getHealthInfo()
,用於修改 BatteryProperties.chargerAcOnline = true
的值。
請先複製檔案
hardware/interfaces/health/2.0/default/Health.cpp
進行您自己的 Health HAL 實作,並根據健康狀態 2.0 修改
README 檔案。