As a user goes through their day, their audio glasses or display glasses might lose their connection to the host device (such as the user's phone) or their glasses might be temporarily unavailable if they take their glasses off. To account for these kinds of changes in device availability, your app can use the XR Device Availability API, which consolidates device availability signals into the standard Android Lifecycle.State values. Use this API to help manage audio routing, hotword activation, and to know when to expect user input based on when the glasses are available.
درک وضعیتهای چرخه حیات
جدول زیر نحوهی نگاشت سیگنالهای دسترسیپذیری دستگاه به مقادیر Lifecycle.State را نشان میدهد.
وضعیت چرخه حیات | وضعیت دستگاه | توضیحات |
|---|---|---|
| ایجاد شده | شیء چرخه حیات ایجاد شده است اما هنوز مشاهده نشده است. |
| غیرفعال | سرویس متصل است، اما کاربر دستگاه را استفاده نمیکند. |
| فعال | کاربر دستگاه را پوشیده است. |
| قطع ارتباط | دستگاه قطع شده یا اتصال سرویس از بین رفته است. |
بررسی و نظارت بر در دسترس بودن دستگاه
برای بررسی و نظارت بر در دسترس بودن دستگاه، از یک زمینه پیشبینیشده به همراه وضعیت چرخه عمر استفاده خواهید کرد تا مشخص شود که برنامه شما چگونه باید هر مورد را مدیریت کند:
// In your phone activity or service, check for projected device connection state before // attempting to create a projected device context and get the device lifecycle. ProjectedContext.isProjectedDeviceConnected(context, currentCoroutineContext()) .flatMapLatest { isConnected -> if (isConnected) { try { // Create the projected device context on connection val projectedContext = ProjectedContext.createProjectedDeviceContext(context) val xrDevice = XrDevice.getCurrentDevice(projectedContext) // Get the device lifecycle xrDevice.getLifecycle().currentStateFlow } catch (e: IllegalStateException) { flowOf(Lifecycle.State.DESTROYED) } } else { flowOf(Lifecycle.State.DESTROYED) } } .collect { state -> when (state) { Lifecycle.State.STARTED -> { /* Device is available (worn) */ } Lifecycle.State.CREATED -> { /* Device is unavailable (not worn) */ } Lifecycle.State.DESTROYED -> { /* Device is disconnected from host phone */ } else -> { /* Handle other states */ } } } }
نکات کلیدی در مورد کد
- بررسی اتصال : قبل از دسترسی به چرخه حیات دستگاه، برای تأیید اتصال دستگاه نمایش داده شده به دستگاه میزبان،
ProjectedContext.isProjectedDeviceConnectedرا فراخوانی کنید. - دریافت یک
ProjectedContext: فقط پس از تأیید اتصال،ProjectedContext.createProjectedDeviceContextرا فراخوانی کنید و مطمئن شوید که این context را به نمونهXrDeviceخود ارسال میکنید. - مدیریت نامعتبرسازی زمینه : هر بار که یک دستگاه پیشبینیشده متصل میشود، یک
deviceIdجدید ایجاد میشود. به محض رسیدن وضعیت بهDESTROYED،ProjectedContextفعلی نامعتبر است. فوراً استفاده از آن را متوقف کنید و منتظر اتصال جدید باشید. - بهینهسازی باتری و منابع : عملکرد برنامه را بر اساس وضعیت چرخه عمر به طور مناسب مدیریت کنید تا منابع سیستم حفظ شده و مصرف باتری کاهش یابد. به عنوان مثال، باید منابع مخصوص عینک، مانند جریان داده دوربین، را هنگامی که وضعیت از
STARTEDبهCREATEDتغییر میکند، آزاد کنید. وضعیتCREATEDنشان میدهد که دستگاه دیگر استفاده نمیشود، بنابراین توقف این فرآیندها برای جلوگیری از تخلیه غیرضروری باتری و ارتقای حریم خصوصی کاربر ضروری است.