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 หรือ HAL ของ AIDL นอกจากนี้ เรายังแนะนำให้อุปกรณ์ที่ไม่ได้เปิดตัวพร้อมกับ Android 11 และไม่มีแผนที่จะอัปเดตอิมเมจของผู้ให้บริการ ให้ใช้ HAL 2.1 หรือ AIDL
AOSP มีไลบรารีตัวช่วยหลายรายการที่ออกแบบมาเพื่อช่วยคุณใช้งาน HAL 2.1 และเปลี่ยนจาก HIDL HAL แบบเดิม
อุปกรณ์ที่ใช้ Android 13 ขึ้นไป
อุปกรณ์ที่เปิดตัวพร้อม Android 13 ต้องมี AIDL HAL (และต้องไม่มี HIDL HAL) อุปกรณ์ที่ไม่ได้เปิดตัวพร้อม Android 13 แต่มีแผนที่จะอัปเดตรูปภาพของผู้ให้บริการเป็นเมทริกซ์ความเข้ากันได้ของเฟรมเวิร์กเป้าหมายเวอร์ชัน 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
HIDL ด้านสุขภาพเวอร์ชัน 1 ได้รับการเผยแพร่ใน Android 11 - health AIDL HAL
- ตัวย่อของ
android.hardware.health
เวอร์ชัน 1 ของ Health AIDL HAL ได้รับการเผยแพร่ใน Android 13 - charger
- ไฟล์ปฏิบัติการที่ทำงานในโหมดการชาร์จขณะปิดเครื่องซึ่งแสดงภาพเคลื่อนไหวการชาร์จโทรศัพท์
- การกู้คืน
- ไฟล์ปฏิบัติการที่ทำงานในโหมดการกู้คืนซึ่งต้องดึงข้อมูลแบตเตอรี่
- 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 โครงสร้างพื้นฐานของ Health AIDL HAL
อินเทอร์เฟซ HIDL HAL 2.1
HAL health@2.1 รองรับการชาร์จในโหมดปิดและให้ข้อมูลเพิ่มเติม เกี่ยวกับแบตเตอรี่
อินเทอร์เฟซหลักของ IHealth มีฟังก์ชันเพิ่มเติมดังนี้
getHealthConfig
: เพื่อดึงข้อมูลการกำหนดค่าของ HAL นี้getHealthInfo_2_1
: การอัปเกรดเวอร์ชันย่อยเป็นgetHealthInfo
shouldKeepScreenOn
: เพื่อพิจารณาว่าควรเปิดหน้าจอไว้ในโหมด เครื่องชาร์จหรือไม่
นอกจากนี้ คุณต้องติดตั้งใช้งาน @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
เวอร์ชันอินเทอร์เฟซ HAL ของ AIDL 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 ของคลาสที่มีประโยชน์ต่อการใช้งาน AIDL HAL ด้านสุขภาพ
รูปที่ 4 แผนภาพ UML ของ HAL AIDL ด้านสุขภาพ
ดูข้อมูลเกี่ยวกับการใช้งานบริการ AIDL ด้านสุขภาพได้ที่ การใช้งาน HAL ของ AIDL ด้านสุขภาพ
การกู้คืน
Android 13 รองรับ Binder ในการกู้คืน การติดตั้ง บริการ Health AIDL ในการกู้คืนจะช่วยให้บริการทำงานในโหมดการกู้คืนได้
ดูข้อมูลเกี่ยวกับการติดตั้งบริการ AIDL ด้านสุขภาพในการกู้คืนได้ที่หัวข้อต่อไปนี้
ที่ชาร์จ
ฟังก์ชันการทำงานของการชาร์จในโหมดปิดจะย้ายจาก /system
ไปยัง /vendor
สำหรับอุปกรณ์ที่เปิดตัวพร้อม Android 13 หากรองรับการชาร์จในโหมดปิด ไบนารีของบริการ HAL ต้องรองรับโหมดเครื่องชาร์จ โดยดูวิธีการได้ที่การติดตั้งใช้งานเครื่องชาร์จ
พร็อพเพอร์ตี้ของระบบที่ชาร์จ
ไบนารี charger
ใน /vendor
จะอ่านพร็อพเพอร์ตี้ ro.charger.*
ไม่ได้อีกต่อไป หากอุปกรณ์มีการตั้งค่าro.charger.*
พร็อพเพอร์ตี้ของระบบ
โปรดดูพร็อพเพอร์ตี้ของระบบสำหรับเครื่องชาร์จ