تحتاج بعض التطبيقات إلى إبقاء الشاشة قيد التشغيل، مثل الألعاب أو تطبيقات الأفلام. تُبقي بعض واجهات برمجة التطبيقات في Android الشاشة قيد التشغيل تلقائيًا. في حالات أخرى، يمكنك استخدام مُعدِّل Compose أو ضبط علامة لإبقاء الشاشة قيد التشغيل يدويًا.
إبقاء الشاشة مفعّلة في Compose
إذا كان تطبيقك يستخدم Jetpack Compose، يمكنك تطبيق المُعدِّل keepScreenOn على دالة مركّبة. يتوفّر المُعدِّل في الإصدار 1.9.0 من Compose UI والإصدارات الأحدث. وتظل الشاشة
مضاءة طالما أنّ المُعدِّل جزء من التركيب. وعندما لا تستخدم أي دالة مركّبة
المعدِّل، يتوقف 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، سيدخل الجهاز تلقائيًا في "وضع عدم النشاط" بعد فترة من عدم النشاط.