स्क्रीन चालू रखें

कुछ ऐप्लिकेशन के लिए स्क्रीन को चालू रखना ज़रूरी होता है. जैसे, गेम या फ़िल्म वाले ऐप्लिकेशन. कुछ Android एपीआई, स्क्रीन को अपने-आप चालू रखते हैं. अन्य मामलों में, स्क्रीन को मैन्युअल तरीके से चालू रखने के लिए, Compose मॉडिफ़ायर का इस्तेमाल किया जा सकता है या कोई फ़्लैग सेट किया जा सकता है.

Compose में स्क्रीन चालू रखना

अगर आपका ऐप्लिकेशन Jetpack Compose का इस्तेमाल करता है, तो कंपोज़ेबल पर keepScreenOn मॉडिफ़ायर लागू करें. यह मॉडिफ़ायर, Compose यूज़र इंटरफ़ेस (यूआई) 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)
    }
}

स्क्रीन को चालू रखने का एक और तरीका है. इसके लिए, अपने ऐप्लिकेशन की लेआउट एक्सएमएल फ़ाइल में 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 को सेट नहीं करती है, तो कुछ समय तक कोई गतिविधि न होने पर, डिवाइस अपने-आप हमेशा चालू स्क्रीन मोड में चला जाता है.

इन्हें भी देखें