Android sistem durumu

Android 13, android.hardware.health AIDL HAL'yi içerir. Bu, health@2.1 HAL'den dönüştürülmüş bir HAL'dir. Bu yeni HAL'in aşağıdaki avantajları vardır:

  • Kullanılmayan şarj cihazıyla ilgili API'leri kaldırın
  • Kullanılmayan StorageAttribute ve ilgili alanları kaldırma
  • Şarj istasyonunda şarj etmeyi 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 aşağıdaki avantajları vardır:

  • Çerçeve ve satıcı kodu arasında daha net bir ayrım.
  • Sağlık bilgileri raporlarında satıcı özelleştirmesi için daha fazla serbestlik derecesi.
  • Yalnızca pil değil, cihaz sağlığıyla ilgili daha fazla bilgi.

Health 2.1 HAL'yi uygulama ile ilgili dokümanlar, referans olarak bu sayfada yer alır.

Şartlar

Bu bölümde Android 11, 12 ve 13 veya sonraki sürümler için gereksinimler yer almaktadır.

Android 11 ve Android 12'nin yüklü olduğu cihazlar

Android 11 ve 12 ile kullanıma sunulan cihazlar 2.1 HAL'yi veya AIDL HAL'yi sağlamalıdır. Android 11 veya 12 ile kullanıma sunulmayan ancak satıcı görüntüsünü Hedef Çerçeve Uyumluluk Matrisi Sürüm 5 (Android 11'de yayınlandı) ya da 6 (Android 12'de yayınlandı) olarak güncellemeyi planlayan cihazlar, mevcut 2.0 HAL uygulamalarını kaldırmalı ve 2.1 HAL veya AIDL HAL'yi sağlamalıdır. Android 11 ile kullanıma sunulmayan ve satıcı görüntüsünü güncellemeyi planlamayan cihazların da 2.1 veya AIDL HAL'yi sağlaması önerilir.

AOSP, 2.1 HAL'yi 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'ı sağlamalıdır (HIDL HAL'ı sağlamamalıdır). Android 13 ile kullanıma sunulmayan ancak satıcı görüntüsünü Target Framework Compatibility Matrix Version 7'ye (Android 13'te yayınlandı) güncellemeyi planlayan cihazlar, mevcut HIDL HAL uygulamalarını kaldırmalı ve AIDL HAL'yi sağlamalıdır. Android 13 ile başlatılmayan ve satıcı görüntüsünü güncellemeyi planlamayan cihazların da AIDL HAL'yi sağlaması önerilir.

AOSP, AIDL HAL'yi 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.

Terminoloji

Android sistem sağlığı dokümanlarının geri kalanını okumadan önce bilmeniz gereken terimler şunlardır:

health@2.1
android.hardware.health@2.1 kısaltması. Sağlık HIDL'sinin 1. sürümü Android 11'de yayınlandı.
health AIDL HAL
android.hardware.health kısaltması. Sağlık AIDL HAL'nin 1. sürümü Android 13'te yayınlandı.
charger
Telefon şarj animasyonunu gösteren, kapalı modda şarj olurken çalışan yürütülebilir dosya.
kurtarma
Kurtarma modunda çalışan ve pil bilgilerini alması gereken yürütülebilir dosya.
storaged
Depolama bilgilerini alıp çerçeveye sağlayan arka plan programı.

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ı

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

Android 13'te Sağlık

Android 13'te health AIDL HAL kullanıma sunulmuştur. Şekil 2'de sağlık bileşeninin işleyiş şekli ayrıntılı olarak açıklanmıştır:

Health AIDL HAL altyapısı

Şekil 2. Sağlık AIDL HAL altyapısı.

HIDL HAL arayüzü 2.1

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

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

  • getHealthConfig: Bu HAL'nin yapılandırmasını almak için
  • getHealthInfo_2_1: getHealthInfo sürümüne küçük bir güncelleme
  • shouldKeepScreenOn: Şarj cihazı modunda ekranın açık kalıp kalmayacağını belirlemek için

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

Geri çağırmalar ve getHealthInfo_2_1 kullanılarak yeni bir yapı (@2.1::HealthInfo) 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
  • Pil tamamen dolana kadar şarj süresi (saniye cinsinden)
  • Pil tam şarj tasarım kapasitesi (μAh cinsinden)

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

Health 2.1 HAL UML şeması

3.Şekil Health HAL 2.1 UML diyagramı.

Sağlık Hizmeti 2.1'i uygulama hakkında bilgi edinmek için Sağlık Hizmeti 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ğıdaki değişiklikler yapılmıştır:

  • HIDL HAL 2.1'de kullanıma sunulan şarj cihazıyla ilgili API'ler AIDL HAL'ye taşınmaz. Çevrimdışı modda şarj etme işlevi yalnızca /vendor bölümünde bulunduğundan, satıcı arayüzündeki API'ler gerekli değildir. Kapalı modda şarjı düzgün bir ş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, yerleştirme istasyonunda şarjı desteklemek için HealthInfo'ye eklenir.

Uygulama

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

Health AIDL HAL UML diyagramı

Şekil 4. Health AIDL HAL UML diyagramı.

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

Kurtarma

Android 13, kurtarma modunda binder'ı destekler. Kurtarma için Health AIDL hizmetinin yüklenmesi, hizmetin kurtarma modunda çalışmasına olanak tanır.

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

Şarj cihazı

Kapalıyken şarj etme işlevi /system konumundan /vendor konumuna taşındı. Android 13 ile kullanıma sunulan cihazlar, kapalı modda şarjı destekliyorsa HAL hizmeti ikili dosyası şarj cihazı modunu desteklemelidir. Bunu yapmak için şarj cihazı uygulama bölümüne bakın.

Şarj cihazı sistem özellikleri

ro.charger.* özellikleri artık /vendor içindeki charger ikilisi tarafından okunamaz. Cihazınızda ro.charger.* sistem özelliklerinden herhangi biri ayarlanmışsa şarj cihazı için sistem özellikleri bölümüne bakın.