บางแอปจำเป็นต้องเปิดหน้าจอไว้ตลอด เช่น แอปเกมหรือแอปภาพยนตร์ Android API บางรายการจะเปิดหน้าจอไว้ให้คุณโดยอัตโนมัติ ในกรณีอื่นๆ คุณสามารถตั้งค่าแฟล็กเพื่อเปิดหน้าจอไว้ด้วยตนเองได้
เปิดหน้าจอไว้ด้วยตนเอง
หากต้องการเปิดหน้าจอของอุปกรณ์ไว้ ให้ตั้งค่าแฟล็ก FLAG_KEEP_SCREEN_ON ในกิจกรรม คุณตั้งค่า Flag นี้ได้เฉพาะในกิจกรรมเท่านั้น ไม่สามารถตั้งค่าในบริการหรือคอมโพเนนต์อื่นๆ ของแอปได้ เช่น
class MainActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) } }
อีกวิธีหนึ่งในการเปิดหน้าจอไว้คือการตั้งค่าแอตทริบิวต์ android:keepScreenOn ในไฟล์ XML ของเลย์เอาต์ของแอปพลิเคชัน
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:keepScreenOn="true"> ... </RelativeLayout>
การใช้ android:keepScreenOn="true" เทียบเท่ากับการใช้ FLAG_KEEP_SCREEN_ON
คุณสามารถใช้วิธีการใดก็ได้ที่เหมาะกับแอปของคุณ ข้อดีของการตั้งค่าแฟล็กแบบเป็นโปรแกรมในกิจกรรมคือช่วยให้คุณมีตัวเลือกในการล้างแฟล็กแบบเป็นโปรแกรมในภายหลัง ซึ่งจะช่วยให้หน้าจอปิดได้
หากแอปที่มีแฟล็ก FLAG_KEEP_SCREEN_ON ทำงานอยู่เบื้องหลัง ระบบจะอนุญาตให้หน้าจอปิดตามปกติ คุณไม่จำเป็นต้องล้างแฟล็กอย่างชัดแจ้งในกรณีนี้ หากแอปไม่จำเป็นต้องเปิดหน้าจอไว้อีกต่อไป คุณควรล้างแฟล็กโดยเรียกใช้ clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
โหมดแอมเบียนท์สำหรับทีวี
ในอุปกรณ์ทีวี ให้ใช้ FLAG_KEEP_SCREEN_ON เพื่อป้องกันไม่ให้อุปกรณ์เข้าสู่โหมดแอมเบียนท์ระหว่างการเล่นวิดีโอ หากกิจกรรมที่ทำงานอยู่เบื้องหน้าไม่ได้ตั้งค่า FLAG_KEEP_SCREEN_ON อุปกรณ์จะเข้าสู่โหมดแอมเบียนท์โดยอัตโนมัติหลังจากไม่มีการใช้งานเป็นระยะเวลาหนึ่ง