แอปบางแอปจำเป็นต้องเปิดหน้าจอไว้ เช่น แอปเกมหรือแอปภาพยนตร์ Android API บางรายการจะเปิดหน้าจอให้คุณโดยอัตโนมัติ ในกรณีอื่นๆ คุณสามารถตั้งค่า Flag เพื่อเปิดหน้าจอไว้ด้วยตนเอง
เปิดหน้าจอค้างไว้ด้วยตนเอง
หากต้องการเปิดหน้าจอของอุปกรณ์ค้างไว้ ให้ตั้งค่า Flag FLAG_KEEP_SCREEN_ON
ในกิจกรรม คุณสามารถตั้งค่า Flag นี้ได้ในกิจกรรมเท่านั้น แต่จะตั้งค่าในบริการหรือคอมโพเนนต์แอปอื่นๆ ไม่ได้ เช่น
Kotlin
class MainActivity : Activity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) } }
Java
public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getWindow().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 แบบเป็นโปรแกรมในกิจกรรมคือคุณจะมีตัวเลือกในการล้าง Flag แบบเป็นโปรแกรมในภายหลัง ซึ่งจะทำให้หน้าจอปิดได้
หากแอปที่มี Flag FLAG_KEEP_SCREEN_ON
ทำงานในเบื้องหลัง ระบบจะอนุญาตให้หน้าจอปิดตามปกติ คุณไม่จำเป็นต้องล้างการแจ้งว่าไม่เหมาะสมอย่างชัดเจนในกรณีนี้ หากแอปไม่จำเป็นต้องเปิดหน้าจอไว้อีกต่อไป คุณควรล้าง Flag นี้โดยเรียกใช้ clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
โหมดแอมเบียนท์สำหรับทีวี
ในอุปกรณ์ทีวี ให้ใช้ FLAG_KEEP_SCREEN_ON
เพื่อป้องกันไม่ให้อุปกรณ์เข้าสู่โหมดแอมเบียนท์ขณะที่เล่นวิดีโออยู่ หากกิจกรรมที่ทำงานอยู่เบื้องหน้าไม่ได้ตั้งค่า FLAG_KEEP_SCREEN_ON
ไว้ อุปกรณ์จะเข้าสู่โหมดแอมเบียนท์โดยอัตโนมัติหลังจากไม่มีการใช้งานเป็นระยะเวลาหนึ่ง