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

Podczas codziennych czynności okulary z 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.

Omówienie stanów 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

Odłą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żący ProjectedContext stanie się nieprawidłowy. 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, gdy stan zmieni się na CREATED, należy przestać wyświetlać treści interfejsu na okularach z AI.