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.
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.
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.
Zu den Wiedergabesteuerelementen navigieren
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.