Android 10 ขอแนะนำตัวเลือกการตั้งเวลาโหมดประหยัดแบตเตอรี่ที่เรียกว่าอิงตามกิจวัตรประจำวัน ตัวเลือกนี้ช่วยให้แอปที่ OEM เลือกส่งสัญญาณไปยังระบบเพื่อการตั้งเวลาโหมดประหยัดแบตเตอรี่ที่ชาญฉลาดยิ่งขึ้น ตัวเลือกนี้ต้องมีการกำหนดค่าและไม่บังคับให้ใช้งาน
การกำหนดค่าอุปกรณ์
ส่วนนี้จะอธิบายวิธีกำหนดค่าอุปกรณ์สำหรับตัวเลือกอิงตามกิจวัตรประจำวัน
การระบุผู้ให้บริการ
หากต้องการแจ้ง UI การตั้งค่า ว่ามีการกำหนดค่าอุปกรณ์อย่างถูกต้อง ให้ใช้การวางซ้อนการกำหนดค่าเพื่อลบล้างค่า config_batterySaverScheduleProvider ด้วยชื่อแพ็กเกจของแอป เช่น หากต้องการให้แพ็กเกจแอป com.google.android.apps.turbo ควบคุมการตั้งค่าอิงตามกิจวัตรประจำวัน ให้ตั้งค่าการกำหนดค่านี้
<string name="config_batterySaverScheduleProvider" translatable="false">
com.google.android.apps.turbo</string>
หากต้องการยืนยัน ให้สร้างอิมเมจ แฟลชอิมเมจลงในอุปกรณ์ แล้วไปที่การตั้งค่า
แบตเตอรี่ > โหมดประหยัดแบตเตอรี่ > การตั้งเวลาโหมดประหยัดแบตเตอรี่ ตัวเลือกอิงตามกิจวัตรประจำวัน จะปรากฏขึ้น
เกณฑ์การปิดใช้โดยค่าเริ่มต้น
ช่อง config_dynamicPowerSavingsDefaultDisableThreshold จะระบุระดับแบตเตอรี่ที่ระบบจะปิดโหมดประหยัดแบตเตอรี่หากตัวกำหนดเวลาอิงตามกิจวัตรประจำวัน เปิดโหมดประหยัดแบตเตอรี่ ค่าเริ่มต้นของระบบคือ 80% แต่คุณสามารถเปลี่ยนค่านี้ได้
การกำหนดค่าแอป
ส่วนนี้จะอธิบายวิธีกำหนดค่าแอปให้ใช้ตัวเลือกอิงตามกิจวัตรประจำวัน
สิทธิ์
API ที่จำเป็นเพื่อให้แอปเปิดใช้โหมดประหยัดแบตเตอรี่ตามกิจวัตรประจำวันได้รับการคุ้มครองโดยสิทธิ์ android.permission.POWER_SAVER ซึ่งเป็นสิทธิ์ลายเซ็นหรือสิทธิ์พิเศษ หมายความว่าแอปต้องอยู่ในไดเรกทอรี priv-app ในอิมเมจระบบ และคุณต้องให้สิทธิ์นี้อย่างชัดแจ้ง
สำหรับแอปที่มีสิทธิ์พิเศษ คุณต้องให้สิทธิ์ในไฟล์ XML การกำหนดค่าระบบในไดเรกทอรี /etc/permissions/ ในพาร์ติชันเดียวกับแอป เช่น หากต้องการให้สิทธิ์ android.permission.POWER_SAVER แก่แอปที่มีชื่อแพ็กเกจ com.google.android.apps.turbo ให้ทำดังนี้
<!-- File located at /etc/permissions/privapp-permissions-DEVICE_NAME.xml -->
<permissions>
<privapp-permissions package="com.google.android.apps.turbo">
<permission name="android.permission.POWER_SAVER"/>
</privapp-permissions>
</permissions>
หากคุณไม่ได้ให้สิทธิ์นี้แก่แอปในอิมเมจระบบล่วงหน้า แอปจะขอรับสิทธิ์หรือเรียก API ไม่สำเร็จ ระบบจะไม่แสดงความคิดเห็นนอกเหนือจากข้อผิดพลาดเกี่ยวกับสิทธิ์มาตรฐาน ดังนั้นคุณจึงต้องตรวจสอบว่าแอปเรียก API ได้และสังเกตผลลัพธ์
การติดตั้ง
คุณต้องติดตั้งแอปในอิมเมจระบบล่วงหน้าโดยให้สิทธิ์ที่จำเป็นเพื่อให้อิงตามกิจวัตรประจำวัน ทำงานได้อย่างถูกต้อง ให้สิทธิ์ android.permission.POWER_SAVER แก่แอปเพียงแอปเดียวและอนุญาตให้แอปนั้นควบคุม API อิงตามกิจวัตรประจำวัน ระบบจะไม่รองรับและไม่ระบุลักษณะการทำงานของฟีเจอร์หากมีแอปมากกว่า 1 แอปพยายามใช้สิทธิ์และ API
ทริกเกอร์โหมดประหยัดแบตเตอรี่ตามกิจวัตรประจำวัน
ส่วนนี้จะอธิบายวิธีที่แอปทริกเกอร์โหมดประหยัดแบตเตอรี่อิงตามกิจวัตรประจำวัน โดยใช้ API ที่ให้ไว้
API
หากการตั้งค่าสำเร็จ แอป OEM ที่ระบุในการกำหนดค่าจะเรียกเมธอดที่เกี่ยวข้องใน PowerManager เพื่อทริกเกอร์โหมดประหยัดแบตเตอรี่ได้สำเร็จ
public boolean setDynamicPowerSaveHint(boolean powerSaveHint, int disableThreshold)
หากเปิดใช้ตัวเลือกการตั้งเวลาโหมดประหยัดแบตเตอรี่อิงตามกิจวัตรประจำวัน และแอปเรียกเมธอดนี้โดยมีค่า true สำหรับ powerSaveHint โหมดประหยัดแบตเตอรี่จะเปิดขึ้น ระบุ disableThreshold เพื่อให้ระบบทราบเปอร์เซ็นต์แบตเตอรี่ที่ปลอดภัยในการปิดโหมดประหยัดแบตเตอรี่แม้ว่าแอปจะสื่อสารกับระบบไม่ได้
API นี้ขึ้นอยู่กับการลบล้างของผู้ใช้และการเลื่อนโหมดประหยัดแบตเตอรี่ในลักษณะเดียวกับโหมดประหยัดแบตเตอรี่อัตโนมัติตามเปอร์เซ็นต์ ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบเกี่ยวกับ API
หากต้องการยืนยันว่ามีการเรียก API สำเร็จ ให้ค้นหาการตั้งค่าส่วนกลางเพื่อ
ยืนยันว่าค่าการตั้งค่าแบ็กเอนด์เปลี่ยนไปตามการเรียก API
เช่น หากคุณเลือกโหมดประหยัดแบตเตอรี่อิงตามกิจวัตรประจำวัน และแอปเรียก setDynamicPowerSaveHint(true, 10) การตั้งค่าส่วนกลางจะมีค่าต่อไปนี้
automatic_power_save_mode: 1
dynamic_power_savings_disable_threshold: 10
dynamic_power_savings_enabled: 1
หากคุณเรียก setDynamicPowerSaveHint(false, 25) ค่าจะเป็นดังนี้
automatic_power_save_mode: 1
dynamic_power_savings_disable_threshold: 25
dynamic_power_savings_enabled: 0
คุณสามารถตรวจสอบค่าเหล่านี้ได้โดยใช้คำสั่ง adb ต่อไปนี้
adb shell settings get global <setting-name>
การยืนยัน
ไม่มีวิธีอัตโนมัติในการยืนยันฟีเจอร์นี้เนื่องจาก OEM เป็นผู้กำหนดลักษณะการทำงานที่จะทริกเกอร์โหมดประหยัดแบตเตอรี่อิงตามกิจวัตรประจำวัน OEM ต้องทดสอบการผสานรวมเพื่อยืนยันว่าลักษณะการทำงานเป็นไปตามที่คาดไว้ โดยเฉพาะอย่างยิ่ง ให้ยืนยันว่าอุปกรณ์สามารถทำงานต่อไปนี้ได้
- อิงตามเปอร์เซ็นต์: หากคุณเลือกอิงตามเปอร์เซ็นต์ ใน UI การตั้งเวลาโหมดประหยัดแบตเตอรี่ และเลือก 15% โหมดประหยัดแบตเตอรี่จะเปิดขึ้นโดยอัตโนมัติเมื่อแบตเตอรี่เหลือ 15% เท่านั้น
- อิงตามกิจวัตรประจำวัน: หากคุณเลือกอิงตามกิจวัตรประจำวัน ใน UI การตั้งเวลาโหมดประหยัดแบตเตอรี่ โหมดประหยัดแบตเตอรี่จะเปิดขึ้นเมื่อแอปเรียก API โดยมีค่า
trueนอกจากนี้ โหมดประหยัดแบตเตอรี่จะปิดโดยอัตโนมัติหากอุปกรณ์ชาร์จถึงระดับเกณฑ์ที่ระบุและถอดปลั๊ก - ไม่มี: หากคุณเลือกไม่มี ใน UI การตั้งเวลาโหมดประหยัดแบตเตอรี่ โหมดประหยัดแบตเตอรี่จะไม่เปิดขึ้นโดยอัตโนมัติ
- การลบล้างด้วยตนเอง: หากแอปเปิดโหมดประหยัดแบตเตอรี่และคุณลบล้างโหมดประหยัดแบตเตอรี่ด้วยตนเองเพื่อปิดโหมดประหยัดแบตเตอรี่ (โดยใช้การตั้งค่าด่วน การตั้งค่า หรือวิธีอื่นๆ) โหมดประหยัดแบตเตอรี่จะปิดอยู่จนกว่าคุณจะเปิดอีกครั้งด้วยตนเองหรือเสียบปลั๊กอุปกรณ์