Android sistem durumu

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

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

Android 11, android.hardware.health HAL 2.1'i içerir. Bu, health@2.0 HAL'den küçük bir sürüm yükseltmesidir. Bu yeni HAL'in avantajları şunlardı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'i 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'e (Android 11'de yayınlandı) veya 6'ya (Android 12'de yayınlandı) 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 başlatılmayan 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 kullanıma sunulmayan 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 sırasında çalışan yürütülebilir dosya.
recovery
Pil bilgilerini alması gereken, kurtarma modunda çalışan 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ı

Şekil 1. Sağlık HIDL HAL 2.1 altyapısı.

Android 13'te Sağlık

Android 13'te health AIDL HAL tanıtıldı. Şekil 2'de sağlık bileşeninin işleyiş şekli ayrıntılı olarak açıklanmaktadır:

Health AIDL HAL altyapısı

Şekil 2. Health 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 uygulanması, devralınan registerCallback ve unregisterCallback işlevleri için @2.1::IHealthInfoCallback'ı desteklemek üzere gereklidir. Yeni geri çağırma arayüzü, devralınan healthInfoChanged işlevi yerine healthInfoChanged_2_1 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ı

Şekil 3. 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. Cihaz kapalıyken şarj etme özelliğini düzgün bir şekilde uygulamak için şarj cihazı konusuna bakın.
  • StorageAttribute türü ve ilgili alanlar kullanılmadıkları için kaldırılır.
  • chargerDockOnline, yerleştirme istasyonuyla ş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'sini uygulama başlıklı makaleyi inceleyin.

Kurtarma

Android 13, kurtarma modunda binder'ı destekler. Kurtarma bölümüne Health AIDL hizmetini yüklemek, 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ğıdakilere bakın:

Şarj cihazı

Kapalıyken şarj etme işlevi /system konumundan /vendor konumuna taşındı. Android 13 ile kullanıma sunulan cihazlar, kapalıyken şarjı destekliyorsa HAL hizmeti ikili dosyası şarj cihazı modunu desteklemelidir. Bunu yapmak için şarj cihazı uygulama başlıklı makaleyi inceleyin.

Şarj cihazı sistem özellikleri

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