انواع مختلف عینکهای صوتی و عینکهای نمایشگر، قابلیتهای متفاوتی دارند. برای مثال، در حالی که همه عینکهای صوتی و عینکهای نمایشگر، تجربههای صوتی را از طریق صدا ارائه میدهند، فقط عینکهای نمایشگر دارای نمایشگری هستند که برنامه شما میتواند رابطهای کاربری ساخته شده با Jetpack Compose Glimmer را در آن نمایش دهد.
برای ایجاد یک تجربه کاربری یکپارچه در طیف وسیعی از دستگاهها، Activity خود را برای عینک برنامهریزی کنید تا قابلیتهای دستگاههای مختلف را بررسی کند. این رویکرد با ایجاد یک Activity که رفتار خود را تطبیق میدهد، به جای چندین Activity که دستگاههای خاص را هدف قرار میدهند، توسعه را ساده میکند.
درک چرخه حیات فعالیتهای پیشبینیشده
اکتیویتیای که برای عینکهای صوتی و عینکهای نمایشی میسازید، مستقیماً روی دستگاه اجرا نمیشود، بلکه از یک دستگاه میزبان (مانند تلفن کاربر) به دستگاه نمایش داده میشود. اکتیویتیهای اختصاصی که برای این منظور میسازید، فعالیتهای نمایش داده شده (projected activities) هستند. چرخه حیات اکتیویتیهای نمایش داده شده بر اساس چرخه حیات استاندارد اکتیویتی ساخته شده است، اما شامل چندین تفاوت کلیدی نیز میشود که از قابلیتهای انواع مختلف عینکهای صوتی و عینکهای نمایشی پشتیبانی میکند.

در اینجا خلاصهای از رویدادهای کلیدی، به همراه توضیحاتی در مورد تعاملات مختص فعالیتهایی که برای عینکهای صوتی و عینکهای نمایشی پخش میشوند، آورده شده است:
-
onCreate()- زمانی که فعالیت پیشبینیشده ایجاد میشود، فراخوانی میشود.
- رابط کاربری Jetpack Compose Glimmer و سایر کامپوننتهای برنامه خود را اینجا مقداردهی اولیه کنید.
-
onStart()- زمانی فراخوانی میشود که اکتیویتیِ پیشبینیشده در حال شروع است و کاربر از وجود برنامه آگاه است.
-
onResume()- زمانی فراخوانی میشود که اکتیویتیِ پیشبینیشده دوباره فوکوس را به دست آورد. در حالی که اکتیویتی در فوکوس است، قابل تعامل است و میتواند از ورودیهای صفحه لمسی یا دکمه استفاده کند.
- زمانی که عینک را دوباره روی چشم میگذارند (میزنند)، بعد از اینکه قبلاً از روی سرشان برداشتهاند (درمیآورند)، این اصطلاح گفته میشود.
-
onPause()- زمانی فراخوانی میشود که اکتیویتیِ پیشبینیشده فوکوس را از دست میدهد، اما کاربر هنوز از برنامه شما آگاه است. در حالی که اکتیویتی از فوکوس خارج شده است، قابل تعامل نیست و مصرف ورودی را متوقف میکند.
-
onStop()- زمانی فراخوانی میشود که سیستم معتقد باشد کاربر دیگر از برنامه شما آگاه نیست.
- وقتی عینک از سر برداشته میشود (در آورده میشود) فراخوانی میشود.
-
onDestroy()- زمانی فراخوانی میشود که فعالیت پیشبینیشده در شرف نابودی باشد. وقتی این فراخوانی میشود، سیستم تمام منابعی را که به فعالیت گره خوردهاند، آزاد میکند.
درک کنید که چگونه وضعیت نمایش بر چرخه حیات فعالیت پیشبینیشده تأثیر میگذارد.
در یک Activity استاندارد، وضعیت چرخه حیات با خاموش شدن صفحه نمایش دستگاه تغییر میکند و معمولاً به onPause() یا onStop() منتقل میشود. در مقابل، چرخه حیات activity پیشبینیشده با روشن یا خاموش شدن صفحه نمایش عینک تغییر نمیکند. این رفتار به این معنی است که activity پیشبینیشده شما حتی زمانی که صفحه نمایش خاموش است، در حالت Started (شروعشده) یا Resume (از سر گرفتهشده) به اجرا ادامه میدهد، که به شما امکان میدهد تجربه صوتی برنامه شما بدون وقفه ادامه یابد.
سایر تغییرات وضعیت فعالیت که توسط رویدادهای مختلف سیستم و کاربر ایجاد میشوند، به روش معمول رفتار میکنند.
بفهمید که چگونه آگاهی کاربر بر فعالیت پیشبینیشده شما تأثیر میگذارد
کاربر میتواند از فعالیت پیشبینیشده شما آگاه باشد، حتی اگر قابل مشاهده نباشد. آگاهی به تمام راههایی اشاره دارد که کاربر میتواند تجربیات برنامه شما را حس کند و با آنها تعامل داشته باشد، از جمله موارد زیر:
- گوش دادن به صدا، بازخورد شنیداری یا سایر نشانههای صوتی.
- اقدامات برنامه که یک چراغ LED رو به کاربر را فعال میکنند، مانند یک نشانگر حریم خصوصی در صورت دسترسی برنامه شما به دوربین یا میکروفون.
در این شرایط، کاربر از فعال بودن و پاسخدهی عینکهای صوتی و نمایشگر آگاه است، حتی اگر به نمایشگر نگاه نکند:
- حالت
onStart()برای فعالیتهای برنامهریزیشده به این معنی است که فعالیت فعال است. - حالت
onResume()به این معنی است که اکتیویتی قابل تعامل است و میتواند ورودی تاچپد را دریافت کند، یا در حال دریافت ورودی اولیه از طریق dispatch است.
تا زمانی که کاربر از برنامه شما آگاه باشد، فعالیت شما فعال و در پیشزمینه باقی میماند. اگر سیستم برای مدت کوتاهی هیچ سیگنال آگاهی را تشخیص ندهد، سیستم فعالیت را از پیشزمینه حذف کرده و در نهایت onStop() را فعال میکند.
فعالیتهای پیشبینیشده و زمینههای پیشبینیشده را درک کنید
عینکهای صوتی و عینکهای نمایشگر به عنوان یک دستگاه متصل در نظر گرفته میشوند که قابلیتهای تلفن کاربر را گسترش میدهند. یک زمینهی پیشبینیشده، یک Context آگاه از دستگاه است که به برنامهها اجازه میدهد تا با سختافزار روی یک دستگاه عینک متصل - مانند حسگرها، دوربین یا میکروفون آن - به جای سختافزار تلفن تعامل داشته باشند. همانطور که شما تجربیاتی را برای عینکهای صوتی و عینکهای نمایشگر توسعه میدهید، برنامهی شما باید از یک زمینهی پیشبینیشده برای دسترسی به سختافزار عینک استفاده کند.
یک context پیشبینیشده میتواند بهطور خودکار به برنامه شما بسته به context اکتیویتیِ فراخوانیکننده اعطا شود:
برای فعالیتهای پیشبینیشده : اگر کد برنامه شما از درون فعالیت پیشبینیشده شما اجرا میشود، زمینه فعالیت خودش از قبل یک زمینه پیشبینیشده است. در این سناریو، فراخوانیهای انجامشده در آن فعالیت میتوانند از قبل به سختافزار عینک دسترسی داشته باشند.
برای برنامهها یا سرویسهای تلفن : اگر بخشی از برنامه شما خارج از activity پیشبینیشده شما (مانند activity تلفن یا یک سرویس) نیاز به دسترسی به سختافزار عینک داشته باشد، باید صریحاً یک context پیشبینیشده را دریافت کند. برای انجام این کار، از متد
createProjectedDeviceContext()استفاده کنید.
برای اطلاعات بیشتر، به «استفاده از یک زمینه پیشبینیشده برای دسترسی به سختافزار در عینکهای صوتی و عینکهای نمایشی» مراجعه کنید.
درک APIهای آگاه از دستگاه
برخی از APIهای استاندارد اندروید، بسته به Context مربوط به activity فراخوانی، سختافزار دستگاهی که به آن دسترسی دارند را تغییر میدهند. وقتی این APIها یک context پیشبینیشده دریافت میکنند، به جای سختافزار دستگاه تلفن میزبان، به سختافزار عینک دسترسی پیدا میکنند:
-
CameraManager: به دوربین روی عینک دسترسی پیدا میکند. -
SensorManager: دادههای حسگر (مثلاً دادههای ژیروسکوپ یا شتابسنج) را از عینک بازیابی میکند. -
AudioManager: جریانهای صوتی، میزان صدا و مسیریابی را روی عینک مدیریت میکند. -
AudioRecord: با استفاده از میکروفون عینک، صدا را ضبط میکند.