Erste Aktivität für KI-Brillen erstellen

Anwendbare XR‑Geräte
Dieser Leitfaden hilft Ihnen dabei, Erlebnisse für diese Arten von XR-Geräten zu entwickeln.
AI Glasses

Die KI-Brillen-Funktionen basieren auf der vorhandenen Android-Activity-Framework-API und umfassen zusätzliche Konzepte, um die besonderen Aspekte von KI-Brillen zu unterstützen. Im Gegensatz zu XR-Headsets, auf denen eine vollständige APK auf dem Gerät ausgeführt wird, verwenden KI-Brillen eine spezielle Aktivität, die in der vorhandenen App auf Ihrem Smartphone ausgeführt wird. Diese Aktivität wird vom Hostgerät auf die KI-Brille projiziert.

Um die KI-Brillen-Funktion Ihrer App zu erstellen, erweitern Sie Ihre vorhandene Smartphone-App, indem Sie eine neue projizierte Activity für KI-Brillen erstellen. Diese Aktivität dient als Haupteinstiegspunkt für den Start Ihrer App auf KI‑Brillen. Dieser Ansatz vereinfacht die Entwicklung, da Sie die Geschäftslogik zwischen Ihren Smartphone- und KI-Brillen-Apps teilen und wiederverwenden können.

Aktivität im Manifest Ihrer App deklarieren

Wie bei anderen Arten von Aktivitäten müssen Sie Ihre Aktivität in der Manifestdatei Ihrer App deklarieren, damit das System sie sehen und ausführen kann.

<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>

Wichtige Punkte zum Code

  • Gibt xr_projected für das Attribut android:requiredDisplayCategory an, um dem System mitzuteilen, dass für diese Aktivität ein projizierter Kontext verwendet werden soll, um auf Hardware eines verbundenen Geräts zuzugreifen.

Aktivität erstellen

Als Nächstes erstellen Sie eine kleine Aktivität, die etwas auf der KI-Brille anzeigen kann, wenn das Display eingeschaltet ist.

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

}

Wichtige Punkte zum Code

  • AIGlassesActivity erweitert ComponentActivity, wie Sie es von der mobilen Entwicklung gewohnt sind.
  • Der setContent-Block in onCreate() definiert den Stamm des Composable-UI-Baums für die Aktivität.
  • Initialisiert die Benutzeroberfläche während der Methode onCreate() der Aktivität (siehe projizierter Aktivitätslebenszyklus).
  • Richtet ein TopBarScaffold-Basislayout mit einem schwarzen Hintergrund für die Benutzeroberfläche ein, indem Jetpack Compose Glimmer verwendet wird.

Composable implementieren

Die von Ihnen erstellte Aktivität verweist auf eine zusammensetzbare DisplayUi-Funktion, die Sie implementieren müssen. Im folgenden Code wird Jetpack Compose Glimmer verwendet, um eine zusammensetzbare Funktion zu definieren, mit der Text auf dem Display der KI-Brille angezeigt werden kann:

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

Wichtige Punkte zum Code

  • Wie Sie in Ihrer Aktivität zuvor definiert haben, enthält die Funktion DisplayUi die zusammensetzbaren Inhalte, die der Nutzer sieht, wenn das Display der KI‑Brille eingeschaltet ist.
  • Die Jetpack Compose-Komponente „Glimmer“ Text zeigt den Text „Hello World!“ auf dem Display der Brille an.

Aktivität starten

Nachdem Sie eine einfache Aktivität erstellt haben, können Sie sie auf Ihrer Brille starten. Damit Ihre App auf die Hardware der Brille zugreifen kann, muss sie Ihre Aktivität mit bestimmten Optionen starten, die dem System mitteilen, dass ein projizierter Kontext verwendet werden soll. Das folgende Beispiel zeigt, wie das geht:

val options = ProjectedContext.createProjectedActivityOptions(context)

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

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

Die Methode createProjectedActivityOptions() in ProjectedContext generiert die erforderlichen Optionen, um Ihre Aktivität in einem projizierten Kontext zu starten. Der Parameter context kann ein Kontext vom Smartphone oder von der Brille sein.

Prüfen, ob die KI-Brille verbunden ist

Wenn Sie vor dem Starten Ihrer Aktivität feststellen möchten, ob die KI-Brille eines Nutzers mit seinem Smartphone verbunden ist, verwenden Sie die Methode ProjectedContext.isProjectedDeviceConnected(). Diese Methode gibt ein Flow<Boolean> zurück, das Ihre App beobachten kann, um Echtzeit-Updates zum Verbindungsstatus zu erhalten.

Nächste Schritte

Nachdem Sie Ihre erste Aktivität für die KI-Brille erstellt haben, können Sie die Funktionalität auf folgende Weise erweitern: