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
StorageAttributeve 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.1kısaltması. Sağlık HIDL'sinin 1. sürümü Android 11'de yayınlandı.- health AIDL HAL
android.hardware.healthkı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:
Ş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:
Ş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çingetHealthInfo_2_1:getHealthInfosürümüne küçük bir güncellemeshouldKeepScreenOn: Ş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:
Ş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
/vendorbö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. StorageAttributetürü ve ilgili alanlar kullanılmadıkları için kaldırılır.chargerDockOnline, yerleştirme istasyonuyla şarjı desteklemek içinHealthInfo'ye eklenir.
Uygulama
Şekil 4'te, sağlık AIDL HAL uygulaması için yararlı olan sınıfların UML diyagramı gösterilmektedir:
Ş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.