Medien-App mit Vorlage erstellen

Vorlagenbasierte Medien-Apps befinden sich in der Betaphase
Derzeit kann jeder Medien-Apps mit Vorlagen im Play Store in Tracks für interne und geschlossene Tests veröffentlichen. Die Veröffentlichung in offenen Tracks und Produktions-Tracks ist zu einem späteren Zeitpunkt zulässig.

Mit den Vorlagen der Car App Library können Entwickler die Mediensuche und -wiedergabe anpassen und gleichzeitig dafür sorgen, dass die App für Autodisplays optimiert ist und Ablenkungen während der Fahrt minimiert werden.

In diesem Leitfaden wird davon ausgegangen, dass Sie bereits eine Medien-App haben, die Audio auf einem Smartphone abspielt, und dass Ihre Medien-App der Architektur von Android-Medien-Apps entspricht. Mit der Car App Library können Sie die In-App-Oberfläche durch Vorlagen ersetzen, die nicht mit der Datenstruktur Medien-Apps für Autos entwickeln MediaBrowser erstellt wurden. Sie müssen weiterhin ein MediaSession für die Wiedergabesteuerung und ein MediaBrowserService angeben, das für Empfehlungen und andere intelligente Funktionen verwendet wird.

Manifest Ihrer App konfigurieren

Zusätzlich zu den unter Android for Cars-App-Bibliothek verwenden beschriebenen Schritten sind für Medien-Apps mit Vorlagen Folgendes erforderlich:

Unterstützung von Kategorien in Ihrem Manifest deklarieren

Ihre App muss die androidx.car.app.category.MEDIA Kategorie „Car App“ im Intent-Filter ihrer CarAppService deklarieren.

<application>
    ...
   <service
       ...
        android:name=".MyCarAppService"
        android:exported="true">
      <intent-filter>
        <action android:name="androidx.car.app.CarAppService" />
        <category android:name="androidx.car.app.category.MEDIA"/>
      </intent-filter>
    </service>
    ...
<application>

Damit Ihre App auf die MediaPlaybackTemplate zugreifen kann, muss sie in der Manifestdatei auch die Berechtigung androidx.car.app.MEDIA_TEMPLATES deklarieren:

<manifest ...>
  ...
  <uses-permission android:name="androidx.car.app.MEDIA_TEMPLATES"/>
  ...
</manifest>

Mindest-API-Level für Auto-Apps festlegen

Medien-Apps, die die MediaPlaybackTemplate verwenden, werden nur in der CAL API 8 unterstützt. Achten Sie darauf, dass Car App API level mindestens auf 8 festgelegt ist.

<application ...>
  ...
  <meta-data
    android:name="androidx.car.app.minCarApiLevel"
    android:value="8"/>
  ...
</application>

Unterstützung für Android Auto angeben

Das Manifest Ihrer App muss Folgendes enthalten:

<application>
  ...
  <meta-data android:name="com.google.android.gms.car.application"
      android:resource="@xml/automotive_app_desc"/>
  ...
</application>

Fügen Sie dann die Deklaration template zu automotive_app_desc.xml in Ihren XML-Ressourcen hinzu. Sie sollte so aussehen:

<automotiveApp xmlns:android="http://schemas.android.com/apk/res/android">
 <uses name="media"/>
 <uses name="template"/>
</automotiveApp>

Geben Sie ein Symbol für die Quellenangabe an.

Fügen Sie Medien-Apps, die mit der Car App Library erstellt wurden, ein Attributionssymbol hinzu.

Sprachbefehle unterstützen

Aktivieren Sie die Sprachsteuerung Ihrer App, damit Nutzer häufige Aktionen per Sprachbefehl ausführen können. Weitere Implementierungsanleitungen finden Sie unter Sprachaktionen für Medien unterstützen. Wenn Sie in einer Medien-App mit Vorlagen einen Sprachbefehl erhalten, müssen Sie MediaBrowserService nicht mit Suchergebnissen aktualisieren. Füge stattdessen eine Aktion in deine Vorlage für die Medienwiedergabe ein, damit Nutzer anhand dieser Wiedergabe- oder Suchanfrage weitere Inhalte finden können. Die Unterstützung von Sprachbefehlen ist erforderlich, um die Qualitätsrichtlinie VC-1 einzuhalten.

Wiedergabevorlage erstellen

Die MediaPlaybackTemplate zeigt Informationen zur Medienwiedergabe in Ihrer Medien-App der Car App Library an. Mit dieser Vorlage können Sie einen Titel mit einer Überschrift und anpassbaren Aktionen festlegen. Die Medieninformationen und die Wiedergabesteuerung werden vom Host basierend auf dem Status der MediaSession Ihrer App ausgefüllt.

Ein Musikplayer zeigt „Sounds of Spring“ von Summer Fielding mit einem quadratischen Porträt einer Frau, die Gitarre spielt.

Abbildung 1:MediaPlaybackTemplate mit einer Kopfzeilenaktion, um die Warteschlange oben zu öffnen.

In diesem Codebeispiel wird gezeigt, wie du eine Beispielvorlage für die Wiedergabe erstellst, die eine Kopfzeilenaktion festlegt, mit der Nutzer zu einem Bildschirm mit der Wiedergabeliste der Titel wechseln können.

val playbackTemplate = MediaPlaybackTemplate.Builder()
      .setHeader(
        Header.Builder()
          .setStartHeaderAction(Action.BACK)
          .addEndHeaderAction(
                Action.Builder()
                  .setTitle(model.context.getString(R.string.queue_button_title))
                  .setIcon(
                    CarIcon.Builder(
                        IconCompat.createWithResource(
                          model.context,
                          R.drawable.gs_queue_music_vd_theme_24,
                        ))
                      .build())
                  .setOnClickListener(showQueueScreen())
                  .build())
          .setTitle(model.context.getString(R.string.media_playback_view_title))
          .build())
      .build()

Wenn du MediaPlaybackTemplate verwendest, registriere ein MediaSession-Token mit dem MediaPlaybackManager in deinem CarAppService. Andernfalls wird ein Fehler angezeigt, wenn eine MediaPlaybackTemplate an den Host gesendet wird.

import androidx.car.app.media.MediaPlaybackManager


override fun onCreateSession(sessionInfo: SessionInfo): Session {
    return object : Session() {
        

        init {
          lifecycle.addObserver(
            LifecycleEventObserver { _, event ->
              if (event == ON_CREATE) {
                val token = ... // MediaSessionCompat.Token
                (carContext.getCarService(CarContext.MEDIA_PLAYBACK_SERVICE) as MediaPlaybackManager)
                  .registerMediaPlaybackToken(token)
              }
              ...
            }
          )
        }
    }
}

.registerMediaPlaybackToken ist erforderlich, um Android Auto Informationen und Steuerelemente zur Medienwiedergabe zur Verfügung zu stellen. Außerdem ist es wichtig, dass der Host medienspezifische Benachrichtigungen erstellt.

Medien mithilfe von Vorlagen organisieren

Wenn Sie Medien wie Songs oder Alben organisieren möchten, empfehlen wir die Verwendung von SectionedItemTemplate. Mit GridSection und RowSection können Sie Layouts erstellen, die Listen mit Bildern und Textelementen kombinieren.

Auf der Benutzeroberfläche einer Musik-App werden kürzlich abgespielte Songs und Alben angezeigt, darunter zwei vertikale Zeilen und drei horizontale Porträts von Albumcovern.

Abbildung 2:Eine SectionedItemTemplate mit einem RowSection, gefolgt von einem GridSection

„SectionedItemTemplate“ in einer „TabTemplate“ verwenden

Eine praktische Möglichkeit, Medien in Ihrer App zu kategorisieren, ist die Verwendung von SectionedItemTemplate in einem TabTemplate.

val template =
      SectionedItemTemplate.Builder()...build();
val tabTemplate = 
      TabTemplate.Builder(tabCallback)
          .setTabContents(TabContents.Builder(template).build)
          .setHeaderAction(Action.APP_ICON)
          
          .build();

Weitere Informationen dazu, wie Sie die Benutzeroberfläche Ihrer Medien-App mithilfe dieser Vorlagen entwerfen, finden Sie unter Medien-Apps.

Beim Stöbern durch Medien ist es wichtig, dass Nutzer schnell und ohne Ablenkungen zur MediaPlaybackTemplate gelangen können. Damit Ihre App die Qualitätsanforderungen für MFT-1 erfüllt, muss es in allen Bildschirmen für die Mediensuche eine Möglichkeit geben, auf MediaPlaybackTemplate zuzugreifen.

Wenn du SectionedItemTemplate verwendest, kannst du einen Floating-Action-Button hinzufügen, über den du zum Bildschirm für die Medienwiedergabe gelangst. Bei anderen Vorlagen ist eine Kopfzeilenaktion eine weitere Möglichkeit, dies zu erreichen.