زمانی که کاربر دیگر از ساعت خود استفاده نمیکند، Wear OS بهطور خودکار حرکت به حالت کم مصرف را برای یک برنامه فعال کنترل میکند. این حالت محیطی سیستم نامیده می شود. اگر کاربر دوباره در یک بازه زمانی خاص با ساعت تعامل داشته باشد، Wear OS کاربر را از جایی که کار را متوقف کرده است به برنامه بازمیگرداند.
برای موارد استفاده خاص - برای مثال، کاربری که میخواهد ضربان قلب و سرعت را در حین دویدن ببیند - همچنین میتوانید نمایشگرهایی را در حالت محیطی کم مصرف کنترل کنید. برنامههای Wear OS که در هر دو حالت محیطی و تعاملی اجرا میشوند ، برنامههای همیشه روشن نامیده میشوند.
نمایش دائمی یک برنامه بر عمر باتری تأثیر می گذارد، بنابراین هنگام افزودن این ویژگی به برنامه خود، این تأثیر را در نظر بگیرید.
پروژه خود را پیکربندی کنید
برای پشتیبانی از حالت محیطی، مراحل زیر را دنبال کنید:
- پروژه خود را بر اساس تنظیمات موجود در صفحه ایجاد و اجرای یک برنامه پوشیدنی ایجاد یا به روز کنید.
- مجوز
WAKE_LOCK
را به فایل Manifest Android اضافه کنید:
<uses-permission android:name="android.permission.WAKE_LOCK" />
حالت همیشه روشن را فعال کنید
برای استفاده از کلاس AmbientLifecycleObserver
موارد زیر را انجام دهید:
- رابط
AmbientLifecycleObserver.AmbientLifecycleCallback
را مانند مثال زیر پیاده سازی کنید. در این مرحله، روشها خالی هستند، اما بعداً در راهنما جزئیات مربوط به تغییراتی را که باید در تجسم برای ورود و خروج از حالت محیطی ایجاد کنید، ارائه میکند.کاتلین
val ambientCallback = object : AmbientLifecycleObserver.AmbientLifecycleCallback { override fun onEnterAmbient(ambientDetails: AmbientLifecycleObserver.AmbientDetails) { // ... Called when moving from interactive mode into ambient mode. } override fun onExitAmbient() { // ... Called when leaving ambient mode, back into interactive mode. } override fun onUpdateAmbient() { // ... Called by the system in order to allow the app to periodically // update the display while in ambient mode. Typically the system will // call this every 60 seconds. } }
- یک
AmbientLifecycleObserver
ایجاد کنید و ناظر را ثبت کنید. معمولاً اگر از Compose for Wear OS استفاده میشود، درonCreate()
یا Composable سطح بالا استفاده میشود تا امکان فعال کردن رفتار همیشه روشن در طول چرخه حیات فعالیت وجود داشته باشد.کاتلین
private val ambientObserver = AmbientLifecycleObserver(activity, callback) override fun onCreate(savedInstanceState: Bundle) { super.onCreate(savedInstanceState) lifecycle.addObserver(observer) // ... }
- هنگامی که رفتار همیشه روشن دیگر مورد نیاز نیست، با فراخوانی
removeObserver()
ناظر را حذف کنید. برای مثال، ممکن است این متد را در متدonDestroy()
فعالیت خود فراخوانی کنید.
برنامه های همیشه روشن می توانند به پس زمینه منتقل شوند
با شروع در Wear OS 5، سیستم برنامههای همیشه روشن را پس از اینکه در حالت محیطی برای مدت زمان مشخصی قابل مشاهده بودند، به پسزمینه منتقل میکند. کاربران می توانند زمان وقفه را در تنظیمات سیستم پیکربندی کنند.
اگر برنامه همیشه روشن شما اطلاعاتی در مورد یک کار در حال انجام کاربر - مانند پخش موسیقی یا یک جلسه تمرینی - نشان می دهد، ممکن است بخواهید فعالیت در حال انجام را تا پایان کار قابل مشاهده نگه دارید. برای انجام این کار، از API فعالیت در حال انجام برای ارسال یک اعلان در حال انجام که به فعالیت همیشه فعال شما مرتبط است، استفاده کنید.
برای اینکه سیستم فعالیت در حال انجام را تشخیص دهد، هدف لمسی اعلان در حال انجام باید به فعالیت همیشه روشن شما اشاره کند، همانطور که در قطعه کد زیر نشان داده شده است:
// Create a pending intent that point to your always-on activity
val touchIntent =
PendingIntent.getActivity(
context,
0,
Intent(context, MyAlwaysOnActivity::class.java),
PendingIntent.FLAG_MUTABLE or PendingIntent.FLAG_UPDATE_CURRENT
)
val notificationBuilder =
NotificationCompat.Builder(this, CHANNEL_ID)
// ...
.setOngoing(true)
val ongoingActivity =
OngoingActivity.Builder(
applicationContext, NOTIFICATION_ID, notificationBuilder
)
// ...
.setTouchIntent(touchIntent)
.build()
ongoingActivity.apply(applicationContext)
notificationManager.notify(
NOTIFICATION_ID,
notificationBuilder.build()
)
ظاهر بصری را در حالت محیطی تغییر دهید
به طور پیش فرض، هنگام اجرای همیشه روشن، وقتی ساعت وارد حالت محیطی می شود، صفحه نمایش ظاهر خود را تغییر نمی دهد. میتوانید این رفتار را با نادیده گرفتن روشهای موجود در AmbientLifecycleCallback
تغییر دهید.
برای کمک به حفظ انرژی، موارد زیر را انجام دهید:
- پیکسل های کمتری را روشن کنید و بیشتر صفحه را سیاه کنید. فقط اطلاعات مهم را در حالت محیطی نشان دهید و هنگامی که کاربر وارد حالت تعاملی می شود جزئیات بیشتری ارائه دهید.
- هر محتوا را برای بهروزرسانیهای کمتکرار تنظیم کنید. به عنوان مثال، تایمرها را بهجای نزدیکترین ثانیه در نزدیکترین دقیقه نشان دهید.
- در شیء
AmbientDetails
بهonEnterAmbient()
ارسال شد:- اگر
deviceHasLowBitAmbient
تنظیم شده است، در صورت امکان، anti-aliasing را غیرفعال کنید. - اگر
burnInProtectionRequired
تنظیم شده است، تصویرسازی را به صورت دورهای تغییر دهید و از مناطق سفید جامد اجتناب کنید.
- اگر
هنگام استفاده از Compose for Wear OS، توصیه میکنیم از این روشهای پاسخ به تماس برای بهروزرسانی وضعیت استفاده کنید، که به سیستم اجازه میدهد تا رابط کاربری شما را بهطور مناسب ترکیب کند.
برای مثالی از اینکه چگونه می توان به این امر دست یافت، نمونه تمرین مبتنی بر نوشتن را در GitHub بررسی کنید، که از AmbientAware
قابل ترکیب از کتابخانه Horologist استفاده می کند.