Android 9, health@1.0 HAL'den önemli bir sürüm yükseltmesi olan android.hardware.health
HAL 2.0'ı içerir. Bu yeni HAL aşağıdaki avantajlara sahiptir:
- Çerçeve ve satıcı kodu arasında daha temiz ayrım.
- Gereksiz
healthd
arka plan programını kullanımdan kaldırır. - Sağlık bilgisi raporlarında satıcının kişiselleştirilmesi için daha fazla özgürlük derecesi.
- Pilden daha fazla cihaz sağlığı bilgisi.
Android 11, health@2.0 HAL'in küçük bir sürüm yükseltmesi olan android.hardware.health
HAL 2.1'i içerir. Bu yeni HAL aşağıdaki avantajlara sahiptir:
- Uygulaması daha kolay
- Mevcut 2.0 HAL API'leriyle daha iyi uyumluluk
- Kapalı mod şarj kodunda daha iyi Tiz ayrımı
- Cihazın pil sağlığını gösteren çerçeveye daha iyi destek
Android 13, health@2.1 HAL'den bir dönüşüm olan android.hardware.health
AIDL HAL'i içerir. Bu yeni HAL aşağıdaki avantajlara sahiptir:
- Şarj cihazıyla ilgili kullanılmayan API'leri kaldırın
- Kullanılmayan
StorageAttribute
ve ilgili alanları kaldırın - Bağlantı istasyonu şarjını destekleyin.
Gereksinimler
Android 9 ve Android 10 çalıştıran cihazlar
Android 9 ile başlatılan cihazların 2.x HAL sağlaması gerekir (ve 1.0 HAL sağlamaması gerekir) veya AIDL HAL. Android 9 ile başlatılmayan ancak satıcı imajını Target Framework Uyumluluk Matrisi Sürüm 3'e (Android 9'da yayımlanan) güncellemeyi planlayan cihazların mevcut 1.0 HAL uygulamalarını kaldırması ve 2.x HAL veya AIDL HAL sağlaması gerekir.
AOSP, 2.0 HAL'i ve eski 1.0 HAL'den geçişi uygulamanıza yardımcı olmak için tasarlanmış çok sayıda yardımcı kitaplık içerir.
Android 11 ve Android 12 çalıştıran cihazlar
Android 11 ile başlatılan cihazların 2.1 HAL sağlaması gerekir (ve 1.0 veya 2.0 HAL sağlamaması gerekir) veya AIDL HAL. Android 11 ile başlatılmayan ancak satıcı görüntüsünü Target Framework Uyumluluk Matrisi Sürüm 5'e (Android 11'de yayınlandı) güncellemeyi planlayan cihazların mevcut 2.0 HAL uygulamalarını kaldırması ve 2.1 HAL veya AIDL HAL sağlaması gerekir. Android 11 ile başlatılmayan ve satıcı görselini güncellemeyi planlamayan cihazların da 2.1 HAL sağlaması önerilir.
AOSP, 2.1 HAL'i ve eski 1.0 HAL'den geçişi uygulamanıza yardımcı olmak için tasarlanmış çok sayıda yardımcı kitaplık içerir.
Android 13 ve sonraki sürümleri çalıştıran cihazlar
Android 13 ile başlatılan cihazların AIDL HAL sağlaması gerekir (ve HIDL HAL sağlamaması gerekir). Android 13 ile başlatılmayan ancak satıcı görüntüsünü Target Framework Uyumluluk Matrisi Sürüm 7'ye (Android 13'te yayınlandı) güncellemeyi planlayan cihazların mevcut HIDL HAL uygulamalarını kaldırması ve AIDL HAL sağlaması gerekir. Android 13 ile başlatılmayan ve satıcı imajını güncellemeyi planlamayan cihazların da AIDL HAL sağlaması önerilir.
Cihazlar HIDL 1.0 HAL'yi sağlamamalıdır.
AOSP, AIDL HAL'i ve eski HIDL HAL'lerden geçişi uygulamanıza yardımcı olmak için tasarlanmış çok sayıda yardımcı kitaplık içerir.
Terminoloji
- health@1.0 :
android.hardware.health@1.0
kısaltmasıdır. Android 8.0'da yayımlanan sağlık HIDL HAL sürüm 1.0'ı ifade eder. - health@2.0 :
android.hardware.health@2.0
kısaltmasıdır. Android 9'da yayınlanan sağlık HIDL HAL sürüm 2.0'ı ifade eder. - health@2.1 :
android.hardware.health@2.1
kısaltmasıdır. Android 11'de yayınlanan sağlık HIDL HAL sürüm 2.1'i ifade eder. - sağlık AIDL HAL :
android.hardware.health
kısaltması.- Sürüm 1, Android 13'te yayınlandı.
- şarj cihazı : telefonun şarj animasyonunu görüntüleyen, kapalı mod şarjında çalışan yürütülebilir dosya.
- kurtarma : pil bilgilerini alması gereken, kurtarma modunda çalışan yürütülebilir dosya.
- healthd : Android'de çalışan, sağlıkla ilgili bilgileri alan ve bunları çerçeveye sağlayan eski arka plan programı.
- depolanan : Android'de çalışan ve depolama bilgilerini alan ve bunu çerçeveye sağlayan arka plan programı.
Android 8.x'te sağlık
Android 8.x'te sistem durumu bileşeni aşağıdaki şemada ayrıntılı olarak açıklandığı şekilde çalışır:
Şekil 1 . Android 8.x'te sağlık
Bu diyagramda:
- Bir (1) bağlayıcı çağrısı ve bir (1) hwbinder çağrısı, çerçeve tarafından donanımla iletişim kurmak için kullanılır.
-
healthd
statik olaraklibhealthd_android
,libbatterymonitor
velibbatteryservice
bağlanır. - health@1.0-impl statik olarak
libhealthd. BOARD
.
Her kurul farklı bir libhealthd. BOARD
; Şarj cihazının, health@1.0-impl'in ve kurtarma bağlantısının hangisi olduğu derleme sırasında belirlenir.
Diğer modlar için:
Şekil 2. Android 8.x'te sağlık, kapalı mod şarjı ve kurtarma modu
- şarj cihazı
libhealthd. BOARD
,libhealthd_charger
velibbatterymonitor
. - kurtarma statik olarak
libhealthd. BOARD
velibbatterymonitor
.
Android 9'da sağlık
Android 9'da sağlık bileşeni aşağıdaki şemada ayrıntılı olarak açıklandığı şekilde çalışır:
Figür 3 . Android 9'da sağlık
Çerçeve hwservicemanager
health@2.0 hizmetini almaya çalışır. Başarısız olursa, health@1.0'ı (Android 8.x'te) arar. Eski kod yolu korunur, böylece Android 9 sistem görüntüsü Android 8.x satıcı görüntüsüyle uyumlu olur. Cihazda yalnızca bir hizmet sürümü (1.0 veya 2.0) mevcut olabileceğinden, çerçeve her iki HAL'den de bilgi almaz.
Diğer modlar için:
Şekil 4. Android 9'da sağlık, kapalı mod şarjı ve kurtarma modu
Android 11'de sağlık
Android 11'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) ] |
+-------------------------------------+
Sistem durumu 2.1 uygulaması mevcut değilse, sistem önceki bölümlerde açıklandığı gibi eski kod yoluna geri döner.
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 5. Sağlık HAL 2.1 altyapısı
Android 13'te sağlık
Android 13'te sağlık AIDL HAL tanıtıldı. Sağlık bileşeni aşağıdaki diyagramda ayrıntılı olarak açıklandığı şekilde çalışır:
Şekil 6. Sağlık AIDL HAL altyapısı
HIDL HAL arayüzü 2.0
health@2.0 HAL, çerçeveye eski healthd arka plan programıyla aynı işlevselliği sağlar. Aynı zamanda daha önce bağlayıcı hizmet olarak sağlanan sağlık hizmetine benzer API'ler de sağlar (ör. IBatteryPropertiesRegistrar ).
Ana arayüz IHealth aşağıdaki işlevleri sağlar:
-
registerCallback
,IBatteryPropertiesRegistrar.registerListener
yerine geçmek için -
unregisterCallback
,IBatteryPropertiesRegistrar.unregisterListener
yerine geçmek için -
IBatteryPropertiesRegistrar.scheduleUpdate
yerini alacakupdate
-
IBatteryPropertiesRegistrar.getProperties
aşağıdaki şekilde değiştirildi:-
getChargeCounter
-
getCurrentNow
-
getCurrentAverage
-
getCapacity
-
getEnergyCounter
-
getChargeStatus
-
getHealthInfo
-
Ek olarak IHealth
, satıcıya özel depolamayla ilgili bilgileri almak için storaged
için aşağıdaki yeni API'leri sağlar:
-
getStorageInfo
-
getDiskStats
Yeni bir yapı olan @2.0::HealthInfo
, geri aramalar ve getHealthInfo
aracılığıyla döndürülür. Bu yapı, aşağıdakiler dahil olmak üzere health@2.0 HAL aracılığıyla kullanılabilen tüm cihaz sağlığı bilgilerini içerir:
- Şarj bilgileri (AC/USB/kablosuz, akım, voltaj vb.)
- Pil bilgileri (varlığı, pil seviyesi, akım, voltaj, şarj, teknoloji vb.)
- Depolama bilgileri (depolama cihazı bilgileri, disk istatistikleri)
Sağlık hizmeti 2.0'ın uygulanması hakkında bilgi için bkz. Sağlık 2.0'ın Uygulanması .
HIDL HAL arayüzü 2.1
health@2.1 HAL, kapalı mod şarjını destekler ve pil hakkında daha fazla bilgi sağlar.
Ana arayüz IHealth aşağıdaki ek işlevleri sağlar
-
getHealthConfig
: bu HAL'ın yapılandırmasını almak için -
getHealthInfo_2_1
:getHealthInfo
küçük bir sürüm yükseltmesi -
shouldKeepScreenOn
: ekranın şarj cihazı modunda açık tutulması gerekip gerekmediğini belirlemek için
Ek olarak, @2.1::IHealth
uygulanması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 healthInfoChanged
işlevini kullanarak istemciye sağlık durumu bilgilerini döndürür.
Yeni bir yapı olan @2.1::HealthInfo
, geri aramalar ve getHealthInfo_2_1
yoluyla döndürülür. Bu yapı, health@2.0 HAL aracılığıyla erişilebilen ek cihaz durumu bilgilerini içerir:
- Pil kapasitesi seviyesi
- Pilin şu an tam şarj olma süresi (saniye cinsinden)
- Pilin tam şarjlı tasarım kapasitesi (μAh cinsinden)
Sistem durumu HAL uygulamasına yararlı sınıflar için aşağıdaki UML şemasına bakın:
Şekil 7. Sağlık HAL 2.1 UML diyagramı
Sağlık hizmeti 2.1'in uygulanmasına ilişkin bilgi için bkz. Sağlık 2.1'in Uygulanması .
AIDL HAL arayüzü sürüm 1
API değişiklikleri
AIDL sürüm 1 HAL, HIDL 2.1 HAL'a benzer API'leri destekler. HIDL 2.1 arayüzüyle karşılaştırıldığında API'de aşağıdakiler değişir:
- HIDL HAL 2.1'de tanıtılan şarj cihazıyla ilgili API'ler, AIDL HAL'e taşınmaz. Kapalı mod şarjının işlevselliği yalnızca
/vendor
bölümünde geçerli olduğundan, Satıcı Arayüzünde API'ler gerekli değildir. Kapalı mod şarjını düzgün bir şekilde uygulamak için aşağıdaki şarj cihazına bakın. -
StorageAttribute
yazın ve ilgili alanlar kullanılmadığı için kaldırılır. -
chargerDockOnline
dock şarjını desteklemek içinHealthInfo
eklendi.
Uygulama
Sistem durumu HAL uygulamasına yararlı sınıflar için aşağıdaki UML şemasına bakın:
Şekil 8. Sağlık AIDL HAL UML diyagramı
Sağlık AIDL hizmetinin uygulanması hakkında bilgi için bkz. Sağlık AIDL HAL'in Uygulanması .
İyileşmek
Android 13, kurtarma işleminde bağlayıcıyı destekler. Health AIDL hizmetinin kurtarma işlemine yüklenmesi, hizmetin kurtarma modunda çalışmasına olanak tanır.
Kurtarmaya yönelik sağlık AIDL hizmetini yükleme hakkında bilgi için aşağıdakilere bakın:
Şarj cihazı
Kapalı mod şarjının işlevselliği /system
/vendor
taşındı. Android 13 ile başlatılan cihazlar için kapalı modda şarjı destekliyorlarsa HAL hizmeti ikili programının şarj cihazı modunu desteklemesi gerekir. Bunu yapmak için şarj cihazının uygulanmasına bakın.
Şarj cihazı sistemi özellikleri
ro.charger.*
özellikleri artık /vendor
içindeki charger
ikili programı tarafından okunamaz. Cihazınızda ro.charger.*
sistem özelliklerinden herhangi biri ayarlanmışsa, şarj cihazı için sistem özelliklerine bakın.