Planowanie obsługi różnych rodzajów okularów audio i okularów z wyświetlaczem

Obsługiwane urządzenia XR
Ten przewodnik pomoże Ci tworzyć aplikacje na te typy urządzeń XR.
Okulary z dźwiękiem i
wyświetlaczem

Różne typy okularów z dźwiękiem i wyświetlaczem mają różne możliwości. Na przykład wszystkie okulary z dźwiękiem i wyświetlaczem oferują wrażenia dźwiękowe dzięki głosowi, ale tylko okulary z wyświetlaczem mają wyświetlacz, na którym Twoja aplikacja może wyświetlać interfejsy utworzone za pomocą Jetpack Compose Glimmer.

Aby zapewnić spójne wrażenia użytkownika na różnych urządzeniach, zaplanuj swoje Activity dla okularów, aby sprawdzić różne możliwości urządzenia. To podejście upraszcza tworzenie aplikacji, ponieważ pozwala Ci utworzyć jedną aktywność, która dostosowuje swoje działanie, zamiast wielu aktywności przeznaczonych na konkretne urządzenia.

Cykl życia prognozowanych aktywności

Aktywność, którą tworzysz na okulary z dźwiękiem i wyświetlaczem, nie jest uruchamiana bezpośrednio na urządzeniu, ale jest na nie prognozowana z urządzenia hosta (np. telefonu użytkownika). Aktywności przeznaczone do tego celu to prognozowane aktywności. Cykl życia prognozowanych aktywności jest oparty na standardowym cyklu życia aktywności, ale obejmuje też kilka kluczowych różnic, które obsługują możliwości różnych typów okularów z dźwiękiem i wyświetlaczem.

Rysunek 1. Kluczowe zdarzenia w cyklu życia prognozowanych aktywności.

Oto zestawienie kluczowych zdarzeń z objaśnieniami interakcji, które są specyficzne dla aktywności prognozowanych na okulary z dźwiękiem i wyświetlaczem:

  • onCreate()
    • Wywoływane, gdy tworzona jest prognozowana aktywność.
    • Tutaj zainicjuj interfejs Jetpack Compose Glimmer i inne komponenty aplikacji.
  • onStart()
    • Wywoływane, gdy prognozowana aktywność się uruchamia, a użytkownik jest świadomy aplikacji.
  • onResume()
    • Wywoływane, gdy prognozowana aktywność odzyskuje fokus. Gdy aktywność jest w fokusie, można z nią wchodzić w interakcje i może ona odbierać dane z touchpada lub przycisku.
    • Wywoływane, gdy okulary są ponownie zakładane (donned) po zdjęciu z głowy (doffed).
  • onPause()
    • Wywoływane, gdy prognozowana aktywność traci fokus, ale użytkownik nadal jest świadomy aplikacji. Gdy aktywność nie jest w fokusie, nie można z nią wchodzić w interakcje i przestaje ona odbierać dane.
  • onStop()
    • Wywoływane, gdy system uzna, że użytkownik nie jest już świadomy aplikacji.
    • Wywoływane, gdy okulary są zdejmowane z głowy (doffed).
  • onDestroy()
    • Wywoływane, gdy prognozowana aktywność ma zostać zniszczona. Gdy to wywołanie zostanie wykonane, system zwolni wszystkie zasoby powiązane z aktywnością.

Jak stan wyświetlacza wpływa na cykl życia prognozowanej aktywności

W standardowej Activity stan cyklu życia zmienia się, gdy ekran urządzenia się wyłącza, zwykle przechodząc do onPause() lub onStop(). Natomiast cykl życia prognozowanej aktywności nie zmienia się, gdy wyświetlacz okularów się włącza lub wyłącza. Oznacza to, że prognozowana aktywność jest nadal uruchomiona w stanie Started lub Resumed, nawet gdy wyświetlacz jest wyłączony, co pozwala na nieprzerwane działanie funkcji dźwiękowych aplikacji.

Inne zmiany stanu działania wywoływane przez różne zdarzenia systemowe i użytkownika działają w zwykły sposób.

Jak świadomość użytkownika wpływa na prognozowaną aktywność

Użytkownik może być świadomy prognozowanej aktywności, nawet jeśli nie jest ona widoczna. Świadomość odnosi się do wszystkich sposobów, w jakie użytkownik może odbierać i wchodzić w interakcje z aplikacją, w tym:

  • słuchanie dźwięku, sygnałów dźwiękowych lub innych wskazówek dźwiękowych;
  • działania aplikacji, które wywołują diodę LED skierowaną do użytkownika, np. wskaźnik prywatności, jeśli aplikacja uzyskuje dostęp do aparatu lub mikrofonu.

W takich sytuacjach użytkownik jest świadomy, że okulary z dźwiękiem i wyświetlaczem są aktywne i reagują, nawet jeśli nie patrzy na wyświetlacz:

  • Stan onStart() w przypadku prognozowanych aktywności oznacza, że aktywność jest aktywna.
  • Stan onResume() oznacza, że aktywność jest interaktywna i może odbierać dane z touchpada lub odbierać podstawowe dane wejściowe.

Dopóki użytkownik jest świadomy aplikacji, aktywność pozostaje aktywna i na pierwszym planie. Jeśli system przez krótki czas nie wykryje żadnych sygnałów świadomości, usunie aktywność z pierwszego planu i ostatecznie wywoła onStop().

Prognozowane aktywności i prognozowane konteksty

Okulary z dźwiękiem i wyświetlaczem są traktowane jako podłączone urządzenie, które rozszerza możliwości telefonu użytkownika. Prognozowany kontekst to Context uwzględniający urządzenie, który umożliwia aplikacjom interakcję z hardware podłączonych okularów – np. z czujnikami, aparatem lub mikrofonem – zamiast z hardware telefonu . Podczas tworzenia aplikacji na okulary z dźwiękiem i wyświetlaczem musi ona używać prognozowanego kontekstu, aby uzyskać dostęp do hardware okularów.

Prognozowany kontekst może zostać automatycznie przyznany aplikacji w zależności od kontekstu aktywności wywołującej:

  • W przypadku prognozowanych aktywności: jeśli kod aplikacji jest uruchamiany w ramach prognozowanej aktywności, własny kontekst aktywności jest już prognozowanym kontekstem. W takim przypadku połączenia wykonywane w ramach tej aktywności mogą już korzystać z hardware okularów.

  • W przypadku aplikacji lub usług na telefon: jeśli część aplikacji poza prognozowaną aktywnością (np. aktywność na telefonie lub usługa) musi mieć dostęp do hardware okularów, musi wyraźnie uzyskać prognozowany kontekst. Aby to zrobić, użyj createProjectedDeviceContext() metody.

Więcej informacji znajdziesz w artykule Korzystanie z prognozowanego kontekstu w celu uzyskania dostępu do hardware okularów z dźwiękiem i wyświetlaczem.

Interfejsy API uwzględniające urządzenie

Niektóre standardowe interfejsy API Androida zmieniają urządzenie, do którego hardware mają dostęp, w zależności od Context aktywności wywołującej. Gdy te interfejsy API otrzymają prognozowany kontekst, uzyskują dostęp do hardware okularów zamiast do hardware telefonu hosta:

  • CameraManager: uzyskuje dostęp do aparatu w okularach.
  • SensorManager: pobiera dane z czujników (np. z żyroskopu lub akcelerometru) z okularów.
  • AudioManager: zarządza strumieniami audio, głośnością i routingiem w okularach.
  • AudioRecord: rejestruje dźwięk za pomocą mikrofonu okularów.