Android sistem sağlığı

Android 13, health@2.1 HAL'den dönüştürülmüş android.hardware.health AIDL HAL'i içerir. Bu yeni HAL'in avantajları şunlardır:

  • Kullanılmayan şarj cihazıyla ilgili API'leri kaldırma
  • Kullanılmayan StorageAttribute ve ilgili alanları kaldırma
  • Şarj istasyonunda şarjı destekler.

Android 11, health@2.0 HAL'den küçük bir sürüm yükseltmesi olan android.hardware.health HAL 2.1'i içerir. Bu yeni HAL'in avantajları şunlardır:

  • Çerçeve ile tedarikçi kodu arasında daha net bir ayrım.
  • Sağlık bilgileri raporlarında tedarikçi firma özelleştirmesi için daha fazla özgürlük derecesi.
  • Yalnızca pilden daha fazla cihaz sağlığı bilgisi.

Health 2.1 HAL'i uygulamayla ilgili dokümanlar bu sayfada referans olarak verilmiştir.

Şartlar

Bu bölümde Android 11, 12 ve 13 veya sonraki sürümlerle ilgili şartlar yer almaktadır.

Android 11 ve Android 12 çalıştıran cihazlar

Android 11 ve 12 ile kullanıma sunulan cihazlar 2.1 HAL veya AIDL HAL'i sağlamalıdır. Android 11 veya 12 ile kullanıma sunulmayan ancak tedarikçi firma resmini Hedef Çerçeve Uyumluluk Matrisi 5. sürümü (Android 11'de kullanıma sunuldu) veya 6. sürümü (Android 12'de kullanıma sunuldu) ile güncellemeyi planlayan cihazlar, mevcut 2.0 HAL uygulamalarını kaldırıp 2.1 HAL veya AIDL HAL sağlamalıdır. Android 11 ile başlatılmayan ve tedarikçi firma imajını güncellemeyi planlamayan cihazlarda da 2.1 veya AIDL HAL'in sağlanması önerilir.

AOSP, 2.1 HAL'i uygulamanıza ve eski HIDL HAL'lerden geçiş yapmanıza yardımcı olmak için tasarlanmış birden fazla yardımcı kitaplık içerir.

Android 13 ve sonraki sürümlerin yüklü olduğu cihazlar

Android 13 ile kullanıma sunulan cihazlar AIDL HAL'i sağlamalıdır (HIDL HAL sağlamamalıdır). Android 13 ile kullanıma sunulmayan ancak tedarikçi firma resmini Hedef Çerçeve Uyumluluk Matrisi 7 sürümü (Android 13'te yayınlandı) ile güncellemeyi planlayan cihazlar, mevcut HIDL HAL uygulamalarını kaldırıp AIDL HAL'i sağlamalıdır. Android 13 ile kullanıma sunulmayan ve tedarikçi firma resminin güncellenmesi planlanmayan cihazlarda da AIDL HAL'in sağlanması önerilir.

AOSP, AIDL HAL'i ve eski HIDL HAL'lerden geçişi uygulamanıza yardımcı olmak için tasarlanmış birden fazla yardımcı kitaplık içerir.

Terminoloji

Android sistem sağlığı dokümanının geri kalanını okumadan önce bilmeniz gereken terimler aşağıda verilmiştir:

health@2.1
android.hardware.health@2.1 kısaltması. Sağlık HIDL'nin 1. sürümü Android 11'de kullanıma sunuldu.
health AIDL HAL
android.hardware.health kısaltması. Sağlık AIDL HAL'inin 1. sürümü Android 13'te yayınlandı.
şarj cihazı
Kapalı modda şarj edilirken çalışan ve telefon şarj animasyonu gösteren yürütülebilir dosya.
recovery
Kurtarma modunda çalışan ve pil bilgilerini alması gereken yürütülebilir dosya.
storaged
Depolama bilgilerini alan ve çerçeveye sağlayan daemon.

Android 11 ve 12'de Sağlık

Android 11 ve 12'de sağlık bileşeni aşağıdaki şemada ayrıntılı olarak açıklandığı şekilde çalışır:

[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)      ] |
+-------------------------------------+

Diğer modlar için:

[       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)      ] |
+-------------------------------------+

Farklı modlar için aşağıdaki basitleştirilmiş şemaya bakın:

Health HIDL HAL 2.1 altyapısı

Şekil 1. Health HIDL HAL 2.1 altyapısı.

Android 13'te Sağlık

Android 13'te sağlık AIDL HAL kullanıma sunulmuştur. Şekil 2'de sağlık bileşeninin işleyiş şekli ayrıntılı olarak gösterilmiştir:

Health AIDL HAL altyapısı

Şekil 2. Health AIDL HAL altyapısı.

HIDL HAL arayüzü 2.1

health@2.1 HAL, kapalı modda şarjı destekler ve pil hakkında daha fazla bilgi sağlar.

Ana arayüz olan IHealth, aşağıdaki ek işlevleri sağlar:

  • getHealthConfig: bu HAL'in yapılandırmasını almak için
  • getHealthInfo_2_1: getHealthInfo sürümüne küçük bir yükseltme
  • shouldKeepScreenOn: Şarj cihazı modunda ekranın açık tutulup tutulmayacağını belirlemek için

Ayrıca, devralınan registerCallback ve unregisterCallback işlevleri için @2.1::IHealthInfoCallback'ü desteklemek üzere @2.1::IHealth'ün uygulanması gerekir. Yeni geri çağırma arayüzü, devralınan healthInfoChanged işlevi yerine healthInfoChanged_2_1 işlevini kullanarak istemciye sağlık bilgilerini döndürür.

Yeni bir yapı (@2.1::HealthInfo) geri çağrılar ve getHealthInfo_2_1 kullanılarak döndürülür. Bu yapı, health@2.0 HAL aracılığıyla kullanılabilen ek cihaz sağlığı bilgilerini içerir. Örneğin:

  • Pil kapasitesi seviyesi
  • Pilin şu anda tamamen dolana kadar şarj olma süresi (saniye cinsinden)
  • Pilin tam şarj tasarım kapasitesi (μAh cinsinden)

Şekil 3'te, sağlık HAL uygulaması için yararlı sınıfların UML diyagramı gösterilmektedir:

Health 2.1 HAL UML şeması

Şekil 3. Health HAL 2.1 UML şeması.

Health 2.1 hizmetini uygulama hakkında bilgi edinmek için Health 2.1'i uygulama başlıklı makaleyi inceleyin.

AIDL HAL arayüzü sürümü 1

Bu bölümde, AIDL HAL arayüzü sürüm 1 ile ilgili bilgiler yer almaktadır.

API değişiklikleri

AIDL sürüm 1 HAL, HIDL 2.1 HAL'e benzer API'leri destekler. HIDL 2.1 arayüzüne kıyasla API'de aşağıdakiler değiştirilmiştir:

  • HIDL HAL 2.1'de kullanıma sunulan, şarj cihazıyla ilgili API'ler AIDL HAL'e taşınmamıştır. Kapalı modda şarj işlevi yalnızca /vendor bölümünde bulunduğundan Tedarikçi Arayüzü'ndeki API'ler gerekli değildir. Kapalı modda şarjı düzgün şekilde uygulamak için şarj cihazı bölümüne bakın.
  • StorageAttribute türü ve ilgili alanlar kullanılmadıkları için kaldırılır.
  • chargerDockOnline, HealthInfo'a eklenerek şarj istasyonunda şarj etme özelliği desteklenir.

Uygulama

Şekil 4'te, sağlık AIDL HAL uygulaması için yararlı sınıfların UML diyagramı gösterilmektedir:

Health AIDL HAL UML şeması

Şekil 4. Health AIDL HAL UML diyagramı.

Health AIDL hizmetini uygulama hakkında bilgi edinmek için Health AIDL HAL'i uygulama başlıklı makaleyi inceleyin.

Kurtarma

Android 13, kurtarma işleminde bağlayıcıyı destekler. Health AIDL hizmetini kurtarma moduna yüklemek, hizmetin kurtarma modunda çalışmasını sağlar.

Health AIDL hizmetini kurtarma bölümüne yükleme hakkında bilgi edinmek için aşağıdakileri inceleyin:

Şarj cihazı

Kapalı modda şarj işlevi /system'ten /vendor'e taşındı. Android 13 ile kullanıma sunulan ve kapalı modda şarjı destekleyen cihazlarda HAL hizmet ikilisi, şarj cihazı modunu desteklemelidir. Bunu yapmak için şarj cihazını uygulama bölümüne bakın.

Şarj cihazı sistem özellikleri

ro.charger.* özellikleri artık /vendor'deki charger ikili dosyası tarafından okunamıyor. Cihazınızda ro.charger.* sistem özelliklerinden herhangi biri ayarlanmışsa şarj cihazı için sistem özelliklerine bakın.