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:
Ş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:
Ş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çingetHealthInfo_2_1
:getHealthInfo
sürümüne küçük bir yükseltmeshouldKeepScreenOn
: Ş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:
Ş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:
Ş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.