โปรแกรมประหยัดแบตเตอรี่เป็นประจำ

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 นี่เป็นลายเซ็น/การอนุญาตที่มีสิทธิพิเศษ ดังนั้นให้อนุญาตแอปที่คุณต้องการเรียกใช้การอนุญาตนี้ในโหมดประหยัดแบตเตอรี่ใน privapp-whitelist ของคุณ

ตัวอย่างการให้สิทธิ์ privapp แก่แอป:

<privapp-permissions package="com.google.android.apps.turbo">
   <permission name="android.permission.POWER_SAVER"/>
</privapp-permissions>

หากคุณไม่ได้ให้สิทธิ์นี้ล่วงหน้าแก่เวอร์ชันของแอปบนอิมเมจระบบ แอปจะไม่สามารถรับสิทธิ์หรือเรียก API ได้อย่างถูกต้อง ระบบไม่ได้ให้ข้อเสนอแนะใดๆ นอกเหนือจากข้อผิดพลาดในการอนุญาตตามปกติ ดังนั้นโปรดตรวจสอบว่าคุณสามารถเรียก API และสังเกตผลกระทบได้

การติดตั้ง

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