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:
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:
Ş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çingetHealthInfo_2_1
:getHealthInfo
sü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 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:
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ç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'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.