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