Memeriksa ketersediaan perangkat saat runtime untuk kacamata AI

Saat pengguna menjalani aktivitas sehari-hari, kacamata AI mereka mungkin kehilangan koneksi ke perangkat host (seperti ponsel pengguna) atau kacamata mereka mungkin tidak tersedia untuk sementara jika mereka melepas kacamata. Untuk memperhitungkan jenis perubahan ketersediaan perangkat ini, aplikasi Anda dapat menggunakan XR Device Availability API, yang mengonsolidasikan sinyal ketersediaan perangkat ke dalam nilai Lifecycle.State standar Android. Untuk memperhitungkan perubahan ketersediaan perangkat semacam ini, aplikasi Anda dapat menggunakan XR Device Availability API, yang menggabungkan sinyal ketersediaan perangkat ke dalam nilai `Lifecycle.State` Android standar.

Gunakan API ini untuk membantu mengelola perutean audio, aktivasi hotword, dan mengetahui kapan harus mengharapkan input pengguna berdasarkan ketersediaan kacamata AI.

Memahami status siklus prosesLifecycle.State

Tabel berikut mencantumkan cara sinyal ketersediaan perangkat dipetakan ke nilai `Lifecycle.State`.

Status siklus proses

Status perangkat

INITIALIZED

Deskripsi

Dibuat

CREATED

Objek siklus proses dibuat, tetapi belum diamati.

Tidak aktif

STARTED

Layanan terhubung, tetapi pengguna tidak memakai perangkat.

Aktif

DESTROYED

Pengguna memakai perangkat.

Tidak terhubung

Perangkat terputus atau koneksi layanan terputus.

Memeriksa dan memantau ketersediaan perangkat

    // 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 */ }
            }
        }
}

Untuk memeriksa dan memantau ketersediaan perangkat, Anda akan menggunakan konteks yang diproyeksikan bersama dengan status siklus proses untuk menentukan cara aplikasi Anda menangani setiap kasus:

  • Poin utama tentang kode: Before accessing the device lifecycle, call ProjectedContext.isProjectedDeviceConnected to verify that the projected device is connected to the host device.
  • Memeriksa koneksiProjectedContext: Sebelum mengakses siklus proses perangkat, panggil ProjectedContext.isProjectedDeviceConnectedProjectedContext.createProjectedDeviceContext untuk memverifikasi bahwa perangkat yang diproyeksikan terhubung ke perangkat host.XrDevice
  • Menangani pembatalan konteks: deviceId baru dibuat setiap kali perangkat yang diproyeksikan terhubung. Setelah status mencapai DESTROYED, ProjectedContext saat ini tidak valid. Setelah status mencapai `DESTROYED`, `ProjectedContext` saat ini tidak valid.
  • Optimalkan baterai dan sumber daya: Tangani fungsi aplikasi dengan baik berdasarkan status siklus proses untuk menghemat sumber daya sistem dan mengurangi konsumsi baterai. **Mengoptimalkan baterai dan resource** : Tangani fungsi aplikasi dengan baik berdasarkan status siklus proses untuk mempertahankan resource sistem dan mengurangi konsumsi baterai. Misalnya, Anda harus merilis resource khusus kacamata, seperti aliran data kamera, saat status beralih dari STARTED kembali ke CREATED. Misalnya, Anda harus merilis resource khusus kacamata, seperti aliran data kamera, saat status bertransisi dari `STARTED` kembali ke CREATED.