เปิดหน้าจอไว้

บางแอปจะต้องเปิดหน้าจอไว้ เช่น แอปเกมหรือแอปภาพยนตร์ Android API บางรายการจะเปิดหน้าจอให้คุณโดยอัตโนมัติ ในกรณีอื่นๆ คุณสามารถตั้งค่า Flag เพื่อเปิดหน้าจอไว้ด้วยตนเอง

เปิดหน้าจอค้างไว้ด้วยตนเอง

หากต้องการเปิดหน้าจอของอุปกรณ์ค้างไว้ ให้ตั้งค่า Flag FLAG_KEEP_SCREEN_ON ในกิจกรรม ตั้งค่าสถานะนี้ได้เฉพาะในกิจกรรมเท่านั้น ห้ามตั้งค่าในบริการหรือคอมโพเนนต์อื่นๆ ของแอป เช่น

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 ทำงานในเบื้องหลัง ระบบจะอนุญาตให้หน้าจอปิดตามปกติ คุณไม่จำเป็นต้องล้างการแจ้งว่าไม่เหมาะสมอย่างชัดเจนในกรณีนี้ หากแอปไม่จำเป็นต้องเปิดหน้าจอไว้อีกต่อไป คุณควรล้างค่าสถานะโดยการเรียกใช้ clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)

โหมดแอมเบียนท์สำหรับทีวี

ในอุปกรณ์ทีวี ให้ใช้ FLAG_KEEP_SCREEN_ON เพื่อป้องกันไม่ให้อุปกรณ์เข้าสู่โหมดแอมเบียนท์ระหว่างการเล่นวิดีโอ หากกิจกรรมที่ทำงานอยู่เบื้องหน้าไม่ได้ตั้งค่า FLAG_KEEP_SCREEN_ON ไว้ อุปกรณ์จะเข้าสู่โหมดแอมเบียนท์โดยอัตโนมัติหลังจากไม่มีการใช้งานเป็นระยะเวลาหนึ่ง

ดูเพิ่มเติม