حالت محیطی

Ambient Mode یک محافظ صفحه نمایش است که در Google TV و Android TV تعبیه شده است. هدف آن جلوگیری از نمایش تصاویر ثابت برای مدت طولانی است. این برای فناوری‌های نمایشگر، مانند OLED، که ممکن است مستعد سوختن صفحه نمایش باشند، مهم است.

سیستم عامل پس از 10 دقیقه عدم فعالیت کاربر، دستگاه را در حالت محیطی قرار می دهد. پس از مدتی دیگر از عدم فعالیت کاربر (که توسط تنظیمات صرفه جویی انرژی دستگاه تعریف شده است) سیستم عامل وارد حالت صرفه جویی در انرژی می شود و نمایشگر را خاموش می کند. برنامه‌های پخش رسانه ممکن است از ورود دستگاه به حالت محیطی جلوگیری کنند، علیرغم عدم تعامل کاربر با آن، مثلاً در هنگام تماشای یک فیلم.

اگر کاربر ظرف 30 دقیقه پس از ورود به حالت محیطی با دستگاه تعامل داشته باشد، برنامه ای که در هنگام ورود به حالت محیطی فعال بوده بازیابی می شود. اگر کاربر بیش از 30 دقیقه پس از ورود به حالت محیطی با دستگاه تعامل داشته باشد، به صفحه اصلی باز می گردد. هنگامی که کاربر دستگاه را با استفاده از دکمه روشن/خاموش در حالی که در حالت ذخیره انرژی است راه اندازی می کند، به صفحه اصلی منتقل می شود. از طرف دیگر، اگر کاربر دستگاه را در حالی که در حالت صرفه جویی انرژی است با استفاده از دکمه های برنامه خاص (مثلاً YouTube) راه اندازی کند، مستقیماً به آن برنامه منتقل می شود.

اگر MediaSession برای پخش رسانه استفاده می‌کنید، هنگام شروع پخش، یک Wake lock ضمنی جزئی نگه می‌دارد. توقف پخش، این wake lock را آزاد نمی کند. این بدان معنی است که ممکن است دستگاه به طور خودکار وارد حالت محیطی شود، اما متعاقباً وارد حالت صرفه جویی در انرژی نخواهد شد. اگر کاربر ظرف 30 دقیقه پس از ورود به حالت محیطی با دستگاه تعامل داشته باشد، برنامه شما بازیابی می شود.

پخش ویدئو

برای پخش ویدیو، مهم است که از ورود دستگاه به حالت محیطی در حین پخش توسط کاربر جلوگیری کنید تا یک تجربه تماشای بی وقفه را ارائه دهید. با این حال، برنامه‌ها نباید از ورود دستگاه‌ها به حالت محیطی هنگام توقف یا توقف پخش جلوگیری کنند.

پخش صدا

برای پخش صدا، برنامه ها نباید از حالت محیطی در حین پخش جلوگیری کنند، مگر اینکه محافظ صفحه نمایش خود را با تصاویر غیر ایستا اجرا کنند. تا زمانی که حالت محیطی فعال است، پخش صدا ادامه خواهد یافت.

پخش صوت در Android به طور ضمنی یک wake lock جزئی را نگه می‌دارد. این مانع از ورود دستگاه به حالت محیطی نمی شود، اما از انتقال بعدی به حالت ذخیره انرژی جلوگیری می کند . بنابراین پخش حتی پس از ورود دستگاه به حالت محیطی ادامه خواهد داشت، اما از خوابیدن دستگاه جلوگیری می‌شود تا امکان پخش بدون وقفه فراهم شود.

جلوگیری از حالت محیطی

می توان از قرار دادن دستگاه در حالت محیطی توسط سیستم عامل جلوگیری کرد، اما این باید مطابق با الزامات حالت محیطی استفاده شود. توسعه دهندگان برنامه نمی توانند از ورود دستگاه به حالت ذخیره انرژی جلوگیری کنند.

برنامه ها می توانند با تنظیم یک پرچم روی Window از خاموش شدن صفحه جلوگیری کنند:

کاتلین

requireActivity().window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)

جاوا

requireActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

وقتی این پرچم تنظیم شده است، حالت محیط غیرفعال می شود. برای فعال کردن مجدد آن باید پرچم را پاک کنید:

کاتلین

requireActivity().window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)

جاوا

requireActivity().getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);