برنامه پشتیبانی از انواع مختلف عینک صوتی و عینک نمایشگردار

دستگاه‌های XR واجدشرایط
این راهنمایی به شما کمک می‌کند برای این نوع دستگاه‌های واقعیت گسترده تجربه بسازید.
عینک
نمایشگردار و صوتی

انواع مختلف عینک‌های صوتی و عینک‌های نمایشگردار قابلیت‌های متفاوتی دارند. برای مثال، درحالی‌که همه عینک‌های صوتی و عینک‌های نمایشگردار دارای تجربه‌های صوتی ازطریق صدا هستند، فقط عینک‌های نمایشگردار نمایشگری دارند که برنامه شما می‌تواند رابط‌های کاربری ساخته‌شده با Jetpack Compose Glimmer را در آن نشان دهد.

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

آشنایی با چرخه حیات فعالیت‌های پیش‌بینی‌شده

فعالیتی که برای عینک صوتی و عینک نمایشگردار می‌سازید مستقیماً در دستگاه اجرا نمی‌شود، بلکه از دستگاه میزبان (مانند تلفن کاربر) به دستگاه منتقل می‌شود. فعالیت‌های اختصاصی که برای این هدف می‌سازید فعالیت‌های پیش‌بینی‌شده هستند. چرخه حیات فعالیت‌های فرافکنی‌شده براساس چرخه حیات فعالیت استاندارد ساخته شده است، اما شامل چندین تفاوت کلیدی نیز می‌شود که از قابلیت‌های انواع مختلف عینک‌های صوتی و عینک‌های نمایشگردار پشتیبانی می‌کند.

شکل ۱. رویدادهای کلیدی در چرخه حیات فعالیت‌های پیش‌بینی‌شده.

در اینجا تفکیک رویدادهای کلیدی با توضیحات مربوط به تعاملات خاص فعالیت‌هایی که به عینک صوتی و عینک نمایشگردار فرافکنی می‌شوند ارائه شده است:

  • onCreate()
    • وقتی فعالیت پیش‌بینی‌شده ایجاد می‌شود، فراخوانی می‌شود.
    • رابط کاربری Glimmer در Jetpack Compose برنامه و سایر مؤلفه‌ها را در اینجا مقداردهی اولیه کنید.
  • onStart()
    • زمانی فراخوانی می‌شود که فعالیت پیش‌بینی‌شده درحال شروع شدن است و کاربر از برنامه آگاه است.
  • onResume()
    • وقتی فعالیت پیش‌بینی‌شده دوباره متمرکز می‌شود، فراخوانی می‌شود. وقتی فعالیت در کانون توجه است، تعاملی است و می‌تواند از صفحه لمسی یا ورودی دکمه استفاده کند.
    • وقتی عینک دوباره روی چشم گذاشته می‌شود (پوشیده می‌شود)، پس‌از اینکه قبلاً از روی سر برداشته شده است (درآورده شده است)، فراخوانی می‌شود.
  • onPause()
    • زمانی فراخوانی می‌شود که فعالیت پیش‌بینی‌شده تمرکز را ازدست می‌دهد، اما کاربر همچنان از برنامه شما آگاه است. وقتی فعالیت خارج از تمرکز است، تعاملی نیست و مصرف ورودی را متوقف می‌کند.
  • onStop()
    • وقتی سیستم تشخیص دهد که کاربر دیگر از برنامه شما آگاه نیست، فراخوانی می‌شود.
    • وقتی عینک از سر برداشته می‌شود (درآورده می‌شود) فراخوانی می‌شود.
  • onDestroy()
    • وقتی فعالیت پیش‌بینی‌شده درحال نابود شدن است، فراخوانی می‌شود. وقتی این فراخوانی می‌شود، سیستم همه منابعی را که به فعالیت گره خورده‌اند آزاد می‌کند.

آشنایی با نحوه تأثیر وضعیت نمایش بر چرخه حیات فعالیت پیش‌بینی‌شده

در Activity استاندارد، وقتی صفحه‌نمایش دستگاه خاموش می‌شود، وضعیت چرخه حیات تغییر می‌کند و معمولاً به onPause() یا onStop() منتقل می‌شود. درمقابل، چرخه حیات فعالیت فرافکنی‌شده با روشن یا خاموش شدن نمایشگر عینک تغییر نمی‌کند. این رفتار به این معنی است که فعالیت فرافکنی‌شده شما حتی زمانی که نمایشگر خاموش است، در حالت «شروع‌شده» یا «ازسرگرفته‌شده» به اجرا ادامه می‌دهد، که باعث می‌شود تجربه‌های صوتی برنامه‌تان بدون وقفه ادامه یابد.

سایر تغییرات حالت فعالیت که توسط رویدادهای مختلف سیستم و کاربر راه‌اندازی می‌شوند به‌صورت معمول رفتار می‌کنند.

درک کنید که آگاهی کاربر چگونه بر فعالیت پیش‌بینی‌شده شما تأثیر می‌گذارد

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

  • گوش دادن به صدا، بازخورد شنیداری، یا سایر نشانه‌های صوتی.
  • کنش‌های برنامه که LED سَمت کاربر را فعال می‌کند، مثل نشانگر حریم خصوصی اگر برنامه شما به دوربین یا میکروفون دسترسی داشته باشد.

در این شرایط، کاربر می‌داند که عینک صوتی یا عینک نمایشگردار او فعال است و پاسخ می‌دهد، حتی اگر به نمایشگر نگاه نکند:

  • وضعیت onStart() برای فعالیت‌های پیش‌بینی‌شده یعنی فعالیت فعال است.
  • وضعیت onResume() یعنی فعالیت تعاملی است و می‌تواند ورودی صفحه لمسی را دریافت کند، یا درحال دریافت ارسال ورودی اصلی است.

تا زمانی که کاربر از برنامه شما آگاه باشد، فعالیت شما فعال و در پیش‌زمینه باقی می‌ماند. اگر سیستم برای مدت کوتاهی هیچ نشانه‌ای از آگاهی تشخیص ندهد، سیستم فعالیت را از پیش‌زمینه برمی‌دارد و درنهایت onStop() را راه‌اندازی می‌کند.

درک فعالیت‌های پیش‌بینی‌شده و زمینه‌های پیش‌بینی‌شده

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

بسته به بافت فعالیت فراخواننده، بافت پیش‌بینی‌شده می‌تواند به‌طور خودکار به برنامه شما اعطا شود:

  • برای فعالیت‌های فرافکنی‌شده: اگر کد برنامه‌تان از داخل فعالیت فرافکنی‌شده شما اجرا می‌شود، بافت فعالیت خودش ازقبل بافت فرافکنی‌شده است. در این سناریو، تماس‌های برقرارشده در آن فعالیت ازقبل می‌توانند به سخت‌افزار عینک دسترسی داشته باشند.

  • برای برنامه‌ها یا سرویس‌های تلفن: اگر بخشی از برنامه شما خارج از فعالیت فرافکنی‌شده شما (مانند فعالیت تلفن یا سرویس) نیاز به دسترسی به سخت‌افزار عینک داشته باشد، باید به‌طور صریح یک زمینه فرافکنی‌شده دریافت کند. برای انجام این کار، از روش createProjectedDeviceContext() استفاده کنید.

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

آشنایی با میاناهای برنامه‌سازی کاربردی آگاه از دستگاه

برخی‌از میاناهای برنامه‌سازی کاربردی استاندارد Android بسته به Context فعالیت فراخواننده، سخت‌افزار دستگاهی را که به آن دسترسی دارند تغییر می‌دهند. وقتی این میاناهای برنامه‌سازی کاربردی بافت پیش‌بینی‌شده‌ای را دریافت می‌کنند، به‌جای سخت‌افزار تلفن میزبان، به سخت‌افزار عینک دسترسی پیدا می‌کنند:

  • CameraManager: به دوربین عینک دسترسی پیدا می‌کند.
  • SensorManager: داده‌های حسگر (برای مثال، داده‌های ژیروسکوپ یا شتاب‌سنج) را از عینک بازیابی می‌کند.
  • AudioManager: جاری‌سازی‌های صوتی، میزان صدا، و مسیریابی را در عینک مدیریت می‌کند.