Medien-App mit Vorlage erstellen

Medien-Apps mit Vorlage befinden sich in der Betaphase
Derzeit kann jeder, der möchte, Medien-Apps mit Vorlage in den Tracks für interne und geschlossene Tests im Google Play Store veröffentlichen. Die Veröffentlichung in Tracks für offene Tests und Produktions-Tracks wird zu einem späteren Zeitpunkt zugelassen.

Medien-Apps, die die Vorlagen der Car App Library verwenden, können das Durchsuchen und die Wiedergabe von Medien anpassen und gleichzeitig dafür sorgen, dass die Nutzerfreundlichkeit für Autodisplays optimiert ist und Ablenkungen während der Fahrt minimiert werden.

In dieser Anleitung wird davon ausgegangen, dass Sie bereits eine Medien-App haben, die Audio auf einem Smartphone abspielt und dass Ihre Medien-App der Android-Architektur für Medien-Apps entspricht. Mit der Car App Library können Sie die In-App-Funktionen durch Vorlagen ersetzen, anstatt die mit der Datenstruktur Medien-Apps für Autos entwickeln MediaBrowser erstellten Funktionen zu verwenden. Sie müssen weiterhin eine MediaSession für die Wiedergabesteuerung und einen MediaBrowserService für Empfehlungen und andere intelligente Funktionen bereitstellen.

Manifest Ihrer App konfigurieren

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

Kategoriensupport im Manifest deklarieren

Ihre App muss die androidx.car.app.category.MEDIA Car App-Kategorie im Intent Filter ihres 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>

Um auf MediaPlaybackTemplate zuzugreifen, muss Ihre App außerdem die Berechtigung androidx.car.app.MEDIA_TEMPLATES in ihrer Manifestdatei deklarieren:

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

Mindest-API-Level für Car App festlegen

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

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

Android Auto-Support deklarieren

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 template-Deklaration in 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>

Attributionssymbol angeben

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

Sprachbefehle unterstützen

Aktivieren Sie die Sprachsteuerung für Ihre App, damit Nutzer häufige Aktionen freihändig ausführen können. Unter Sprachbefehle für Medien unterstützen finden Sie detailliertere Implementierungs anweisungen. Wenn Sie bei einer Medien-App mit Vorlage einen Sprachbefehl erhalten, müssen Sie Ihren MediaBrowserService nicht mit Suchergebnissen aktualisieren. Stattdessen können Sie in Ihrer Vorlage für die Medienwiedergabe eine Aktion hinzufügen, mit der Nutzer basierend auf dieser Wiedergabe- oder Suchanfrage weitere Inhalte finden können. Die Unterstützung von Sprachbefehlen ist erforderlich, um die VC-1 Qualitätsrichtlinie zu erfüllen.

Wiedergabevorlage erstellen

In MediaPlaybackTemplate werden Informationen zur Medienwiedergabe in Ihrer Medien-App der Car App Library angezeigt. Mit dieser Vorlage können Sie eine Kopfzeile mit einem Titel 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 zum Öffnen der Warteschlange oben.

Dieses Codebeispiel zeigt, wie Sie eine Beispielvorlage für die Wiedergabe erstellen, die eine Kopfzeilenaktion festlegt, mit der der Nutzer zu einem Bildschirm mit der Warteschlange der Songs navigieren kann.

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 Sie MediaPlaybackTemplate verwenden, registrieren Sie ein MediaSession Token mit MediaPlaybackManager in Ihrem CarAppService. Andernfalls wird ein Fehler angezeigt, wenn ein 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 Informationen und Steuerelemente zur Medienwiedergabe für Android Auto verfügbar zu machen. Dies ist auch wichtig, damit der Host medienspezifische Benachrichtigungen erstellen kann.

Medien mit Vorlagen organisieren

Um Medien zum Durchsuchen zu organisieren, z. B. Songs oder Alben, empfehlen wir die Verwendung von SectionedItemTemplate, Damit können Sie GridSection und RowSection zusammen verwenden, um Layouts zu erstellen, die Listen mit Bildern und Textelementen kombinieren.

Auf der Benutzeroberfläche einer Musik-App werden zuletzt gespielte Songs und Alben angezeigt, darunter zwei vertikale Reihen und drei horizontale Albumcover.

Abbildung 2:Ein SectionedItemTemplate mit einem RowSection, gefolgt von einem GridSection.

`SectionedItemTemplate` in einem `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 zum Entwerfen der Benutzeroberfläche Ihrer Medien-App mit diesen Vorlagen finden Sie unter Medien-Apps.

Beim Durchsuchen von Medien muss der Nutzer schnell und ohne Ablenkung zu MediaPlaybackTemplate navigieren können. Um die MFT-1 Qualitätsanforderung zu erfüllen, muss Ihre App eine Möglichkeit bieten, von allen Bildschirmen zum Durchsuchen von Medien auf MediaPlaybackTemplate zuzugreifen.

Wenn Sie SectionedItemTemplate verwenden, können Sie dies erreichen, indem Sie eine unverankerte Aktionsschaltfläche hinzufügen, mit der Sie navigieren zum Bildschirm für die Medienwiedergabe. Bei anderen Vorlagen ist eine Kopfzeilenaktion eine weitere Möglichkeit, dies zu erreichen.