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

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

איך להשאיר את המסך דלוק באופן ידני

כדי שמסך המכשיר ימשיך לפעול, מגדירים את הדגל 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_KEEP_SCREEN_ON עוברת לרקע, המערכת מאפשרת למסך להיכבות כרגיל. במקרה כזה, אין צורך לנקות את הדגל באופן מפורש. אם האפליקציה לא צריכה יותר להשאיר את המסך דלוק, צריך לנקות את הדגל באמצעות קריאה ל-clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON).

מצב רגישות לסביבה בטלוויזיה

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

למידע נוסף