ใน Android 11 โหมดสลีปเมื่อไม่มีการใช้งานเป็นฟีเจอร์ประหยัดพลังงานที่ช่วยให้คุณตั้งค่าระยะหมดเวลาของผู้ใช้ที่ไม่ได้ใช้งาน ซึ่งหลังจากนั้นหน้าจอจะปิดลง แม้ว่าจะมีหน้าต่างที่มี FLAG_KEEP_SCREEN_ON
แสดงอยู่หรือมีการใช้ Wake Lock ระดับ FULL_WAKE_LOCK
, SCREEN_BRIGHT_WAKE_LOCK
หรือ SCREEN_DIM_WAKE_LOCK
อยู่ก็ตาม
Wakelock ที่มีระดับ PARTIAL_WAKE_LOCK
จะไม่ได้รับผลกระทบจากฟีเจอร์นี้
ก่อนที่การหมดเวลาจะสิ้นสุดลงไม่นาน ระบบจะแสดงข้อความเตือนผู้ใช้ว่าอุปกรณ์จะเข้าสู่โหมดสลีปหากผู้ใช้ไม่โต้ตอบกับอุปกรณ์
ในบริบทนี้ กิจกรรมของผู้ใช้หมายถึงทุกอย่างที่ทริกเกอร์การเรียกใช้ PowerManager#userActivity
(โดยไม่มีแฟล็ก USER_ACTIVITY_FLAG_NO_CHANGE_LIGHTS
) ซึ่งรวมถึงแต่ไม่จํากัดเพียงรายการต่อไปนี้
- การโต้ตอบกับหน้าจอสัมผัส
- การกดปุ่มบนเครื่อง
- ป้อนเหตุการณ์จากอุปกรณ์เสริมภายนอก (เช่น แป้นพิมพ์ที่เชื่อมต่อ รีโมตบลูทูธ รีโมต IR)
- การโต้ตอบด้วยเสียง
- การรับข้อความ HDMI CEC บางรายการ เช่น One Touch Play
- เริ่มเซสชันการแคสต์ใหม่
การปรับแต่ง
หากเปิดใช้ฟีเจอร์แล้ว อุปกรณ์จะแสดงคำเตือนบนหน้าจอหลังจากเวลาที่ระบุไว้ การไม่ใช้งานของผู้ใช้ หน้าจอจะปิดการทำงานหากไม่มีการดำเนินการใดๆ คุณปรับแต่งฟีเจอร์ได้ โดยใช้ตัวเลือกการกำหนดค่าเหล่านี้
กำหนดค่าระยะหมดเวลา
หากต้องการกําหนดค่าการหมดเวลา ให้อัปเดตองค์ประกอบต่อไปนี้ใน frameworks/base/core/res/res/values/config.xml
config_attentiveTimeout
- ระบุเวลาเริ่มต้นเป็นมิลลิวินาทีที่ไม่มีกิจกรรมของผู้ใช้หลังจากนั้นระบบจะปิดหน้าจอ (แม้ว่าจะมีการตั้งค่าล็อกหน้าจอไว้ก็ตาม)
- กำหนดในเวลาสร้าง
- หากค่าอยู่ระหว่าง
0
ถึงconfig_minimumScreenOffTimeout
ระบบจะตั้งค่าการหมดเวลาเป็นconfig_minimumScreenOffTimeout
เพื่อไม่ให้อุปกรณ์ปิดหน้าจอหลังจากตื่นขึ้นไม่นาน - ค่าเริ่มต้น:
-1
ซึ่งปิดใช้ฟีเจอร์นี้
ลบล้างระยะหมดเวลาเริ่มต้น
หากต้องการลบล้างการตั้งค่าระยะหมดเวลาเริ่มต้น ให้อัปเดตองค์ประกอบต่อไปนี้
Settings.Secure.ATTENTIVE_TIMEOUT
- หากมีการตั้งค่า จะลบล้างระยะหมดเวลาของการนอนหลับโดยไม่ตั้งใจซึ่งตั้งไว้โดย
config_attentiveTimeout
- ตั้งค่าได้ในรันไทม์
กำหนดค่าระยะเวลาก่อนที่คำเตือนจะปรากฏ
หากต้องการกําหนดค่าระยะเวลา ให้อัปเดตองค์ประกอบต่อไปนี้ใน frameworks/base/core/res/res/values/config.xml
config_attentiveWarningDuration
- ระยะเวลาที่จะแสดงข้อความเตือนให้ผู้ใช้ทราบก่อนที่จะปิดหน้าจอ ผู้ใช้ไม่มีการใช้งานเป็นระยะเวลานาน
- ค่านี้ควรต่ำกว่าระยะหมดเวลาการหยุดทำงานเมื่อไม่มีการใช้งานที่กำหนดไว้ มิเช่นนั้นกล่องโต้ตอบคำเตือนจะแสดงอยู่ตลอดเวลาและปิดไม่ได้
- ค่าเริ่มต้น:
30000
(30 วินาที)
แสดงค่ากำหนดการหมดเวลาใน TvSettings
หากต้องการแสดงค่ากำหนดระยะหมดเวลา ให้อัปเดตองค์ประกอบต่อไปนี้ใน
packages/apps/TvSettings/Settings/res/values/config.xml
:
config_show_standby_timeout
- เลือกว่าจะแสดงรายการกำหนดสำหรับการอนุญาตให้ปิดหน้าจอระหว่างการเล่นสื่อหรือไม่
- ค่าเริ่มต้น:
false
แหล่งข้อมูลสําหรับ UI คำเตือน
- รูปแบบของกล่องโต้ตอบคําเตือนจะกําหนดไว้ใน
frameworks/base/packages/SystemUI/res/layout/inattentive_sleep_warning.xml
- สตริงต่อไปนี้สําหรับกล่องโต้ตอบได้รับการกําหนดไว้ใน
frameworks/base/packages/SystemUI/res/values/strings.xml
และframeworks/base/packages/SystemUI/res-product/values/strings.xml
inattentive_sleep_warning_title
inattentive_sleep_warning_message
คุณสามารถเปลี่ยนการกำหนดค่าและทรัพยากรเวลาสร้างได้โดยการวางซ้อนทรัพยากร
การใช้งาน
เปิดใช้ฟีเจอร์โดยใช้สิ่งต่อไปนี้
- ลบล้าง
config_attentiveTimeout
เริ่มต้น - หากใช้ AOSP
TvSettings
- ปิดใช้ฟีเจอร์นี้ในการตั้งค่าโดย
การลบล้าง
config_show_standby_timeout
- ใช้การตั้งค่าของคุณเอง
ชุดนั้น
Settings.Secure.ATTENTIVE_TIMEOUT
การตรวจสอบความถูกต้อง
การทดสอบ CTS สำหรับฟีเจอร์นี้อยู่ที่
cts/hostsidetests/os/src/android/os/cts/InattentiveSleepTests.java
ตัวอย่างและแหล่งที่มา
frameworks/base/packages/SystemUI/src/com/android/systemui/power/InattentiveSleepWarningView.java
มีการใช้งาน UI คำเตือนเริ่มต้นpackages/apps/TvSettings
แสดงตัวอย่างวิธีแสดงฟีเจอร์ในการตั้งค่า
ตัวอย่าง Test Case ที่ดำเนินการด้วยตนเอง
ตรวจสอบว่า
stay_on_while_plugged_in
การตั้งค่าสำหรับนักพัฒนาแอปปิดอยู่หาก HAL สถานะแบตเตอรี่ของอุปกรณ์รายงานว่าอุปกรณ์มีแบตเตอรี่ (battery_present
เป็นtrue
) เนื่องจากอาจทำให้ฟีเจอร์ปิดหน้าจอไม่ได้
adb shell settings put global stay_on_while_plugged_in 0
- ตั้งค่าการหมดเวลาการหยุดทำงานเมื่อไม่มีการใช้งานให้นานกว่าระยะเวลาของกล่องโต้ตอบคำเตือน 2-3 วินาที
adb shell settings put secure attentive_timeout 32000
- เริ่มเล่นวิดีโอ (เพื่อให้หน้าจอล็อกอยู่)
- ตรวจสอบว่ากล่องโต้ตอบคำเตือนการนอนหลับปรากฏขึ้นหลังจากผ่านไป 2-3 วินาที
- ตรวจสอบว่าหน้าจอปิดลงหลังจากหมดเวลาที่กำหนด