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

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

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 را نشان می‌دهد.

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

وضعیت دستگاه

توضیحات

INITIALIZED

ایجاد شده

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

CREATED

غیرفعال

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

STARTED

فعال

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

DESTROYED

قطع ارتباط

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

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

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

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