Sprawdzanie dostępności urządzenia w czasie działania okularów z AI

Podczas codziennych czynności okulary AI mogą utracić połączenie z urządzeniem hosta (np. telefonem użytkownika) lub mogą być tymczasowo niedostępne, jeśli użytkownik je zdejmie. Aby uwzględnić tego rodzaju zmiany w dostępności urządzenia, aplikacja może korzystać z interfejsu XR Device Availability API, który łączy sygnały dostępności urządzenia ze standardowymi wartościami Lifecycle.State Androida. Ten interfejs API pomaga zarządzać przekierowywaniem dźwięku i aktywacją za pomocą słowa-klucza oraz określać, kiedy można oczekiwać danych wejściowych użytkownika na podstawie dostępności okularów z AI.

Stany cyklu życia

W tabeli poniżej znajdziesz informacje o tym, jak sygnały dotyczące dostępności urządzenia są mapowane na wartości Lifecycle.State.

Stan cyklu życia

Stan urządzenia

Opis

INITIALIZED

Utworzono

Obiekt cyklu życia został utworzony, ale nie jest jeszcze obserwowany.

CREATED

Nieaktywne

Usługa jest połączona, ale użytkownik nie ma na sobie urządzenia.

STARTED

Aktywne

Użytkownik nosi urządzenie.

DESTROYED

Rozłączono

Urządzenie jest odłączone lub połączenie z usługą zostało utracone.

Sprawdzanie i monitorowanie dostępności urządzeń

Aby sprawdzić i monitorować dostępność urządzenia, użyj prognozowanego kontekstu wraz ze stanem cyklu życia, aby określić, jak aplikacja powinna obsługiwać poszczególne przypadki:

    val xrDevice = XrDevice.getCurrentDevice(projectedContext)

    xrDevice.getLifecycle().currentStateFlow
        .takeWhile { it != Lifecycle.State.DESTROYED }
        .collect { state ->
            when (state) {
                Lifecycle.State.STARTED -> { /* Device is ACTIVE (worn) */ }
                Lifecycle.State.CREATED -> { /* Device is INACTIVE (not worn) */ }
                else -> { /* Handle other states */ }
            }
        }
}

Najważniejsze informacje o kodzie

  • Sprawdź połączenie: zanim uzyskasz dostęp do cyklu życia urządzenia, zadzwoń pod numer ProjectedContext.isProjectedDeviceConnected, aby sprawdzić, czy projektowane urządzenie jest połączone z urządzeniem hosta.
  • Uzyskaj obiekt ProjectedContext: Only call ProjectedContext.createProjectedDeviceContext po sprawdzeniu połączenia i upewnij się, że przekazujesz ten kontekst do instancji XrDevice.
  • Obsługa unieważnienia kontekstu: za każdym razem, gdy połączone jest urządzenie wyświetlające, generowany jest nowy deviceId. Gdy stan osiągnie wartość DESTROYED, bieżąca wartość ProjectedContext jest nieprawidłowa. Natychmiast przestań z niej korzystać i poczekaj na nowe połączenie.
  • Optymalizacja baterii i zasobów: płynne zarządzanie funkcjami aplikacji w zależności od stanu cyklu życia, aby oszczędzać zasoby systemowe i zmniejszać zużycie baterii. Na przykład należy zwolnić zasoby związane z okularami, takie jak strumień danych z kamery, gdy stan przechodzi z STARTED na CREATED. Stan CREATED oznacza, że urządzenie nie jest już noszone, więc zatrzymanie tych procesów jest niezbędne, aby zapobiec niepotrzebnemu szybkiemu zużyciu baterii i zapewnić prywatność użytkownika.