โหมดประหยัดแบตเตอรี่ตามกิจวัตร

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 การตั้งเวลาโหมดประหยัดแบตเตอรี่ โหมดประหยัดแบตเตอรี่จะไม่เปิดขึ้นโดยอัตโนมัติ
  • การลบล้างด้วยตนเอง: หากแอปเปิดโหมดประหยัดแบตเตอรี่และคุณลบล้างโหมดประหยัดแบตเตอรี่ด้วยตนเองเพื่อปิดโหมดประหยัดแบตเตอรี่ (โดยใช้การตั้งค่าด่วน การตั้งค่า หรือวิธีอื่นๆ) โหมดประหยัดแบตเตอรี่จะปิดอยู่จนกว่าคุณจะเปิดอีกครั้งด้วยตนเองหรือเสียบปลั๊กอุปกรณ์