Google setzt sich dafür ein, die Rassengerechtigkeit für schwarze Gemeinschaften zu fördern. Siehe wie.
Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Android Gesundheit

Android 9 enthält android.hardware.health HAL 2.0, ein Hauptversions-Upgrade von health@1.0 HAL. Diese neue HAL hat folgende Vorteile:

  • Sauberere Trennung zwischen Framework- und Vendor-Code.
  • Veraltet den unnötigen healthd Daemon.
  • Größere Freiheitsgrade für die Anpassung von Anbietern in Gesundheitsinformationsberichten.
  • Mehr Informationen zum Gerätezustand als nur Batterie.

Bedarf

Geräte, die mit Android 9 gestartet werden, müssen die 2.0 HAL bereitstellen (und dürfen die 1.0 HAL nicht bereitstellen). Geräte, die nicht mit Android 9 gestartet werden, aber planen, das Herstellerimage auf Target Framework Compatibility Matrix Version 3 (veröffentlicht in Android 9) zu aktualisieren, müssen vorhandene 1.0 HAL-Implementierungen entfernen und die 2.0 HAL bereitstellen.

AOSP enthält mehrere Hilfsbibliotheken, mit denen Sie die 2.0-HAL und den Übergang von der alten 1.0-HAL implementieren können.

Terminologie

  • health@1.0 : Abkürzung für android.hardware.health@1.0 . Bezieht sich auf die Gesundheit HIDL HAL Version 1.0 in Android 8.0 veröffentlicht.
  • health@2.0 : Abkürzung für android.hardware.health@2.0 . Bezieht sich auf die Gesundheit HIDL HAL Version 2.0 in Android 9 veröffentlicht.
  • Ladegerät : Ausführbare Datei, die im Off-Mode-Modus ausgeführt wird und die Animation zum Aufladen des Telefons anzeigt.
  • Wiederherstellung : Die ausführbare Datei wird im Wiederherstellungsmodus ausgeführt und muss Batterieinformationen abrufen.
  • healthd : Legacy-Daemon, der in Android ausgeführt wird und gesundheitsbezogene Informationen abruft und dem Framework zur Verfügung stellt.
  • gespeichert : Daemon läuft unter Android und ruft Speicherinformationen ab und stellt sie dem Framework zur Verfügung.

Gesundheit in Android 8.x.

In Android 8.x funktioniert die Integritätskomponente wie in der folgenden Abbildung dargestellt:

Gesundheit in Android 8.x.

Abbildung 1 . Gesundheit in Android 8.x.

In diesem Diagramm:

  • Ein (1) Binder-Aufruf und ein (1) Hwbinder-Aufruf werden vom Framework zur Kommunikation mit Hardware verwendet.
  • healthd verknüpft statisch mit libhealthd_android , libbatterymonitor und libbatteryservice .
  • health@1.0-impl verweist statisch auf libhealthd. BOARD .

Jedes Board kann eine andere libhealthd. BOARD ; Zum Zeitpunkt der Erstellung wird festgelegt, zu welchem ​​Ladegerät, zu Health@1.0-impl und zur Wiederherstellung eine Verbindung besteht.

Für andere Modi:

Lade- und Wiederherstellungsmodus außerhalb des Modus in Android 8.x.

Abbildung 2. Zustand in Android 8.x, Lade- und Wiederherstellungsmodus außerhalb des Modus

  • Ladegerät verknüpft statisch mit libhealthd. BOARD , libhealthd_charger und libbatterymonitor .
  • Die Wiederherstellung ist statisch mit libhealthd. BOARD verknüpft libhealthd. BOARD und libbatterymonitor .

Gesundheit in Android 9

In Android 9 funktioniert die Gesundheitskomponente wie in der folgenden Abbildung dargestellt: Gesundheit in Android 9

Abbildung 3 . Gesundheit in Android 9

Das Framework versucht, den Dienst hwservicemanager vom hwservicemanager . Wenn dies fehlschlägt, wird health@1.0 (in Android 8.x) aufgerufen. Der Legacy-Codepfad wird beibehalten, sodass das Android 9-Systemabbild mit dem Android 8.x-Herstellerabbild kompatibel ist. Das Framework ruft keine Informationen von beiden HALs ab, da nur eine Dienstversion (1.0 oder 2.0) auf dem Gerät vorhanden sein kann.

Für andere Modi:

Off-Mode-Aufladung und Wiederherstellung in Android 9

Abbildung 4. Zustand in Android 9, Lade- und Wiederherstellungsmodus außerhalb des Modus

HAL-Schnittstelle

Der Health@2.0 HAL bietet dem Framework die gleiche Funktionalität wie der alte HealthD-Daemon. Es bietet auch APIs, die denen ähneln, die zuvor als Binder-Service (dh IBatteryPropertiesRegistrar ) bereitgestellt wurden .

Die Hauptschnittstelle IHealth bietet die folgenden Funktionen:

  • registerCallback , um IBatteryPropertiesRegistrar.registerListener zu ersetzen
  • unregisterCallback , um IBatteryPropertiesRegistrar.unregisterListener zu ersetzen
  • update , um IBatteryPropertiesRegistrar.scheduleUpdate zu ersetzen
  • IBatteryPropertiesRegistrar.getProperties werden durch Folgendes ersetzt:
    • getChargeCounter
    • getCurrentNow
    • getCurrentAverage
    • getCapacity
    • getEnergyCounter
    • getChargeStatus
    • getHealthInfo

Darüber hinaus bietet IHealth die folgenden neuen APIs zum storaged , um herstellerspezifische speicherbezogene Informationen abzurufen:

  • getStorageInfo
  • getDiskStats

Eine neue Struktur, @2.0::HealthInfo , wird über Rückrufe und getHealthInfo . Diese Struktur enthält alle Informationen zum Gerätezustand, die über health@2.0 HAL verfügbar sind, einschließlich:

  • Ladeinformationen (AC / USB / Wireless, Strom, Spannung usw.)
  • Batterieinformationen (Vorhandensein, Batteriestand, Strom, Spannung, Ladung, Technologie usw.)
  • Speicherinformationen (Speichergeräteinformationen, Festplattenstatistiken)

Informationen zum Implementieren des Gesundheitsdienstes finden Sie unter Implementieren des Zustands .