Tworzenie pierwszego działania na potrzeby okularów AI

Odpowiednie urządzenia XR
Te wskazówki pomogą Ci tworzyć treści na te urządzenia XR.
Okulary AI

Funkcje okularów AI są oparte na istniejącej platformie Android ActivityAPIobejmują dodatkowe koncepcje, które uwzględniają unikalne aspekty okularów AI. W przeciwieństwie do zestawów XR, które uruchamiają na urządzeniu pełny plik APK, okulary AI korzystają z aktywności, która jest uruchamiana w ramach istniejącej aplikacji na telefonie. Ta aktywność jest wyświetlana z urządzenia hosta na okularach AI.

Aby utworzyć funkcję okularów AI w aplikacji, rozszerz istniejącą aplikację na telefon, tworząc nowy projekt Activity dla okularów AI. To działanie jest głównym punktem wejścia do aplikacji na okularach z AI. To podejście upraszcza proces programowania, ponieważ możesz udostępniać i ponownie wykorzystywać logikę biznesową w aplikacjach na telefon i okulary AI.

Zadeklaruj aktywność w pliku manifestu aplikacji

Podobnie jak w przypadku innych typów aktywności musisz zadeklarować aktywność w pliku manifestu aplikacji, aby system mógł ją zobaczyć i uruchomić.

<application>
    <activity
        android:name=".AIGlassesActivity"
        android:exported="true"
        android:requiredDisplayCategory="xr_projected"
        android:label="Example AI Glasses activity">
      <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
      </intent-filter>
    </activity>
</application>

Najważniejsze informacje o kodzie

  • Określa xr_projected dla atrybutu android:requiredDisplayCategory, aby poinformować system, że ta aktywność powinna używać prognozowanego kontekstu do uzyskiwania dostępu do sprzętu z połączonego urządzenia.

Tworzenie aktywności

Następnie utworzysz małą aktywność, która będzie wyświetlać coś na okularach z AI, gdy tylko wyświetlacz będzie włączony.

/**
 *   When this activity launches, it stays in the started state.
 */
class AIGlassesActivity : ComponentActivity() {

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)

    val projectedWindowManager = ProjectedWindowManager.create(this)

    setContent {

      GlassesComposeContent {
        GlimmerTheme {
          TopBarScaffold(modifier = Modifier.background(color = Color.Black)) {

            ProjectedDisplayController.create(activity)
            .addPresentationModeChangedListener {
            presentationModeFlags ->

            // Check whether visuals are on or off
            val areVisualsOff = !presentationModeFlags.hasPresentationMode(VISUALS_ON)
            }

            // Conditional UI based on presentation mode.
            if (areVisualsOff) {
              // Implementation for the when the display is off.
            } else {
              DisplayUi()
            }
          }
        }
      }
    }
  }

  override fun onStart() {
    // Do things to make the user aware that this activity is active (for
    // example, play audio frequently), when the display is off.
  }

  override fun onStop() {
    // Stop all the data source access.
  }

}

Najważniejsze informacje o kodzie

  • AIGlassesActivity rozszerza ComponentActivity, tak jak w przypadku tworzenia aplikacji mobilnych.
  • Blok setContentonCreate() określa korzeń drzewa interfejsu użytkownika, który można komponować, dla aktywności.
  • Inicjuje interfejs podczas wywoływania metody onCreate() aktywności (patrz przewidywany cykl życia aktywności).
  • Konfiguruje podstawowy układ TopBarScaffold z czarnym tłem interfejsu za pomocą Jetpack Compose Glimmer.

Implementowanie funkcji typu „composable”

Utworzone działanie odwołuje się do DisplayUi funkcji kompozycyjnej, którą musisz wdrożyć. Poniższy kod używa Jetpack Compose Glimmer do zdefiniowania funkcji kompozycyjnej, która może wyświetlać tekst na wyświetlaczu okularów AI:

@Composable
fun DisplayUi() {
    Box(
        modifier = Modifier
            .fillMaxSize(),
        contentAlignment = Alignment.Center
    ) {
        Text("Hello World!")
    }
}

Najważniejsze informacje o kodzie

  • Zgodnie z definicją podaną wcześniej w aktywności funkcja DisplayUi obejmuje treści, które użytkownik widzi, gdy wyświetlacz okularów AI jest włączony.
  • Komponent Jetpack Compose Glimmer Text wyświetla na ekranie okularów tekst „Hello World!”.

Rozpocznij aktywność

Po utworzeniu podstawowej aktywności możesz ją uruchomić na okularach. Aby uzyskać dostęp do sprzętu okularów, aplikacja musi uruchomić aktywność z określonymi opcjami, które informują system o użyciu prognozowanego kontekstu, jak pokazano w tym kodzie:

val options = ProjectedContext.createProjectedActivityOptions(context)

val intent = Intent(context, AIGlassesActivity::class.java)

context.startActivity(intent, options.toBundle())

Metoda createProjectedActivityOptions()ProjectedContext generuje opcje niezbędne do rozpoczęcia aktywności w przewidywanym kontekście. Parametr context może być kontekstem z telefonu lub okularów.

Sprawdzanie, czy okulary AI są połączone

Jeśli przed uruchomieniem aktywności chcesz sprawdzić, czy okulary AI użytkownika są połączone z telefonem, użyj metody ProjectedContext.isProjectedDeviceConnected(). Ta metoda zwraca Flow<Boolean>, które aplikacja może obserwować, aby otrzymywać aktualizacje stanu połączenia w czasie rzeczywistym.

Dalsze kroki

Skoro masz już pierwsze działanie na okulary AI, poznaj inne sposoby rozszerzania ich funkcjonalności: