Android 9, health@1.0 HAL'den büyük 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 bilgileri raporlarında satıcı özelleştirmesi için daha fazla serbestlik derecesi.
- Yalnızca pilden daha fazla cihaz sağlığı bilgisi.
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 aşağıdaki avantajlara sahiptir:
- Uygulaması daha kolay
- Mevcut 2.0 HAL API'leri ile daha iyi uyumluluk
- Kapalı modda şarj kodunda daha iyi Tiz ayrımı
- Cihazın pil sağlığını gösteren çerçeve için daha iyi destek
Android 13, health@2.1 HAL'den bir dönüşüm olan android.hardware.health
AIDL HAL'ı 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 - Destek yuvası şarjı.
Gereksinimler
Android 9 ve Android 10 çalıştıran cihazlar
Android 9 ile başlatılan aygıtlar, 2.x HAL'ı sağlamalıdır (ve 1.0 HAL'ı sağlamamalıdır) veya AIDL HAL'ı sağlamalıdır. Android 9 ile başlatılmayan ancak satıcı görüntüsünü Target Framework Uyumluluk Matrisi Sürüm 3'e (Android 9'da yayınlandı) güncellemeyi planlayan cihazlar, mevcut 1.0 HAL uygulamalarını kaldırmalı ve 2.x HAL veya AIDL HAL sağlamalıdır.
AOSP, 2.0 HAL'i ve eski 1.0 HAL'den geçişi uygulamanıza yardımcı olmak için tasarlanmış birden çok yardımcı kitaplık içerir.
Android 11 ve Android 12 çalıştıran cihazlar
Android 11 ile başlatılan cihazlar, 2.1 HAL'ı sağlamalıdır (ve 1.0 veya 2.0 HAL'i sağlamamalıdır) veya AIDL HAL'ı sağlamalıdır. 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, mevcut 2.0 HAL uygulamalarını kaldırmalı ve 2.1 HAL veya AIDL HAL 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 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ış birden çok yardımcı kitaplık içerir.
Android 13 ve sonraki sürümleri çalıştıran cihazlar
Android 13 ile başlatılan cihazlar AIDL HAL sağlamalıdır (ve HIDL HAL sağlamamalıdır). 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, mevcut HIDL HAL uygulamalarını kaldırmalı ve AIDL HAL'ı 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 sağlaması önerilir.
Cihazlar HIDL 1.0 HAL sağlamamalıdır.
AOSP, AIDL HAL'ı ve eski HIDL HAL'lerinden geçişi uygulamanıza yardımcı olmak için tasarlanmış birden çok yardımcı kitaplık içerir.
terminoloji
- sağlık@1.0 :
android.hardware.health@1.0
kısaltması . Android 8.0'da yayınlanan sağlık HIDL HAL sürüm 1.0'ı ifade eder. - sağlık@2.0 :
android.hardware.health@2.0
kısaltması . Android 9'da yayınlanan sağlık HIDL HAL sürüm 2.0'ı ifade eder. - sağlık@2.1 :
android.hardware.health@2.1
kısaltması . 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ı : telefon şarj animasyonunu görüntüleyen, kapalı modda şarjda çalıştırılabilir 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 çerçeveye sağlayan eski arka plan programı.
- storaged : Android'de çalışan, depolama bilgilerini alan ve çerçeveye sağlayan arka plan programı.
Android 8.x'te Sağlık
Android 8.x'te sağlık bileşeni, aşağıdaki şemada ayrıntılı olarak açıklandığı gibi çalışır:
Şekil 1 . Android 8.x'te Sağlık
Bu şemada:
- Bir (1) bağlayıcı çağrısı ve bir (1) hwbinder çağrısı, donanımla iletişim kurmak için çerçeve tarafından kullanılır.
-
healthd
,libhealthd_android
,libbatterymonitor
velibbatteryservice
statik olarak bağlanır. - Health@1.0-impl, libhealthd'ye statik olarak
libhealthd. BOARD
.
Her pano farklı bir libhealthd. BOARD
; hangi şarj cihazının, sağlık@1.0-impl'nin ve kurtarma bağlantısının oluşturulduğu yapım sırasında belirlenir.
Diğer modlar için:
Şekil 2. Android 8.x'te sağlık, mod dışı ş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ığı gibi çalışır:
Şekil 3 . Android 9'da Sağlık
Çerçeve, sağlık@2.0 hizmetini hwservicemanager
almaya çalışır. Başarısız olursa, health@1.0'a çağrı yapar (Android 8.x'te). Eski kod yolu, Android 9 sistem görüntüsünün Android 8.x satıcı görüntüsüyle uyumlu olması için korunur. Aygıtta yalnızca bir hizmet sürümü (1.0 veya 2.0) bulunabileceğinden, çerçeve her iki HAL'den de bilgi almaz.
Diğer modlar için:
Şekil 4. Android 9'da sağlık, mod dışı ş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ığı gibi ç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) ] |
+-------------------------------------+
Sağlık 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) ] |
+-------------------------------------+
tutucu2 l10n-yer[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 şemada ayrıntılı olarak açıklandığı gibi çalışır:
Şekil 6. Health AIDL HAL altyapısı
HIDL HAL arayüzü 2.0
Health@2.0 HAL, çerçeveye eski sağlıklı arka plan programı ile aynı işlevselliği sağlar. Ayrıca, daha önce bir bağlayıcı hizmeti olarak sağlanmış olana benzer API'ler sağlar (örneğin, IBatteryPropertiesRegistrar ).
Ana arayüz, IHealth , aşağıdaki işlevleri sağlar:
-
registerCallback
,IBatteryPropertiesRegistrar.registerListener
yerine -
unregisterCallback
,IBatteryPropertiesRegistrar.unregisterListener
yerine -
update
,IBatteryPropertiesRegistrar.scheduleUpdate
değiştirmek için -
IBatteryPropertiesRegistrar.getProperties
aşağıdakilerle değiştirilir:-
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
@2.0::HealthInfo
adlı yeni bir yapı, 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 sağlanan tüm cihaz sağlığı bilgilerini içerir:
- Şarj bilgileri (AC/USB/kablosuz, akım, voltaj vb.)
- Pil bilgileri (varlık, pil seviyesi, akım, voltaj, şarj, teknoloji vb.)
- Depolama bilgileri (depolama cihazı bilgileri, disk istatistikleri)
Sağlık hizmeti 2.0'ı uygulama hakkında bilgi için, bkz. Sağlık 2.0'ı Uygulama .
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, IHealth , aşağıdaki ek işlevleri sağlar
-
getHealthConfig
: bu HAL'nin yapılandırmasını almak için -
getHealthInfo_2_1
:getHealthInfo
küçük bir sürüm yükseltmesi -
shouldKeepScreenOn
: ekranın şarj modunda açık tutulması gerekip gerekmediğini belirlemek için
Ek olarak, @2.1::IHealth
uygulanması, devralınan registerCallback
ve unregisterCallback
işlevleri için @2.1::IHealthInfoCallback
desteklemek için gereklidir. Yeni geri arama arabirimi, devralınan healthInfoChanged
işlevi yerine healthInfoChanged_2_1
işlevini kullanarak istemciye sağlık durumu bilgilerini döndürür.
@2.1::HealthInfo
adlı yeni bir yapı, geri aramalar ve getHealthInfo_2_1
aracılığıyla döndürülür. Bu yapı, aşağıdakiler dahil olmak üzere, health@2.0 HAL aracılığıyla sağlanan ek cihaz sağlığı bilgilerini içerir:
- Pil kapasitesi seviyesi
- Pil şarj süresi şimdi doluyor (saniye cinsinden)
- Pil tam şarjlı tasarım kapasitesi (μAh cinsinden)
Sağlık HAL uygulaması için yararlı olan sınıflar için aşağıdaki UML diyagramına bakın:
Şekil 7. Sağlık HAL 2.1 UML diyagramı
Sağlık hizmeti 2.1'in uygulanması hakkında bilgi için, bkz. Sağlık Hizmetinin Uygulanması 2.1 .
AIDL HAL arabirimi 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ü ile karşılaştırıldığında, API'de aşağıdakiler değiştirilir:
- HIDL HAL 2.1'de sunulan şarj cihazıyla ilgili API'ler, AIDL HAL'e taşınmaz. Kapalı modda şarj etme işlevi yalnızca
/vendor
bölümünde bulunduğundan, Satıcı Arabirimindeki API'ler gerekli değildir. Kapalı modda şarjı doğru şekilde uygulamak için aşağıdaki şarj cihazına bakın. -
StorageAttribute
türü ve ilgili alanlar, kullanılmadıkları için kaldırılmıştır. - Dock şarjını desteklemek için
HealthInfo
şarjchargerDockOnline
eklendi.
uygulama
Sağlık HAL uygulaması için yararlı olan sınıflar için aşağıdaki UML diyagramına bakın:
Şekil 8. Health AIDL HAL UML diyagramı
Sağlık AIDL hizmetini uygulama hakkında bilgi için bkz. Health AIDL HAL'i Uygulama .
Kurtarma
Android 13, kurtarma işleminde bağlayıcıyı destekler. Health AIDL hizmetini kurtarmaya yüklemek, kurtarma modunda çalışmasına olanak tanır.
Sağlık AIDL hizmetini kurtarmaya yükleme hakkında bilgi için aşağıdakilere bakın:
Şarj cihazı
Kapalı modda şarj etme işlevi /system'den /system
/vendor
taşınır. Android 13 ile başlatılan cihazlar için, mod dışında şarjı destekliyorlarsa, HAL hizmeti ikili dosyasının şarj modunu desteklemesi gerekir. Bunu yapmak için, şarj cihazının uygulanmasına bakın.
Şarj sistemi özellikleri
ro.charger.*
özellikleri artık /vendor
içindeki charger
ikili dosyası tarafından okunamaz. Cihazınızda ro.charger.*
sistem özelliklerinden herhangi biri varsa, şarj cihazı için sistem özelliklerine bakın.