השארת המסך פועל

אפליקציות מסוימות, כמו משחקים או אפליקציות של סרטים, צריכות שהמסך יישאר דולק. חלק מממשקי ה-API של Android משאירים את המסך פועל באופן אוטומטי. במקרים אחרים, אתם יכולים להשתמש ב-Compose modifier או להגדיר דגל כדי להשאיר את המסך פועל באופן ידני.

השארת המסך פועל ב-Compose

אם האפליקציה משתמשת ב-Jetpack Compose, צריך להחיל את העיבוד keepScreenOn על פונקציה קומפוזבילית. התכונה זמינה ב-Compose UI מגרסה 1.9.0 ואילך. המסך נשאר דלוק כל עוד ה-modifier הוא חלק מהקומפוזיציה. כשאין פונקציות קומפוזביליות שמשתמשות ב-modifier, ‏ 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 בקובץ ה-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, המכשיר נכנס באופן אוטומטי למצב רגיש לסביבה אחרי תקופה של חוסר פעילות.

עוד באותו הקשר