Po użyciu elementów, które można przeglądać lub odtwarzać, do utworzenia hierarchii treści zastosuj style treści, aby określić, jak te elementy będą wyświetlane w samochodzie. Użyj tych stylów treści:

Rysunek 1. W przypadku elementów listy tytuły i metadane mają wyższy priorytet niż obrazy.

Rysunek 2. Elementy siatki traktują obrazy priorytetowo w stosunku do tytułów i metadanych.
Ustawianie domyślnych stylów treści
Możesz ustawić globalne wartości domyślne określające sposób wyświetlania komponentów. Aby to zrobić, uwzględnij konkretne stałe w pakiecie BrowserRoot
extras zwracanym przez implementację onGetRoot
usługi i wyszukaj te stałe, aby określić odpowiedni styl.
Jako klucze w pakiecie można używać tych dodatków:
DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_BROWSABLE
: wskazówka dotycząca prezentacji dla wszystkich przeglądanych elementów w drzewie przeglądania.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_PLAYABLE
: wskazówka dotycząca prezentacji wszystkich odtwarzanych elementów w drzewie przeglądania.
Te klucze mogą być mapowane na te stałe wartości całkowite, aby wpływać na prezentację tych elementów:
DESCRIPTION_EXTRAS_VALUE_CONTENT_STYLE_LIST_ITEM
: odpowiednie elementy przedstawione jako pozycje listy.DESCRIPTION_EXTRAS_VALUE_CONTENT_STYLE_GRID_ITEM
: odpowiednie produkty wyświetlane jako elementy siatki.DESCRIPTION_EXTRAS_VALUE_CONTENT_STYLE_CATEGORY_LIST_ITEM
: Odpowiednie elementy prezentowane jako elementy listy „kategoria”, podobne do zwykłych elementów listy, ale z marginesami wokół ikon elementów. Poprawia to wygląd małych ikon. Ikony muszą być rysunkami wektorowymi z możliwością zmiany koloru. Ta wskazówka powinna być podawana tylko w przypadku produktów, które można przeglądać.DESCRIPTION_EXTRAS_VALUE_CONTENT_STYLE_CATEGORY_GRID_ITEM
: Odpowiednie produkty są prezentowane jako elementy siatki „kategoria” i są podobne do zwykłych elementów siatki, ale wokół ikon produktów są stosowane marginesy. Poprawia to wygląd małych ikon. Ikony muszą być rysunkami wektorowymi, które można kolorować. Ta wskazówka powinna być podawana tylko w przypadku elementów, które można przeglądać.
Ten fragment kodu pokazuje, jak ustawić domyślny styl treści dla elementów, które można przeglądać, na siatki, a dla elementów, które można odtwarzać, na listy:
Kotlin
import androidx.media.utils.MediaConstants
@Nullable
override fun onGetRoot(
@NonNull clientPackageName: String,
clientUid: Int,
@Nullable rootHints: Bundle
): BrowserRoot {
val extras = Bundle()
extras.putInt(
MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_BROWSABLE,
MediaConstants.DESCRIPTION_EXTRAS_VALUE_CONTENT_STYLE_GRID_ITEM)
extras.putInt(
MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_PLAYABLE,
MediaConstants.DESCRIPTION_EXTRAS_VALUE_CONTENT_STYLE_LIST_ITEM)
return BrowserRoot(ROOT_ID, extras)
}
Java
import androidx.media.utils.MediaConstants;
@Nullable
@Override
public BrowserRoot onGetRoot(
@NonNull String clientPackageName,
int clientUid,
@Nullable Bundle rootHints) {
Bundle extras = new Bundle();
extras.putInt(
MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_BROWSABLE,
MediaConstants.DESCRIPTION_EXTRAS_VALUE_CONTENT_STYLE_GRID_ITEM);
extras.putInt(
MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_PLAYABLE,
MediaConstants.DESCRIPTION_EXTRAS_VALUE_CONTENT_STYLE_LIST_ITEM);
return new BrowserRoot(ROOT_ID, extras);
}
Ustawianie stylów treści dla poszczególnych elementów
Możesz zastąpić domyślny styl treści dla elementów podrzędnych dowolnego elementu multimedialnego, który można przeglądać, a także dla dowolnego elementu multimedialnego. Aby zastąpić domyślne ustawienia dla elementów podrzędnych elementu multimedialnego, który można przeglądać, utwórz pakiet dodatków w MediaDescription
elementu multimedialnego i dodaj te same wskazówki, o których wspomnieliśmy wcześniej:
DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_PLAYABLE
dotyczy elementów podrzędnych, które można odtworzyć.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_BROWSABLE
ma zastosowanie do elementów podrzędnych, które można przeglądać.
Aby zastąpić wartość domyślną w przypadku konkretnego elementu multimedialnego (nie jego elementów podrzędnych), utwórz pakiet dodatków w MediaDescription
elementu multimedialnego. Następnie dodaj podpowiedź z kluczem DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_SINGLE_ITEM
. Aby określić prezentację produktu, użyj tych samych wartości, które zostały opisane wcześniej.
Ten fragment kodu pokazuje, jak utworzyć element MediaItem
, który zastępuje domyślny styl treści dla siebie i swoich elementów podrzędnych. Jest stylizowany jako element listy kategorii, jego potomkowie, których można przeglądać, jako elementy listy, a potomkowie, których można odtwarzać, jako elementy siatki.
Kotlin
import androidx.media.utils.MediaConstants
private fun createBrowsableMediaItem(
mediaId: String,
folderName: String,
iconUri: Uri
): MediaBrowser.MediaItem {
val mediaDescriptionBuilder = MediaDescription.Builder()
mediaDescriptionBuilder.setMediaId(mediaId)
mediaDescriptionBuilder.setTitle(folderName)
mediaDescriptionBuilder.setIconUri(iconUri)
val extras = Bundle()
extras.putInt(
MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_SINGLE_ITEM,
MediaConstants.DESCRIPTION_EXTRAS_VALUE_CONTENT_STYLE_CATEGORY_LIST_ITEM)
extras.putInt(
MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_BROWSABLE,
MediaConstants.DESCRIPTION_EXTRAS_VALUE_CONTENT_STYLE_LIST_ITEM)
extras.putInt(
MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_PLAYABLE,
MediaConstants.DESCRIPTION_EXTRAS_VALUE_CONTENT_STYLE_GRID_ITEM)
mediaDescriptionBuilder.setExtras(extras)
return MediaBrowser.MediaItem(
mediaDescriptionBuilder.build(), MediaBrowser.MediaItem.FLAG_BROWSABLE)
}
Java
import androidx.media.utils.MediaConstants;
private MediaBrowser.MediaItem createBrowsableMediaItem(
String mediaId,
String folderName,
Uri iconUri) {
MediaDescription.Builder mediaDescriptionBuilder = new MediaDescription.Builder();
mediaDescriptionBuilder.setMediaId(mediaId);
mediaDescriptionBuilder.setTitle(folderName);
mediaDescriptionBuilder.setIconUri(iconUri);
Bundle extras = new Bundle();
extras.putInt(
MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_SINGLE_ITEM,
MediaConstants.DESCRIPTION_EXTRAS_VALUE_CONTENT_STYLE_CATEGORY_LIST_ITEM);
extras.putInt(
MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_BROWSABLE,
MediaConstants.DESCRIPTION_EXTRAS_VALUE_CONTENT_STYLE_LIST_ITEM);
extras.putInt(
MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_PLAYABLE,
MediaConstants.DESCRIPTION_EXTRAS_VALUE_CONTENT_STYLE_GRID_ITEM);
mediaDescriptionBuilder.setExtras(extras);
return new MediaBrowser.MediaItem(
mediaDescriptionBuilder.build(), MediaBrowser.MediaItem.FLAG_BROWSABLE);
}
Grupowanie elementów za pomocą wskazówek dotyczących tytułu
Aby pogrupować powiązane elementy multimedialne, użyj wskazówki dotyczącej poszczególnych elementów. Każdy element multimedialny w grupie musi deklarować pakiet dodatków w swoim polu MediaDescription
. Ten pakiet musi zawierać mapowanie z kluczem DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_GROUP_TITLE
i identyczną wartością ciągu znaków. Przetłumacz ten ciąg znaków, ponieważ jest on używany jako tytuł grupy.
Ten fragment kodu pokazuje, jak utworzyć MediaItem
z nagłówkiem podgrupy Songs
:
Kotlin
import androidx.media.utils.MediaConstants
private fun createMediaItem(
mediaId: String,
folderName: String,
iconUri: Uri
): MediaBrowser.MediaItem {
val mediaDescriptionBuilder = MediaDescription.Builder()
mediaDescriptionBuilder.setMediaId(mediaId)
mediaDescriptionBuilder.setTitle(folderName)
mediaDescriptionBuilder.setIconUri(iconUri)
val extras = Bundle()
extras.putString(
MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_GROUP_TITLE,
"Songs")
mediaDescriptionBuilder.setExtras(extras)
return MediaBrowser.MediaItem(
mediaDescriptionBuilder.build(), /* playable or browsable flag*/)
}
Java
import androidx.media.utils.MediaConstants;
private MediaBrowser.MediaItem createMediaItem(String mediaId, String folderName, Uri iconUri) {
MediaDescription.Builder mediaDescriptionBuilder = new MediaDescription.Builder();
mediaDescriptionBuilder.setMediaId(mediaId);
mediaDescriptionBuilder.setTitle(folderName);
mediaDescriptionBuilder.setIconUri(iconUri);
Bundle extras = new Bundle();
extras.putString(
MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_GROUP_TITLE,
"Songs");
mediaDescriptionBuilder.setExtras(extras);
return new MediaBrowser.MediaItem(
mediaDescriptionBuilder.build(), /* playable or browsable flag*/);
}
Aplikacja musi przekazywać wszystkie elementy multimedialne, które chcesz zgrupować, jako ciągły blok. Na przykład rozważ wyświetlanie w tej kolejności 2 grup elementów multimedialnych: „Utwory” i „Albumy”. Jeśli aplikacja przekaże 5 elementów multimedialnych w tej kolejności, Android Auto i AAOS zinterpretują je jako 4 osobne grupy:
- Element multimedialny A z
extras.putString(MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_GROUP_TITLE, "Songs")
- Element multimedialny B z
extras.putString(MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_GROUP_TITLE, "Albums")
- Element multimedialny C z
extras.putString(MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_GROUP_TITLE, "Songs")
- Element multimedialny D z
extras.putString(MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_GROUP_TITLE, "Songs")
- Element multimedialny E z
extras.putString(MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_GROUP_TITLE, "Albums")
W rezultacie otrzymasz te 4 grupy:
- Grupa 1 o nazwie „Utwory” zawierająca element multimedialny A
- Grupa 2 o nazwie „Albumy” zawierająca element multimedialny B
- Grupa 3 o nazwie „Utwory” zawierająca elementy multimedialne C i D
- Grupa 4 o nazwie „Albumy” zawierająca element multimedialny E
Aby wyświetlić te elementy w 2 grupach, aplikacja musi przekazywać elementy multimedialne w tej kolejności:
- Element multimedialny A z
extras.putString(MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_GROUP_TITLE, "Songs")
- Element multimedialny C z
extras.putString(MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_GROUP_TITLE, "Songs")
- Element multimedialny D z
extras.putString(MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_GROUP_TITLE, "Songs")
- Element multimedialny B z
extras.putString(MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_GROUP_TITLE, "Albums")
- Element multimedialny E z
extras.putString(MediaConstants.DESCRIPTION_EXTRAS_KEY_CONTENT_STYLE_GROUP_TITLE, "Albums")
Wyświetlanie dodatkowych wskaźników metadanych
Możesz dodać dodatkowe wskaźniki metadanych, aby zapewnić szybki dostęp do informacji o treści w drzewie przeglądarki multimediów i podczas odtwarzania.
W drzewie przeglądania Android Auto i AAOS odczytują dodatkowe informacje powiązane z elementem i wyświetlają wskaźniki. Podczas odtwarzania multimediów Android Auto i AAOS odczytują metadane sesji multimedialnej i wyszukują określone stałe, aby określić, które wskaźniki mają być wyświetlane.

Rysunek 3. Widok odtwarzania z metadanymi.

Rysunek 4. Widok przeglądania nieodtwarzanych treści.
Te stałe wartości mogą być używane zarówno w MediaItem
dodatkach do opisu, jak i w MediaMetadata
dodatkach:
EXTRA_DOWNLOAD_STATUS
: wskazuje stan pobierania elementu. Użyj tej stałej jako klucza. Te długie stałe to możliwe wartości:STATUS_DOWNLOADED
: element został w pełni pobrany.STATUS_DOWNLOADING
: element jest pobierany.STATUS_NOT_DOWNLOADED
: produkt nie został pobrany.
METADATA_KEY_IS_EXPLICIT
: oznacza, że produkt zawiera treści dla dorosłych. Aby wskazać, że produkt zawiera treści dla dorosłych, użyj tej stałej jako klucza i wartościMETADATA_VALUE_ATTRIBUTE_PRESENT
typu long.
Te stałe wartości mogą być używane tylko w rozszerzeniach z MediaItem
:
DESCRIPTION_EXTRAS_KEY_COMPLETION_STATUS
: wskazuje stan ukończenia treści długich, takich jak odcinki podcastów i audiobooki. Użyj tej stałej jako klucza. Możliwe wartości tych stałych całkowitych:DESCRIPTION_EXTRAS_VALUE_COMPLETION_STATUS_NOT_PLAYED
: Element nie został odtworzony.DESCRIPTION_EXTRAS_VALUE_COMPLETION_STATUS_PARTIALLY_PLAYED
: element jest częściowo odtwarzany, a bieżąca pozycja znajduje się gdzieś pośrodku.DESCRIPTION_EXTRAS_VALUE_COMPLETION_STATUS_FULLY_PLAYED
: Element został ukończony.
DESCRIPTION_EXTRAS_KEY_COMPLETION_PERCENTAGE
: wskazuje postęp w oglądaniu długich treści jako liczbę zmiennoprzecinkową z zakresu od 0,0 do 1,0 włącznie. Dostarcza to więcej informacji o staniePARTIALLY_PLAYING
, dzięki czemu Android Auto lub AAOS mogą wyświetlać bardziej przydatny wskaźnik postępu, np. pasek postępu. Jeśli używasz tego dodatku, zapoznaj się z artykułem Aktualizowanie paska postępu w widoku przeglądania podczas odtwarzania treści, aby dowiedzieć się, jak aktualizować ten wskaźnik po pierwszym wyświetleniu.
Aby wyświetlać wskaźniki, które pojawiają się podczas przeglądania drzewa multimediów, utwórz pakiet dodatków zawierający co najmniej jedną z tych stałych.
Następnie przekaż ten pakiet do metody MediaDescription.Builder.setExtras
.
Ten fragment kodu pokazuje, jak wyświetlać wskaźniki dla elementu multimedialnego o treściach dla dorosłych, który jest ukończony w 70%:
Kotlin
import androidx.media.utils.MediaConstants
val extras = Bundle()
extras.putLong(
MediaConstants.METADATA_KEY_IS_EXPLICIT,
MediaConstants.METADATA_VALUE_ATTRIBUTE_PRESENT)
extras.putInt(
MediaConstants.DESCRIPTION_EXTRAS_KEY_COMPLETION_STATUS,
MediaConstants.DESCRIPTION_EXTRAS_VALUE_COMPLETION_STATUS_PARTIALLY_PLAYED)
extras.putDouble(
MediaConstants.DESCRIPTION_EXTRAS_KEY_COMPLETION_PERCENTAGE, 0.7)
val description =
MediaDescriptionCompat.Builder()
.setMediaId(/*...*/)
.setTitle(resources.getString(/*...*/))
.setExtras(extras)
.build()
return MediaBrowserCompat.MediaItem(description, /* flags */)
Java
import androidx.media.utils.MediaConstants;
Bundle extras = new Bundle();
extras.putLong(
MediaConstants.METADATA_KEY_IS_EXPLICIT,
MediaConstants.METADATA_VALUE_ATTRIBUTE_PRESENT);
extras.putInt(
MediaConstants.DESCRIPTION_EXTRAS_KEY_COMPLETION_STATUS,
MediaConstants.DESCRIPTION_EXTRAS_VALUE_COMPLETION_STATUS_PARTIALLY_PLAYED);
extras.putDouble(
MediaConstants.DESCRIPTION_EXTRAS_KEY_COMPLETION_PERCENTAGE, 0.7);
MediaDescriptionCompat description =
new MediaDescriptionCompat.Builder()
.setMediaId(/*...*/)
.setTitle(resources.getString(/*...*/))
.setExtras(extras)
.build();
return new MediaBrowserCompat.MediaItem(description, /* flags */);
Aby wyświetlić wskaźniki dla aktualnie odtwarzanego elementu multimedialnego, zadeklaruj wartości dla METADATA_KEY_IS_EXPLICIT
lub EXTRA_DOWNLOAD_STATUS
w MediaMetadataCompat
mediaSession
.
Ten fragment kodu pokazuje, jak wskazać, że utwór w widoku odtwarzania jest przeznaczony dla osób pełnoletnich i pobrany:
Kotlin
import androidx.media.utils.MediaConstants
mediaSession.setMetadata(
MediaMetadataCompat.Builder()
.putString(
MediaMetadataCompat.METADATA_KEY_DISPLAY_TITLE, "Song Name")
.putString(
MediaMetadataCompat.METADATA_KEY_DISPLAY_SUBTITLE, "Artist name")
.putString(
MediaMetadataCompat.METADATA_KEY_ALBUM_ART_URI,
albumArtUri.toString())
.putLong(
MediaConstants.METADATA_KEY_IS_EXPLICIT,
MediaConstants.METADATA_VALUE_ATTRIBUTE_PRESENT)
.putLong(
MediaDescriptionCompat.EXTRA_DOWNLOAD_STATUS,
MediaDescriptionCompat.STATUS_DOWNLOADED)
.build())
Java
import androidx.media.utils.MediaConstants;
mediaSession.setMetadata(
new MediaMetadataCompat.Builder()
.putString(
MediaMetadataCompat.METADATA_KEY_DISPLAY_TITLE, "Song Name")
.putString(
MediaMetadataCompat.METADATA_KEY_DISPLAY_SUBTITLE, "Artist name")
.putString(
MediaMetadataCompat.METADATA_KEY_ALBUM_ART_URI,
albumArtUri.toString())
.putLong(
MediaConstants.METADATA_KEY_IS_EXPLICIT,
MediaConstants.METADATA_VALUE_ATTRIBUTE_PRESENT)
.putLong(
MediaDescriptionCompat.EXTRA_DOWNLOAD_STATUS,
MediaDescriptionCompat.STATUS_DOWNLOADED)
.build());
Aktualizowanie paska postępu w widoku przeglądania podczas odtwarzania treści
Jak już wspomnieliśmy, możesz użyć dodatku DESCRIPTION_EXTRAS_KEY_COMPLETION_PERCENTAGE
, aby wyświetlać pasek postępu dla częściowo odtworzonych treści w widoku przeglądania. Jeśli jednak użytkownik będzie nadal odtwarzać częściowo odtworzone treści, wskaźnik ten z czasem stanie się niedokładny.
Aby pasek postępu w Androidzie Auto i AAOS był zawsze aktualny, podaj dodatkowe informacje w MediaMetadataCompat
i PlaybackStateCompat
, aby połączyć bieżące treści z elementami multimedialnymi w widoku przeglądania.
Aby element multimedialny miał automatycznie aktualizowany pasek postępu, muszą być spełnione te wymagania:
Po utworzeniu
MediaItem
musi wysłać w swoich dodatkach wartośćDESCRIPTION_EXTRAS_KEY_COMPLETION_PERCENTAGE
z zakresu od0.0
do1.0
(włącznie).MediaMetadataCompat
musi wysyłaćMETADATA_KEY_MEDIA_ID
z wartością ciągu znaków równą identyfikatorowi multimediów przekazywanemu doMediaItem
.PlaybackStateCompat
musi zawierać dodatkowy element z kluczemPLAYBACK_STATE_EXTRAS_KEY_MEDIA_ID
, który jest mapowany na wartość ciągu tekstowego równą identyfikatorowi multimediów przekazanemu doMediaItem
.
Ten fragment kodu pokazuje, jak wskazać, że odtwarzany element jest połączony z elementem w widoku przeglądania:
Kotlin
import androidx.media.utils.MediaConstants
// When the MediaItem is constructed to show in the browse view.
// Suppose the item was 25% complete when the user launched the browse view.
val mediaItemExtras = Bundle()
mediaItemExtras.putDouble(
MediaConstants.DESCRIPTION_EXTRAS_KEY_COMPLETION_PERCENTAGE, 0.25)
val description =
MediaDescriptionCompat.Builder()
.setMediaId("my-media-id")
.setExtras(mediaItemExtras)
// ...and any other setters.
.build()
return MediaBrowserCompat.MediaItem(description, /* flags */)
// Elsewhere, when the user has selected MediaItem for playback.
mediaSession.setMetadata(
MediaMetadataCompat.Builder()
.putString(MediaMetadata.METADATA_KEY_MEDIA_ID, "my-media-id")
// ...and any other setters.
.build())
val playbackStateExtras = Bundle()
playbackStateExtras.putString(
MediaConstants.PLAYBACK_STATE_EXTRAS_KEY_MEDIA_ID, "my-media-id")
mediaSession.setPlaybackState(
PlaybackStateCompat.Builder()
.setExtras(playbackStateExtras)
// ...and any other setters.
.build())
Java
import androidx.media.utils.MediaConstants;
// When the MediaItem is constructed to show in the browse view.
// Suppose the item was 25% complete when the user launched the browse view.
Bundle mediaItemExtras = new Bundle();
mediaItemExtras.putDouble(
MediaConstants.DESCRIPTION_EXTRAS_KEY_COMPLETION_PERCENTAGE, 0.25);
MediaDescriptionCompat description =
new MediaDescriptionCompat.Builder()
.setMediaId("my-media-id")
.setExtras(mediaItemExtras)
// ...and any other setters.
.build();
return new MediaBrowserCompat.MediaItem(description, /* flags */);
// Elsewhere, when the user has selected MediaItem for playback.
mediaSession.setMetadata(
new MediaMetadataCompat.Builder()
.putString(MediaMetadata.METADATA_KEY_MEDIA_ID, "my-media-id")
// ...and any other setters.
.build());
Bundle playbackStateExtras = new Bundle();
playbackStateExtras.putString(
MediaConstants.PLAYBACK_STATE_EXTRAS_KEY_MEDIA_ID, "my-media-id");
mediaSession.setPlaybackState(
new PlaybackStateCompat.Builder()
.setExtras(playbackStateExtras)
// ...and any other setters.
.build());
P
Nawet w przypadku nieodtwarzanych lub w pełni odtworzonych treści może się wyświetlać automatycznie aktualizowany pasek postępu. Dzieje się tak, jeśli odpowiednie elementy multimedialne zawierają dodatkowy parametr DESCRIPTION_EXTRAS_KEY_COMPLETION_PERCENTAGE
o wartości 0.0
(w przypadku nieodtwarzanych) lub 1.0
(w przypadku w pełni odtworzonych). Gdy użytkownik wybierze te multimedia, Android Auto i AAOS wyświetlą pasek postępu nad innymi wskaźnikami postępu.