讓螢幕保持開啟

某些應用程式 (例如遊戲或電影應用程式) 需要保持螢幕開啟。部分 Android API 會自動讓螢幕保持開啟。在其他情況下,您可以使用 Compose 修飾符或設定標記,手動讓螢幕保持開啟。

在 Compose 中讓螢幕保持開啟

如果應用程式使用 Jetpack Compose,請將 keepScreenOn 修飾符套用至可組合項。這個修飾符適用於 Compose UI 1.9.0 以上版本。只要修飾符是組合的一部分,螢幕就會保持開啟。如果沒有可組合項使用修飾符,Compose 就會停止自動讓螢幕保持開啟。

如要讓螢幕只在部分時間保持開啟,請視情況套用修飾符。以下範例只會在播放影片時保持螢幕開啟:

@Composable
fun VideoPlayer(isPlaying: Boolean, modifier: Modifier = Modifier) {
    Box(
        modifier = modifier
            // Keep the screen on only while the video plays.
            .then(if (isPlaying) Modifier.keepScreenOn() else Modifier)
    ) {
        // Video surface and playback controls.
    }
}

修飾符設定的檢視畫面屬性與下一節所述的 android:keepScreenOn 屬性相同,因此只有在應用程式視窗可見時,螢幕才會保持開啟。不會清除應用程式在視窗上設定的 FLAG_KEEP_SCREEN_ON 旗標。

手動讓螢幕保持開啟

如要讓裝置螢幕保持開啟,請在活動中設定 FLAG_KEEP_SCREEN_ON 旗標。這個旗標只能在活動中設定,不得在服務或其他應用程式元件中設定。例如:

class MainActivity : Activity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
    }
}

另一種讓螢幕保持開啟的方法,是在應用程式的版面配置 XML 檔案中設定 android:keepScreenOn 屬性:

<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,裝置會在閒置一段時間後自動進入微光模式。

另請參閱