ประสิทธิภาพของระบบ Android

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)      ] |
+-------------------------------------+

ดูแผนภาพแบบย่อต่อไปนี้สำหรับโหมดต่างๆ

โครงสร้างพื้นฐาน HIDL HAL 2.1 ด้านสุขภาพ

รูปที่ 1 โครงสร้างพื้นฐานของ Health HIDL HAL 2.1

สุขภาพใน Android 13

ใน Android 13 มีการเปิดตัว HAL ของ AIDL ด้านสุขภาพ รูปที่ 2 แสดงรายละเอียดวิธีการทำงานของ คอมโพเนนต์ด้านสุขภาพ

โครงสร้างพื้นฐาน HAL ของ AIDL ด้านสุขภาพ

รูปที่ 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 สุขภาพ

แผนภาพ UML ของ HAL สุขภาพ 2.1

รูปที่ 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 ด้านสุขภาพ

แผนภาพ UML ของ HAL สำหรับ AIDL ด้านสุขภาพ

รูปที่ 4 แผนภาพ UML ของ HAL AIDL ด้านสุขภาพ

ดูข้อมูลเกี่ยวกับการใช้งานบริการ AIDL ด้านสุขภาพได้ที่ การใช้งาน HAL ของ AIDL ด้านสุขภาพ

การกู้คืน

Android 13 รองรับ Binder ในการกู้คืน การติดตั้ง บริการ Health AIDL ในการกู้คืนจะช่วยให้บริการทำงานในโหมดการกู้คืนได้

ดูข้อมูลเกี่ยวกับการติดตั้งบริการ AIDL ด้านสุขภาพในการกู้คืนได้ที่หัวข้อต่อไปนี้

ที่ชาร์จ

ฟังก์ชันการทำงานของการชาร์จในโหมดปิดจะย้ายจาก /system ไปยัง /vendor สำหรับอุปกรณ์ที่เปิดตัวพร้อม Android 13 หากรองรับการชาร์จในโหมดปิด ไบนารีของบริการ HAL ต้องรองรับโหมดเครื่องชาร์จ โดยดูวิธีการได้ที่การติดตั้งใช้งานเครื่องชาร์จ

พร็อพเพอร์ตี้ของระบบที่ชาร์จ

ไบนารี charger ใน /vendor จะอ่านพร็อพเพอร์ตี้ ro.charger.* ไม่ได้อีกต่อไป หากอุปกรณ์มีการตั้งค่าro.charger.*พร็อพเพอร์ตี้ของระบบ โปรดดูพร็อพเพอร์ตี้ของระบบสำหรับเครื่องชาร์จ