Android 13 inclut la couche d'abstraction matérielle AIDL android.hardware.health, une conversion de la couche d'abstraction matérielle health@2.1. Cette nouvelle couche d'abstraction matérielle présente les avantages suivants :
- Suppression des API inutilisées liées au chargeur
- Suppression de
StorageAttributeet des champs associés inutilisés - Prise en charge de la recharge sur station d'accueil
Android 11 inclut la couche d'abstraction matérielle android.hardware.health 2.1, une version mineure de la couche d'abstraction matérielle health@2.0. Cette nouvelle couche d'abstraction matérielle présente les avantages suivants :
- Séparation plus claire entre le framework et le code du fournisseur
- Plus grande liberté de personnalisation par le fournisseur dans les rapports d'informations sur la santé
- Plus d'informations sur la santé de l'appareil que la batterie uniquement
La documentation sur l'implémentation de la couche d'abstraction matérielle Health 2.1 est disponible sur cette page à titre de référence.
Conditions requises
Cette section contient les conditions requises pour Android 11, 12 et 13 ou version ultérieure.
Appareils équipés d'Android 11 et d'Android 12
Les appareils lancés avec Android 11 et 12 doivent fournir la couche d'abstraction matérielle 2.1 ou la couche d'abstraction matérielle AIDL. Les appareils qui ne sont pas lancés avec Android 11 ou 12, mais qui prévoient de mettre à jour l'image du fournisseur vers la version 5 (publiée dans Android 11) ou 6 (publiée dans Android 12) de la matrice de compatibilité du framework cible, doivent supprimer les implémentations existantes de la couche d'abstraction matérielle 2.0 et fournir la couche d'abstraction matérielle 2.1 ou la couche d'abstraction matérielle AIDL. Il est également recommandé aux appareils qui ne sont pas lancés avec Android 11 et qui ne prévoient pas de mettre à jour l'image du fournisseur de fournir la couche d'abstraction matérielle 2.1 ou la couche d'abstraction matérielle AIDL.
AOSP inclut plusieurs bibliothèques d'assistance conçues pour vous aider à implémenter la couche d'abstraction matérielle 2.1 et à passer des anciennes couches d'abstraction matérielle HIDL.
Appareils équipés d'Android 13 et version ultérieure
Les appareils lancés avec Android 13 doivent fournir la couche d'abstraction matérielle AIDL (et ne doivent pas fournir la couche d'abstraction matérielle HIDL). Les appareils qui ne sont pas lancés avec Android 13, mais qui prévoient de mettre à jour l'image du fournisseur vers la version 7 (publiée dans Android 13) de la matrice de compatibilité du framework cible, doivent supprimer les implémentations existantes de la couche d'abstraction matérielle HIDL et fournir la couche d'abstraction matérielle AIDL. Il est également recommandé aux appareils qui ne sont pas lancés avec Android 13 et qui ne prévoient pas de mettre à jour l'image du fournisseur de fournir la couche d'abstraction matérielle AIDL.
AOSP inclut plusieurs bibliothèques d'assistance conçues pour vous aider à implémenter la couche d'abstraction matérielle AIDL et à passer des anciennes couches d'abstraction matérielle HIDL.
Terminologie
Voici les termes que vous devez connaître avant de lire le reste de la documentation sur la santé du système Android :
- health@2.1
- Abréviation de
android.hardware.health@2.1. La version 1 de la couche d'abstraction matérielle HIDL Health a été publiée dans Android 11. - Couche d'abstraction matérielle AIDL Health
- Abréviation de
android.hardware.health. La version 1 de la couche d'abstraction matérielle AIDL Health a été publiée dans Android 13. - Chargeur
- Exécutable s'exécutant en mode de recharge hors tension qui affiche l'animation de recharge du téléphone.
- Récupération
- Exécutable s'exécutant en mode de récupération qui doit récupérer les informations sur la batterie.
- storaged
- Daemon qui récupère les informations de stockage et les fournit au framework.
Santé dans Android 11 et 12
Dans Android 11 et 12, le composant de santé fonctionne comme indiqué dans le schéma suivant :
[system]
| getService()
V
[health@2.1-service]
| getService(stub=true)
V
[ health@2.0-impl-2.1-<device>.so ]
| | (device-dependent linkage)
V V
+---------Helper libs for impl--------+ [libhealthd.device]
| [libhealthloop (uevent, wakealarm)] |
| [libhealth2impl (IHealth impl) ] |
| [libbatterymonitor (battery) ] |
+-------------------------------------+
Pour les autres modes :
[ charger ]
| getService() | (legacy code path)
V +-------------------------------------------------+
[health@2.1-service] |
| getService(stub=true) |
V |
[ health@2.0-impl-2.1-<device>.so ] |
| | (device-dependent linkage) |
V V |
+---------Helper libs for impl--------+ [libhealthd.device] |
| [libhealthloop (uevent, wakealarm)] | |
| [libhealth2impl (IHealth impl) ] | <---------------------------------+
| [libbatterymonitor (battery) ] |
+-------------------------------------+
[recovery]
| getService() w/o hwservicemanager
V
[ health@2.0-impl-2.1-<device>.so ]
| | (device-dependent linkage)
V V
+---------Helper libs for impl--------+ [libhealthd.device]
| [libhealthloop (uevent, wakealarm)] |
| [libhealth2impl (IHealth impl) ] |
| [libbatterymonitor (battery) ] |
+-------------------------------------+
Consultez le schéma simplifié suivant pour les différents modes :
Figure 1. Infrastructure de la couche d'abstraction matérielle HIDL Health 2.1.
Santé dans Android 13
Dans Android 13, la couche d'abstraction matérielle AIDL Health est introduite. La figure 2 explique le fonctionnement du composant de santé :
Figure 2. Infrastructure de la couche d'abstraction matérielle AIDL Health.
Interface de la couche d'abstraction matérielle HIDL 2.1
La couche d'abstraction matérielle health@2.1 est compatible avec la recharge hors tension et fournit plus d'informations sur la batterie.
L'interface principale, IHealth, fournit les fonctions supplémentaires suivantes :
getHealthConfig: pour récupérer la configuration de cette couche d'abstraction matériellegetHealthInfo_2_1: mise à niveau de version mineure degetHealthInfoshouldKeepScreenOn: pour déterminer si l'écran doit rester allumé en mode chargeur
De plus, l'implémentation de @2.1::IHealth est requise pour prendre en charge
@2.1::IHealthInfoCallback pour ses fonctions registerCallback et
unregisterCallback héritées. La nouvelle interface de rappel renvoie des informations sur la santé au client à l'aide de sa fonction healthInfoChanged_2_1 au lieu de la fonction healthInfoChanged héritée.
Une nouvelle structure, @2.1::HealthInfo, est renvoyée à l'aide de rappels et de getHealthInfo_2_1. Cette structure contient des informations supplémentaires sur la santé de l'appareil disponibles via la couche d'abstraction matérielle health@2.0, y compris :
- Niveau de capacité de la batterie
- Temps de recharge de la batterie jusqu'à pleine charge (en secondes)
- Capacité de conception de la batterie à pleine charge (en μAh)
La figure 3 montre un diagramme UML des classes utiles à l'implémentation de la couche d'abstraction matérielle Health :
Figure 3. Diagramme UML de la couche d'abstraction matérielle Health 2.1.
Pour en savoir plus sur l'implémentation du service Health 2.1, consultez Implémenter Health 2.1.
Interface de la couche d'abstraction matérielle AIDL version 1
Cette section contient des informations sur l'interface de la couche d'abstraction matérielle AIDL version 1.
Modifications apportées à l'API
La couche d'abstraction matérielle AIDL version 1 est compatible avec des API similaires à celles de la couche d'abstraction matérielle HIDL 2.1. Par rapport à l'interface HIDL 2.1, les éléments suivants sont modifiés dans l'API :
- Les API liées au chargeur introduites dans la couche d'abstraction matérielle HIDL 2.1 ne sont pas portées vers la couche d'abstraction matérielle AIDL. Étant donné que la fonctionnalité de recharge hors tension ne réside que sur la partition
/vendor, les API de l'interface du fournisseur ne sont pas nécessaires. Pour implémenter correctement la recharge hors tension, consultez la section Chargeur. - Le type
StorageAttributeet les champs associés sont supprimés, car ils ne sont pas utilisés. chargerDockOnlineest ajouté àHealthInfopour prendre en charge la recharge sur station d'accueil.
Implémentation
La figure 4 montre un diagramme UML des classes utiles à l'implémentation de la couche d'abstraction matérielle AIDL Health :
Figure 4. Diagramme UML de la couche d'abstraction matérielle AIDL Health.
Pour en savoir plus sur l'implémentation du service AIDL Health, consultez Implémenter la couche d'abstraction matérielle AIDL Health.
Récupération
Android 13 est compatible avec Binder en mode de récupération. L'installation du service AIDL Health en mode de récupération lui permet de s'exécuter dans ce mode.
Pour en savoir plus sur l'installation du service AIDL Health en mode de récupération, consultez les ressources suivantes :
- Utiliser l'exemple de service de couche d'abstraction matérielle AIDL Health
- Modifications apportées au système de compilation
Chargeur
La fonctionnalité de recharge hors tension est déplacée de /system vers /vendor. Pour les appareils lancés avec Android 13, s'ils sont compatibles avec la recharge hors tension, le binaire du service de couche d'abstraction matérielle doit être compatible avec le mode chargeur. Pour ce faire,
consultez la section
Implémenter le chargeur.
Propriétés système du chargeur
Le binaire charger dans
/vendor ne peut plus lire les propriétés ro.charger.*. Si votre appareil comporte l'une des propriétés système ro.charger.*,
consultez
Propriétés système du chargeur.