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

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