Android 13 bao gồm android.hardware.health
AIDL HAL, một lượt chuyển đổi từ health@2.1 HAL. HAL mới này có các ưu điểm sau:
- Xoá các API liên quan đến bộ sạc không dùng đến
- Xoá
StorageAttribute
không dùng đến và các trường liên quan - Hỗ trợ sạc qua đế sạc.
Android 11 bao gồm android.hardware.health
HAL 2.1, một bản nâng cấp phiên bản nhỏ từ health@2.0 HAL. HAL mới này có các ưu điểm sau:
- Phân tách rõ ràng hơn giữa khung và mã của nhà cung cấp.
- Mức độ tự do cao hơn để nhà cung cấp tuỳ chỉnh trong báo cáo thông tin y tế.
- Thông tin khác về tình trạng thiết bị ngoài pin.
Tài liệu về cách triển khai HAL Health 2.1 có trên trang này để tham khảo.
Yêu cầu
Phần này chứa các yêu cầu đối với Android 11, 12 và 13 trở lên.
Thiết bị chạy Android 11 và Android 12
Các thiết bị chạy Android 11 và 12 phải cung cấp HAL 2.1 hoặc HAL AIDL. Các thiết bị không chạy Android 11 hoặc 12 nhưng dự định cập nhật hình ảnh nhà cung cấp lên Matrice tương thích khung mục tiêu phiên bản 5 (phát hành trong Android 11) hoặc 6 (phát hành trong Android 12) phải xoá các phương thức triển khai HAL 2.0 hiện có và cung cấp HAL 2.1 hoặc HAL AIDL. Bạn cũng nên cung cấp HAL 2.1 hoặc AIDL cho các thiết bị không chạy Android 11 và không có kế hoạch cập nhật hình ảnh của nhà cung cấp.
AOSP bao gồm nhiều thư viện trợ giúp được thiết kế để giúp bạn triển khai HAL 2.1 và chuyển đổi từ các HAL HIDL cũ.
Thiết bị chạy Android 13 trở lên
Các thiết bị chạy Android 13 phải cung cấp AIDL HAL (và không được cung cấp HIDL HAL). Những thiết bị không ra mắt bằng Android 13 nhưng dự định cập nhật hình ảnh của nhà cung cấp lên Matrice tương thích với khung mục tiêu phiên bản 7 (phát hành trong Android 13) phải xoá các phương thức triển khai HAL HIDL hiện có và cung cấp HAL AIDL. Bạn cũng nên cung cấp AIDL HAL cho các thiết bị không chạy Android 13 và không có kế hoạch cập nhật hình ảnh của nhà cung cấp.
AOSP bao gồm nhiều thư viện trợ giúp được thiết kế để giúp bạn triển khai AIDL HAL và quá trình chuyển đổi từ các HAL HIDL cũ.
Thuật ngữ
Sau đây là các thuật ngữ bạn nên biết trước khi đọc phần còn lại của tài liệu về tình trạng hệ thống Android:
- health@2.1
- Từ viết tắt của
android.hardware.health@2.1
. Phiên bản 1 của HIDL sức khoẻ đã được phát hành trong Android 11. - HAL AIDL sức khoẻ
- Từ viết tắt của
android.hardware.health
. Phiên bản 1 của HAL AIDL sức khoẻ được phát hành trong Android 13. - charger (bộ sạc)
- Tệp thực thi chạy ở chế độ sạc tắt màn hình hiển thị ảnh động sạc điện thoại.
- hồi phục
- Tệp thực thi chạy ở chế độ khôi phục phải truy xuất thông tin pin.
- đã lưu trữ
- Trình nền truy xuất thông tin bộ nhớ và cung cấp thông tin đó cho khung.
Health trong Android 11 và 12
Trong Android 11 và 12, thành phần sức khoẻ hoạt động như được mô tả chi tiết trong sơ đồ sau:
[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) ] |
+-------------------------------------+
Đối với các chế độ khác:
[ 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) ] |
+-------------------------------------+
Hãy xem sơ đồ đơn giản sau đây về các chế độ:
Hình 1. Cơ sở hạ tầng Health HIDL HAL 2.1.
Health trong Android 13
Trong Android 13, HAL AIDL sức khoẻ được giới thiệu. Hình 2 trình bày chi tiết cách hoạt động của thành phần trạng thái:
Hình 2. Cơ sở hạ tầng HAL AIDL về sức khoẻ.
Giao diện HIDL HAL 2.1
HAL health@2.1 hỗ trợ sạc ở chế độ tắt và cung cấp thêm thông tin về pin.
Giao diện chính, IHealth, cung cấp các chức năng bổ sung sau
getHealthConfig
: để truy xuất cấu hình của HAL nàygetHealthInfo_2_1
: nâng cấp phiên bản nhỏ lêngetHealthInfo
shouldKeepScreenOn
: để xác định xem có nên giữ màn hình ở chế độ sạc hay không
Ngoài ra, bạn cần triển khai @2.1::IHealth
để hỗ trợ @2.1::IHealthInfoCallback
cho các hàm registerCallback
và unregisterCallback
kế thừa. Giao diện gọi lại mới trả về thông tin trạng thái cho ứng dụng bằng cách sử dụng hàm healthInfoChanged_2_1
thay vì hàm healthInfoChanged
kế thừa.
Một cấu trúc mới, @2.1::HealthInfo
, được trả về bằng cách sử dụng lệnh gọi lại và getHealthInfo_2_1
. Cấu trúc này chứa thêm thông tin về tình trạng thiết bị thông qua HAL health@2.0, bao gồm:
- Mức dung lượng pin
- Thời gian sạc pin đến khi đầy hiện tại (tính bằng giây)
- Dung lượng thiết kế khi sạc đầy pin (tính bằng μAh)
Hình 3 cho thấy sơ đồ UML của các lớp hữu ích cho việc triển khai HAL sức khoẻ:
Hình 3. Sơ đồ UML của Health HAL 2.1.
Để biết thông tin về cách triển khai Dịch vụ sức khoẻ 2.1, hãy xem phần Triển khai Health 2.1.
Giao diện AIDL HAL phiên bản 1
Phần này trình bày thông tin về giao diện AIDL HAL phiên bản 1.
Nội dung thay đổi đối với API
AIDL phiên bản 1 HAL hỗ trợ các API tương tự như HIDL 2.1 HAL. So với giao diện HIDL 2.1, API có những thay đổi sau:
- Các API liên quan đến bộ sạc được giới thiệu trong HIDL HAL 2.1 không được chuyển sang AIDL HAL. Vì chức năng sạc ở chế độ tắt chỉ tồn tại trên phân vùng
/vendor
, nên các API trên Giao diện nhà cung cấp là không cần thiết. Để triển khai tính năng sạc ở chế độ tắt đúng cách, hãy xem phần bộ sạc. - Loại
StorageAttribute
và các trường liên quan sẽ bị xoá vì không được sử dụng. - Thêm
chargerDockOnline
vàoHealthInfo
để hỗ trợ sạc qua đế sạc.
Triển khai
Hình 4 cho thấy sơ đồ UML của các lớp hữu ích cho việc triển khai HAL AIDL sức khoẻ:
Hình 4. Sơ đồ UML HAL AIDL về sức khoẻ.
Để biết thông tin về cách triển khai dịch vụ AIDL sức khoẻ, hãy xem phần Triển khai HAL AIDL sức khoẻ.
Khôi phục
Android 13 hỗ trợ trình liên kết trong quá trình khôi phục. Việc cài đặt dịch vụ AIDL sức khoẻ vào chế độ khôi phục cho phép dịch vụ này chạy ở chế độ khôi phục.
Để biết thông tin về cách cài đặt dịch vụ AIDL sức khoẻ để khôi phục, hãy xem nội dung sau:
Bộ sạc
Chức năng sạc ở chế độ tắt được di chuyển từ /system
sang /vendor
. Đối với các thiết bị chạy Android 13, nếu hỗ trợ sạc ở chế độ tắt, tệp nhị phân dịch vụ HAL phải hỗ trợ chế độ sạc. Để thực hiện việc này, hãy tham khảo phần triển khai bộ sạc.
Thuộc tính hệ thống của bộ sạc
Tệp nhị phân charger
không còn đọc được các thuộc tính ro.charger.*
trong /vendor
nữa. Nếu thiết bị của bạn đã đặt bất kỳ thuộc tính hệ thống ro.charger.*
nào, hãy tham khảo thuộc tính hệ thống cho bộ sạc.