در زمان اجرا، در دسترس بودن دستگاه را برای عینک‌های صوتی و عینک‌های نمایشی بررسی کنید

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

با گذشت روز، ممکن است اتصال عینک صوتی یا عینک نمایشی کاربر به دستگاه میزبان (مانند تلفن کاربر) قطع شود یا اگر عینک خود را بردارد، عینک او موقتاً از دسترس خارج شود. برای در نظر گرفتن این نوع تغییرات در دسترس بودن دستگاه، برنامه شما می‌تواند از API دسترسی به دستگاه XR استفاده کند که سیگنال‌های دسترسی به دستگاه را در مقادیر استاندارد Lifecycle.State اندروید ادغام می‌کند. از این API برای مدیریت مسیریابی صوتی، فعال‌سازی کلمات کلیدی و دانستن زمان انتظار ورودی کاربر بر اساس زمان در دسترس بودن عینک استفاده کنید.

درک وضعیت‌های چرخه حیات

جدول زیر نحوه‌ی نگاشت سیگنال‌های دسترسی‌پذیری دستگاه به مقادیر Lifecycle.State را نشان می‌دهد.

وضعیت چرخه حیات

وضعیت دستگاه

توضیحات

INITIALIZED

ایجاد شده

شیء چرخه حیات ایجاد شده است اما هنوز مشاهده نشده است.

CREATED

غیرفعال

سرویس متصل است، اما کاربر دستگاه را استفاده نمی‌کند.

STARTED

فعال

کاربر دستگاه را پوشیده است.

DESTROYED

قطع ارتباط

دستگاه قطع شده یا اتصال سرویس از بین رفته است.

RESUMED

ناموجود

چرخه حیات دستگاه در حال حاضر از این حالت استفاده نمی‌کند یا آن را منتشر نمی‌کند.

بررسی و نظارت بر در دسترس بودن دستگاه

برای بررسی و نظارت بر در دسترس بودن دستگاه، از یک زمینه پیش‌بینی‌شده به همراه وضعیت چرخه عمر استفاده خواهید کرد تا مشخص شود که برنامه شما چگونه باید هر مورد را مدیریت کند:

    // 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 نشان می‌دهد که دستگاه دیگر استفاده نمی‌شود، بنابراین توقف این فرآیندها برای جلوگیری از تخلیه غیرضروری باتری و ارتقای حریم خصوصی کاربر ضروری است.