Android 13 มี android.hardware.health AIDL HAL
ซึ่งแปลงมาจาก health@2.1 HAL HAL ใหม่นี้มีข้อดีดังนี้
- นำ API ที่เกี่ยวข้องกับเครื่องชาร์จที่ไม่ได้ใช้ออก
- นำ
StorageAttributeและฟิลด์ที่เกี่ยวข้องที่ไม่ได้ใช้ออก - รองรับการชาร์จบนแท่น
Android 11 มี android.hardware.health HAL 2.1
ซึ่งเป็นการอัปเกรดเวอร์ชันย่อยจาก health@2.0 HAL HAL ใหม่นี้มีข้อดีดังนี้
- การแยกโค้ดเฟรมเวิร์กและโค้ดของผู้ให้บริการที่ชัดเจนยิ่งขึ้น
- มีอิสระมากขึ้นสำหรับผู้ให้บริการในการปรับแต่งรายงานข้อมูลด้านสุขภาพ
- ข้อมูลประสิทธิภาพการทำงานของอุปกรณ์มากกว่าแค่แบตเตอรี่
เอกสารประกอบสำหรับการติดตั้งใช้งาน Health 2.1 HAL อยู่ในหน้านี้เพื่อใช้อ้างอิง
ข้อกำหนด
ส่วนนี้มีข้อกำหนดสำหรับ Android 11, 12 และ 13 ขึ้นไป
อุปกรณ์ที่ใช้ Android 11 และ Android 12
อุปกรณ์ที่เปิดตัวพร้อม Android 11 และ 12 ต้องมี HAL 2.1 หรือ HAL ของ AIDL อุปกรณ์ที่ไม่ได้ เปิดตัวด้วย Android 11 หรือ 12 แต่มีแผนที่จะอัปเดต อิมเมจของผู้ให้บริการเป็นเมทริกซ์ความเข้ากันได้ของเฟรมเวิร์กเป้าหมายเวอร์ชัน 5 (เปิดตัวใน Android 11) หรือ 6 (เปิดตัวใน Android 12) ต้องนำการติดตั้งใช้งาน HAL 2.0 ที่มีอยู่ออกและระบุ HAL 2.1 หรือ AIDL HAL นอกจากนี้ เรายังแนะนำให้อุปกรณ์ที่ไม่ได้เปิดตัวพร้อม Android 11 และไม่มีแผนที่จะอัปเดตอิมเมจของผู้ให้บริการ ให้ใช้ HAL 2.1 หรือ AIDL ด้วย
AOSP มีไลบรารีตัวช่วยหลายรายการที่ออกแบบมาเพื่อช่วยคุณใช้ HAL 2.1 และเปลี่ยนจาก HIDL HAL แบบเดิม
อุปกรณ์ที่ใช้ Android 13 ขึ้นไป
อุปกรณ์ที่เปิดตัวพร้อม Android 13 ต้องมี AIDL HAL (และต้องไม่มี HIDL HAL) อุปกรณ์ที่ไม่ได้เปิดตัวพร้อม Android 13 แต่มีแผนที่จะอัปเดตรูปภาพของผู้ให้บริการเป็น Target Framework Compatibility Matrix เวอร์ชัน 7 (เปิดตัวใน Android 13) ต้องนำการติดตั้งใช้งาน HIDL HAL ที่มีอยู่ออกและ ระบุ AIDL HAL นอกจากนี้ เรายังแนะนำให้อุปกรณ์ที่ไม่ได้เปิดตัวพร้อม Android 13 และไม่มีแผนที่จะอัปเดตรูปภาพของผู้ให้บริการให้ใช้ AIDL HAL ด้วย
AOSP มีไลบรารีตัวช่วยหลายรายการที่ออกแบบมาเพื่อช่วยคุณติดตั้งใช้งาน AIDL HAL และเปลี่ยนจาก HIDL HAL แบบเดิม
คำศัพท์
ต่อไปนี้คือคำศัพท์ที่คุณควรรู้ก่อนอ่านเอกสารประกอบเกี่ยวกับสถานะของระบบ Android ส่วนที่เหลือ
- health@2.1
- ตัวย่อของ
android.hardware.health@2.1เวอร์ชัน 1 ของ HIDL ด้านสุขภาพ ได้รับการเผยแพร่ใน Android 11 - health AIDL HAL
- ตัวย่อของ
android.hardware.healthHAL ของ AIDL ด้านสุขภาพเวอร์ชัน 1 ได้รับการเผยแพร่ใน Android 13 - ที่ชาร์จ
- ไฟล์ปฏิบัติการที่ทำงานในโหมดการชาร์จขณะปิดเครื่องซึ่งแสดงภาพเคลื่อนไหวการชาร์จโทรศัพท์
- การกู้คืน
- ไฟล์ปฏิบัติการที่ทำงานในโหมดการกู้คืนซึ่งต้องดึงข้อมูลแบตเตอรี่
- storaged
- Daemon ที่ดึงข้อมูลพื้นที่เก็บข้อมูลและส่งไปยังเฟรมเวิร์ก
สุขภาพใน Android 11 และ 12
ใน Android 11 และ 12 คอมโพเนนต์ด้านสุขภาพจะทำงานตามที่แสดงใน ไดอะแกรมต่อไปนี้
[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) ] |
+-------------------------------------+
สำหรับโหมดอื่นๆ ให้ทำดังนี้
[ 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) ] |
+-------------------------------------+
ดูแผนภาพแบบย่อต่อไปนี้สำหรับโหมดต่างๆ
รูปที่ 1 โครงสร้างพื้นฐานของ Health HIDL HAL 2.1
สุขภาพใน Android 13
ใน Android 13 มีการเปิดตัว HAL ของ AIDL ด้านสุขภาพ รูปที่ 2 แสดงรายละเอียดวิธีการทำงานของ คอมโพเนนต์ด้านสุขภาพ
รูปที่ 2 โครงสร้างพื้นฐานของ AIDL HAL ด้านสุขภาพ
อินเทอร์เฟซ HIDL HAL 2.1
HAL health@2.1 รองรับการชาร์จในโหมดปิดและให้ข้อมูลเพิ่มเติม เกี่ยวกับแบตเตอรี่
อินเทอร์เฟซหลักของ IHealth มีฟังก์ชันเพิ่มเติมดังนี้
getHealthConfig: เพื่อดึงข้อมูลการกำหนดค่าของ HAL นี้getHealthInfo_2_1: การอัปเกรดเวอร์ชันย่อยเป็นgetHealthInfoshouldKeepScreenOn: เพื่อพิจารณาว่าควรเปิดหน้าจอไว้ในโหมด เครื่องชาร์จหรือไม่
นอกจากนี้ คุณต้องติดตั้งใช้งาน @2.1::IHealth เพื่อรองรับ
@2.1::IHealthInfoCallback สำหรับฟังก์ชัน registerCallback และ
unregisterCallback ที่สืบทอดมา อินเทอร์เฟซ Callback ใหม่จะแสดงข้อมูลประสิทธิภาพกลับไปยังไคลเอ็นต์โดยใช้ฟังก์ชัน healthInfoChanged_2_1 แทนฟังก์ชัน healthInfoChanged ที่รับช่วงมา
ระบบจะแสดงโครงสร้างใหม่ @2.1::HealthInfo โดยใช้การเรียกกลับและ
getHealthInfo_2_1 โครงสร้างนี้มีข้อมูลประสิทธิภาพการทำงานของอุปกรณ์เพิ่มเติม
ซึ่งพร้อมใช้งานผ่าน HAL ของ health@2.0 รวมถึงข้อมูลต่อไปนี้
- ระดับความจุแบตเตอรี่
- เวลาในการชาร์จแบตเตอรี่จนเต็มในตอนนี้ (เป็นวินาที)
- ความจุแบตเตอรี่ที่ออกแบบไว้สำหรับการชาร์จจนเต็ม (ในหน่วย μAh)
รูปที่ 3 แสดงแผนภาพ UML ของคลาสที่มีประโยชน์ต่อการใช้งาน HAL ด้านสุขภาพ
รูปที่ 3 แผนภาพ UML ของ Health HAL 2.1
ดูข้อมูลเกี่ยวกับการติดตั้งใช้งานบริการด้านสุขภาพ 2.1 ได้ที่การติดตั้งใช้งาน Health 2.1
เวอร์ชันอินเทอร์เฟซ AIDL HAL 1
ส่วนนี้ประกอบด้วยข้อมูลเกี่ยวกับอินเทอร์เฟซ AIDL HAL เวอร์ชัน 1
การเปลี่ยนแปลง API
HAL เวอร์ชัน 1 ของ AIDL รองรับ API ที่คล้ายกับ HAL 2.1 ของ HIDL เมื่อเทียบกับ อินเทอร์เฟซ HIDL 2.1 จะมีการเปลี่ยนแปลงต่อไปนี้ใน API
- API ที่เกี่ยวข้องกับเครื่องชาร์จซึ่งเปิดตัวใน HIDL HAL 2.1 จะไม่ได้รับการพอร์ตไปยัง AIDL
HAL เนื่องจากฟังก์ชันการชาร์จในโหมดปิดจะอยู่ในพาร์ติชัน
/vendorเท่านั้น จึงไม่จำเป็นต้องใช้ API ใน Vendor Interface หากต้องการ ใช้การชาร์จในโหมดปิดอย่างถูกต้อง โปรดดูที่ชาร์จ - ระบบจะนำประเภท
StorageAttributeและฟิลด์ที่เกี่ยวข้องออกเนื่องจากไม่ได้ใช้งาน - เพิ่ม
chargerDockOnlineในHealthInfoเพื่อรองรับการชาร์จบนแท่น
การใช้งาน
รูปที่ 4 แสดงแผนภาพ UML ของคลาสที่มีประโยชน์ต่อการใช้งาน HAL ของ AIDL ด้านสุขภาพ
รูปที่ 4 แผนภาพ UML ของ HAL สำหรับ AIDL ด้านสุขภาพ
ดูข้อมูลเกี่ยวกับการใช้งานบริการ AIDL ด้านสุขภาพได้ที่ การใช้งาน HAL ของ AIDL ด้านสุขภาพ
การกู้คืน
Android 13 รองรับ Binder ในการกู้คืน การติดตั้งบริการ Health AIDL ใน Recovery Mode จะช่วยให้บริการดังกล่าวทำงานใน Recovery Mode ได้
ดูข้อมูลเกี่ยวกับการติดตั้งบริการ AIDL ด้านสุขภาพในการกู้คืนได้ที่หัวข้อต่อไปนี้
ที่ชาร์จ
ฟังก์ชันการชาร์จในโหมดปิดจะย้ายจาก /system ไปยัง /vendor สำหรับอุปกรณ์ที่เปิดตัวพร้อม Android 13 หากรองรับการชาร์จในโหมดปิด ไบนารีของบริการ HAL ต้องรองรับโหมดเครื่องชาร์จ โดยดูวิธีการได้ที่การติดตั้งใช้งานเครื่องชาร์จ
พร็อพเพอร์ตี้ของระบบที่ชาร์จ
ไบนารี charger ใน /vendor จะอ่านพร็อพเพอร์ตี้ ro.charger.* ไม่ได้อีกต่อไป หากอุปกรณ์มีการตั้งค่าro.charger.*พร็อพเพอร์ตี้ของระบบ โปรดดูพร็อพเพอร์ตี้ของระบบสำหรับที่ชาร์จ