برخیاز برنامهها، مثل بازیها یا برنامههای فیلم، باید صفحهنمایش را روشن نگه دارند. برخیاز میاناهای برنامهسازی کاربردی Android بهطور خودکار صفحهنمایش را برای شما روشن نگه میدارند. در موارد دیگر، میتوانید از اصلاحکننده Compose استفاده کنید یا پرچمی را برای روشن نگه داشتن صفحهنمایش بهصورت دستی تنظیم کنید.
روشن نگه داشتن صفحهنمایش در Compose
اگر برنامهتان از Jetpack Compose استفاده میکند، اصلاحکننده keepScreenOn را روی یک
composable اعمال کنید. این اصلاحکننده در 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 را تنظیم نکند، دستگاه بهطور خودکار پساز مدتی عدم فعالیت
وارد «حالت گزینشی» میشود.