รองรับอุปกรณ์แบบไม่ใช้แบตเตอรี่

หน้านี้อธิบายวิธีที่ Android จัดการผลิตภัณฑ์ที่ถอดออกได้ แบตเตอรี่ หรือไม่มีแบตเตอรี่ในตัวก็ได้ อุปกรณ์หลังจะเชื่อมต่อกับ แหล่งจ่ายไฟภายนอก เช่น เต้ารับ AC หรือพอร์ต USB บนอุปกรณ์อื่น อุปกรณ์

มีแบตเตอรี่ไหม

แอปพลิเคชันอาจใช้รหัสต่อไปนี้เพื่อตรวจสอบว่าอุปกรณ์มี สิ่งที่มีแบตเตอรี่

```
final Intent batteryInfo = registerReceiver(null, new
IntentFilter(Intent.ACTION_BATTERY_CHANGED));

return batteryInfo.getBooleanExtra(BatteryManager.EXTRA_PRESENT, true);
```

ลักษณะการทำงานของอุปกรณ์แบบไม่ใช้แบตเตอรี่

หาก Android ไม่พบอุปกรณ์แบตเตอรี่สำหรับผลิตภัณฑ์ สิ่งที่จะเกิดขึ้นมีดังนี้ ระบบจะใช้ค่าเริ่มต้นที่เกี่ยวข้องกับแบตเตอรี่ โปรดทราบว่าค่าเริ่มต้นมีการเปลี่ยนแปลงใน เปิดตัว Android 9 ตารางนี้แสดงความแตกต่าง

สถานะแบตเตอรี่ Android 9 ขึ้นไป Android 8.1 และต่ำกว่า
นำเสนอ เท็จ จริง
สถานะ ไม่ทราบ กำลังชาร์จ
ความจุที่เหลือ 0 100%
สุขภาพ ไม่ทราบ ดี
สถานะออนไลน์ของที่ชาร์จ AC ไม่มีการแก้ไข บังคับให้เป็นจริง

ผู้ผลิตอาจเปลี่ยนการตั้งค่าเริ่มต้นโดยใช้เคอร์เนล แหล่งจ่ายไฟ [power_supply] หรือ HAL เกี่ยวกับสุขภาพ

Android 9 ขึ้นไป

Android 9 นำโค้ดก่อนหน้าบางรายการสำหรับโหมดประหยัดแบตเตอรี่ออก อุปกรณ์ที่อ้างว่ามีแบตเตอรี่อยู่โดยค่าเริ่มต้น กำลังชาร์จด้วย 100% และอยู่ในสภาพดีโดยอ่านค่าอุณหภูมิปกติใน เทอร์มิสเตอร์

API เฟรมเวิร์กส่วนใหญ่ที่จัดการกับข้อมูลนี้จะยังคงจัดการ เหมือนกับก่อนหน้านี้ นั่นคือ ระบบจะพิจารณา กำลังชาร์จ (กล่าวคือไม่ใช้พลังงานแบตเตอรี่) และจะไม่ได้รับการพิจารณา แบตเตอรี่เหลือน้อย หากอินเทอร์เฟซผู้ใช้วาดไอคอนแบตเตอรี่ ระบบจะ ปรากฏพร้อมกับเครื่องหมายอัศเจรีย์ และเปอร์เซ็นต์แบตเตอรี่จะแสดงเป็น 0% แต่อุปกรณ์ไม่ยอมปิดเนื่องจากแบตเตอรี่เหลือน้อยและงานที่ต้องใช้ จะมีการตั้งเวลาการชาร์จหรือแบตเตอรี่ที่ดี

Android 8.1 และต่ำกว่า

เนื่องจากไม่ทราบสถานะแบตเตอรี่ API เฟรมเวิร์ก Android จึงจะพิจารณา ระบบกำลังชาร์จ (หรือไม่ใช้พลังงานจากแบตเตอรี่) และจะไม่ ถือว่ามีแบตเตอรี่ต่ำ อินเทอร์เฟซผู้ใช้แสดงผลแบตเตอรี่หรือไม่ ก็จะปรากฏพร้อมเครื่องหมายอัศเจรีย์ และเปอร์เซ็นต์แบตเตอรี่ แสดงเป็น 0% แต่อุปกรณ์ไม่ยอมปิดเนื่องจากแบตเตอรี่เหลือน้อย และงานที่ ต้องชาร์จหรือตั้งเวลาแบตเตอรี่ดีพอ

การใช้งาน

รหัสเริ่มต้นของ Android 9 อาจทำงานได้อย่างถูกต้องสำหรับ แต่เราขอแนะนำให้เปลี่ยนเคอร์เนลหรือ HAL เป็น แสดงพลังงานและสถานะแบตเตอรี่ของผลิตภัณฑ์อย่างถูกต้องตามที่อธิบายไว้ ที่ด้านบน หาก Android 9 ขึ้นไปตรวจไม่พบแหล่งจ่ายไฟของ Linux ชั้นเรียน อุปกรณ์ชาร์จไฟแล้ว โดยค่าเริ่มต้นที่ชาร์จทุกประเภท (AC, USB, ไร้สาย) จะมี สถานะ ออฟไลน์ หากที่ชาร์จทั้งหมดออฟไลน์อยู่ แต่ไม่มีอุปกรณ์แบตเตอรี่ ที่ตรวจพบ ระบบจะยังถือว่ามีการชาร์จไฟในลักษณะที่ ทำงานโดยใช้พลังงานแบตเตอรี่ภายนอก ไม่ใช่พลังงานแบตเตอรี่ ตามที่อธิบายไว้ก่อนหน้านี้

หากผลิตภัณฑ์ไม่มีแบตเตอรี่และเชื่อมต่อกับแหล่งจ่ายไฟตลอดเวลา วิธีที่ดีที่สุดคือการใช้ที่ชาร์จคลาสเคอร์เนล power_supply ของ Linux ไดรเวอร์สำหรับแหล่งจ่ายไฟ AC หรือ USB ที่ตั้งค่าแอตทริบิวต์ online sysfs ไปยัง true หรือคุณจะกำหนดค่าคุณสมบัติออนไลน์ของที่ชาร์จ AC ได้ใน Health HAL สำหรับอุปกรณ์ของคุณ โดยใช้ HAL ด้านสุขภาพตามที่อธิบายไว้ในการใช้ สุขภาพ 2.0

Health HAL ที่กำหนดเองนี้จะใช้เวอร์ชันที่กำหนดเองของ Health::getHealthInfo() ที่ปรับเปลี่ยนค่า BatteryProperties.chargerAcOnline = true

คัดลอกไฟล์เพื่อเริ่มต้นใช้งาน hardware/interfaces/health/2.0/default/Health.cpp เกี่ยวกับการใช้งาน Health HAL ของคุณเอง และแก้ไขตาม Health 2.0 README