Android 9, android.hardware.health
HAL 2.0,
Health@1.0 HAL'den ana sürüm yükseltmesi. Bu yeni HAL şunlara sahiptir:
avantajları:
- Çerçeve ile tedarikçi kodu arasında daha net bir ayırma.
- Gereksiz
healthd
arka plan programını kullanımdan kaldırır. - Durum bilgilerinde tedarikçinin özelleştirilmesi için daha fazla serbestlik derecesi raporlar.
- Pil bilgisinden daha fazla cihaz sağlığı bilgisi.
Android 11, android.hardware.health
HAL 2.1 sürümünü içerir.
Health@2.0 HAL'den küçük bir sürüm güncellemesi. Bu yeni HAL şunlara sahiptir:
avantajları:
- Uygulaması daha kolaydır
- Mevcut 2.0 HAL API'leriyle daha iyi uygunluk
- Çevrimdışı modda şarj kodunda daha iyi Tiz ayırma
- Cihazın pil sağlığını göstermek için çerçeve için daha iyi destek cihaz
Android 13 android.hardware.health
AIDL HAL,
Health@2.1 HAL'den dönüşüm. Bu yeni HAL şunlara sahiptir:
avantajları:
- Şarj cihazıyla ilgili kullanılmayan API'leri kaldırın
- Kullanılmayan
StorageAttribute
ve ilgili alanları kaldırın - Yuvadan şarj etme desteği.
Gereksinimler
Android 9 ve Android 10 yüklü cihazlar
Android 9 ile kullanıma sunulan cihazlar 2.x sürümünü sağlamalıdır HAL (ayrıca 1.0 HAL içermemelidir) veya AIDL HAL. Başlatılmayan cihazlar Ancak Android 9 ile birlikte satıcı görüntüsünü güncellemeyi planlıyorlar. Hedef Çerçeve Uyumluluk Matrisi Sürüm 3'e (Android 9'da yayınlandı) mevcut 1.0 HAL uygulamalarını kaldırmalı ve 2.x HAL veya AIDL HAL'yi sağlayın.
AOSP, 2.0 sürümünü uygulamanıza yardımcı olmak üzere tasarlanmış birden çok yardımcı kitaplık içerir. HAL ve eski 1.0 HAL sürümünden geçiş.
Android 11 ve Android 12 yüklü cihazlar
Android 11 ile kullanıma sunulan cihazlar 2.1 sürümünü sağlamalıdır HAL (ve 1.0 veya 2.0 HAL içermemelidir) veya AIDL HAL. Şu cihazları değil: Android 11 ile kullanıma sunulacak ancak Hedef Çerçeve Uyumluluk Matrisi Sürüm 5'e (sürüm 5'te yayınlandı) Android 11), mevcut 2.0 HAL sürümünü kaldırmalıdır ve 2.1 HAL veya AIDL HAL'yi sunmalıdır. Başlatılmayan cihazlar ve satıcıyı güncellemeyi planlamamak 2.1 HAL'yi sağlaması da önerilir.
AOSP, 2.1 sürümünü uygulamanıza yardımcı olmak üzere tasarlanmış birden çok yardımcı kitaplık içerir. HAL ve eski 1.0 HAL sürümünden geçiş.
Android 13 ve sonraki sürümleri çalıştıran cihazlar
Android 13 ile kullanıma sunulan cihazlar AIDL sağlamalıdır HAL (ve HIDL HAL sağlanmamalıdır). Android 13 ile kullanıma sunulmayan ancak tedarikçi firma görüntüsünü Target (hedef) olarak güncellemeyi planlayan cihazlar Çerçeve Uyumluluk Matrisi Sürüm 7 (Android 13'te kullanıma sunulmuştur), mevcut HIDL HAL uygulamalarını kaldırmalı ve AIDL HAL'yi sağlayın. Android 13 ile kullanıma sunulmayan ve tedarikçi resmini güncellemeyi planlamayan cihazlar da AIDL HAL'nin sağlanması önerilir.
Cihazlar, HIDL 1.0 HAL'yi sunmamalıdır.
AOSP, AIDL'yi uygulamanıza yardımcı olmak için tasarlanmış birden çok yardımcı kitaplık içerir HAL ve eski HIDL HAL'lerden geçiş.
Terminoloji
- health@1.0:
android.hardware.health@1.0
ifadesinin kısaltması. Anlamı Android 8.0'da yayınlanan sağlık HIDL HAL 1.0 sürümü - health@2.0:
android.hardware.health@2.0
ifadesinin kısaltması. Anlamı Health HIDL HAL sürüm 2.0 Android 9'da yayınlandı. - health@2.1:
android.hardware.health@2.1
ifadesinin kısaltması. Anlamı Health HIDL HAL sürüm 2.1, Android 11'de yayınlandı. - health AIDL HAL:
android.hardware.health
ifadesinin kısaltması.- Sürüm 1, Android 13'te kullanıma sunuldu.
- şarj cihazı: çevrimdışı modda çalışan ve telefon şarjı animasyonu.
- recovery: pili alması gereken, kurtarma modunda çalışan yürütülebilir dosya ekleyebilirsiniz.
- healthd: Android'de çalışan ve sağlıkla ilgili bilgileri alan eski arka plan programı ve çerçeveye sunar.
- storaged: Android'de çalışan ve depolama alanı bilgilerini alan arka plan programı ve çerçeveye sağlar.
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ığı şekilde çalışır:
1. Şekil. Android 8.x'te Sağlık
Bu şemada:
- Bir (1) bağlayıcı çağrısı ve bir (1) hwbinder çağrısı, çerçeve tarafından iletişim kurmalarına yardımcı olur.
healthd
,libhealthd_android
,libbatterymonitor
ve bağlantılarına statik olarak bağlantı verir.libbatteryservice
.- Health@1.0-impl, şunlara statik olarak bağlantı verir:
libhealthd.BOARD
Her pano farklı bir libhealthd.BOARD
özelleştirebilir;
derleme sırasında şarj cihazı, Health@1.0-impl ve kurtarma bağlantısının
.
Diğer modlar için:
Şekil 2. Android 8.x'te Sağlık, çevrimdışı mod şarj ve kurtarma modu.
- şarj cihazı statik olarak
libhealthd.BOARD
cihazına bağlanır,libhealthd_charger
velibbatterymonitor
. - kurtarma işlemi statik olarak
libhealthd.BOARD
velibbatterymonitor
.
Android 9'da sağlık
Android 9'da sağlık bileşeni ayrıntılı şekilde çalışır aşağıdaki şemada verilmiştir: .
3. Şekil. Android 9'da Sağlık.
Çerçeve, hwservicemanager
kaynağından Health@2.0 hizmetini 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 uyumlu olduğu,
Android 8.x tedarikçi firma görüntüsü. Çerçeve, sistem tarafından oluşturulan
Cihazda yalnızca bir hizmet sürümü (1.0 veya 2.0) bulunabileceğinden, her iki HAL'yi de ayrı ayrı kullanamazsınız.
Diğer modlar için:
4.Şekil Android 9'da Sağlık, çevrimdışı modda şarj ve kurtarma modu.
Android 11'de sağlık
Android 11'de sağlık bileşeni ayrıntılı şekilde çalışır aşağıdaki şemada verilmiştir:
[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) ] |
+-------------------------------------+
Health 2.1 uygulaması mevcut değilse sistem önceki bölümlerde açıklandığı gibi eski kod yolu
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:
5. Şekil. Health HAL 2.1 altyapısı.
Android 13'te sağlık
Android 13'te AIDL HAL sağlığı kullanıma sunuldu. İlgili içeriği oluşturmak için kullanılan sağlık bileşeni aşağıdaki şemada ayrıntılı olarak açıklandığı şekilde çalışır:
6. Şekil. Sağlık AIDL HAL altyapısı.
HIDL HAL arayüzü 2.0
Health@2.0 HAL, çerçevede eskiyle aynı işlevselliği sağlar. durumundaki arka plan programı. Ayrıca, bağlayıcı hizmet (ör. IBatteryPropertiesRegistrar).
Ana arayüz, IHealth , aşağıdaki işlevleri sağlar:
registerCallback
, değiştirilecekIBatteryPropertiesRegistrar.registerListener
unregisterCallback
, değiştirilecekIBatteryPropertiesRegistrar.unregisterListener
IBatteryPropertiesRegistrar.scheduleUpdate
yerineupdate
IBatteryPropertiesRegistrar.getProperties
aşağıdaki şekilde değiştirilmiştir:getChargeCounter
getCurrentNow
getCurrentAverage
getCapacity
getEnergyCounter
getChargeStatus
getHealthInfo
Buna ek olarak IHealth
, storaged
için aşağıdaki yeni API'leri sağlar:
sağlayıcıya özgü depolama alanıyla ilgili bilgileri alma:
getStorageInfo
getDiskStats
Geri çağırma işlevleri ve getHealthInfo
aracılığıyla yeni bir struct (@2.0::HealthInfo
) döndürülür.
Bu struct, health@2.0 üzerinden kullanılabilen tüm cihaz sağlık bilgilerini içerir
Aşağıdakiler dahil HAL:
- Şarj bilgileri (AC/USB/kablosuz, akım, voltaj vb.)
- Pil bilgileri (varlık, pil seviyesi, akım, voltaj, şarj, teknoloji vb.)
- Depolama alanı bilgileri (depolama cihazı bilgileri, disk istatistikleri)
Health Service 2.0'ın uygulanması hakkında bilgi edinmek için bkz. Health 2.0'ı Uygulama.
HIDL HAL arayüzü 2.1
Health@2.1 HAL, kapalı modda şarjı destekler ve daha fazla bilgi sağlar. pille ilgili.
Ana arayüz, IHealth, aşağıdaki ek işlevleri sağlar
getHealthConfig
: Bu HAL yapılandırmasını almak içingetHealthInfo_2_1
:getHealthInfo
sürümüne alt sürüm yükseltmesishouldKeepScreenOn
: ekranın şurada açık tutulup tutulmayacağını belirler: şarj cihazı modu
Ayrıca, @2.1::IHealth
@2.1::IHealthInfoCallback
, devralınan registerCallback
ve
unregisterCallback
işlev. Yeni geri çağırma arayüzü, sağlık durumu döndürür
yerine healthInfoChanged_2_1
işlevini kullanarak istemci bilgi
devralınan healthInfoChanged
işlevi.
Geri çağırma işlevleriyle yeni bir struct (@2.1::HealthInfo
) döndürülür ve
getHealthInfo_2_1
. Bu struct, ek cihaz sağlığı bilgileri içerir
Health@2.0 HAL üzerinden kullanılabilir. Aşağıdakiler dahil:
- Pil kapasitesi düzeyi
- Şu anda pilin tamamen şarj olma süresi (saniye cinsinden)
- Pil tam şarj tasarımı kapasitesi (μAh cinsinden)
Sağlık HAL uygulaması açısından yararlı olan sınıflar için aşağıdaki UML diyagramına bakın:
7.Şekil Health HAL 2.1 UML diyagramı.
Sağlık hizmeti 2.1 sürümünün uygulanması hakkında bilgi edinmek için Sağlık 2.1'i Uygulama.
AIDL HAL arayüzü sürüm 1
API değişiklikleri
AIDL sürüm 1 HAL, HIDL 2.1 HAL'ye benzer API'leri destekler. Şuna kıyasla: HIDL 2.1 arayüzünde, API'de aşağıdakiler değiştirilmiştir:
- HIDL HAL 2.1'de kullanıma sunulan şarj cihazıyla ilgili API'ler AIDL'ye taşınmaz
HAL. Çünkü mod dışı şarj işlevi yalnızca
/vendor
bölümü, Tedarikçi Firma Arayüzündeki API'ler gerekli değil. Alıcı: kapalı mod şarjını düzgün şekilde uygulamanız gerekir. Aşağıdaki şarj cihazına bakın. StorageAttribute
türü ve ilgili alanlar şu nedenle kaldırıldı: kullanılmıyor.- Yuvanın şarj edilmesi için
chargerDockOnline
,HealthInfo
cihazına eklendi.
Uygulama
Sağlık HAL uygulaması açısından yararlı olan sınıflar için aşağıdaki UML diyagramına bakın:
8. Şekil. Health AIDL HAL UML diyagramı.
Health AIDL hizmetinin uygulanması hakkında bilgi edinmek için bkz. Health AIDL HAL'yi uygulama.
Kurtarma
Android 13, kurtarma işleminde bağlayıcıyı destekler. " Kurtarma işlemi için Health AIDL hizmeti, hizmetin kurtarma modunda çalışmasına izin verir.
Health AIDL hizmetinin kurtarma işlemine yüklenmesi hakkında bilgi edinmek için bkz. takip etmek için:
Şarj cihazı
Mod dışı şarj işlevi, /system
modundan /vendor
değerine taşındı. Örneğin,
Android 13'ü destekleyen cihazlar (Android 13)
kapalı modda şarj oluyorsa, HAL hizmeti ikili programı, şarj cihazı modunu desteklemelidir. Bunun için,
referans
şarj cihazını devreye sokma.
Şarj cihazı sistemi özellikleri
ro.charger.*
özellikleri artık charger
ikili programı tarafından okunamıyor
/vendor
. Cihazınızda ro.charger.*
sistem özelliklerinden biri ayarlanmışsa
referans
şarj cihazıyla ilgili sistem özellikleri'ni tıklayın.