Die Implementierung der Funksteuerung basiert auf MediaSession
und
MediaBrowse
, mit denen Medien- und Sprachassistenten-Apps Folgendes ermöglichen:
das Radio zu steuern. Weitere Informationen finden Sie unter
Erstelle Medien-Apps für Autos auf developer.android.com.
In der Unterstützung des Autoradios wird eine Baumstruktur für die Mediensuche bereitgestellt.
Bibliothek in packages/apps/Car/libs
. Diese Bibliothek enthält auch Erweiterungen von
ProgramSelector zum Konvertieren in und aus URI. Es wird empfohlen,
Verwenden Sie diese Bibliothek, um den zugehörigen Suchbaum zu erstellen.
Medienquelle wechseln
Für einen nahtlosen Übergang zwischen Radio und anderen in Medien angezeigten Apps
Die Car-media-common Library enthält Klassen, die in den Radiosender integriert werden sollten.
MediaAppSelectorWidget
kann in der XML-Datei für die Radio-App enthalten sein
(Symbol und Drop-down-Menü, das in den Referenzmedien- und Radio-Apps verwendet wird):
<com.android.car.media.common.MediaAppSelectorWidget android:id="@+id/app_switch_container" android:layout_width="@dimen/app_switch_widget_width" android:layout_height="wrap_content" android:background="@drawable/app_item_background" android:gravity="center" />
Dieses Widget startet AppSelectionFragment
, das eine
eine Liste der Medienquellen, zu denen gewechselt werden kann. Wenn eine andere
als die angegebene Benutzeroberfläche gewünscht wird,
können Sie ein benutzerdefiniertes Widget erstellen, um AppSelectionFragment
zu starten, wenn das
sollte angezeigt werden.
AppSelectionFragment newFragment = AppSelectionFragment.create(widget, packageName, fullScreen); newFragment.show(mActivity.getSupportFragmentManager(), null);
Die Referenz-Radio-App enthält eine Beispielimplementierung.
in packages/apps/Car/Radio
.
Detaillierte Steuerungsspezifikationen
MediaSession
(über MediaSession.Callback
)
-Schnittstelle bietet Steuermechanismen für das aktuell wiedergegebene Radioprogramm:
onPlay
,onStop
. Radiowiedergabe stumm schalten.onPause
Zeitversetzte Pause (falls unterstützt)onPlayFromMediaId
Alle Inhalte aus einem übergeordneten Ordner werden abgespielt. Beispiel: „Spiel FM“ oder „Radio hören“.onPlayFromUri
Eine bestimmte Frequenz wird abgespielt. Beispiel: „Spiel 88,5 FM“.onSkipToNext
,onSkipToPrevious
. Nächsten oder vorherigen Titel einstellen Sender.onSetRating
Zu Favoriten hinzufügen oder daraus entfernen
Der MediaBrowser zeigt eine einstellbare MediaItem für drei Arten von Verzeichnissen der obersten Ebene verwenden:
- (Optional) Programme (Stationen). Dieser Modus wird in der Regel von Dual-Tuner-Radios, die alle verfügbaren abstimmbaren Radiosender am Standort des Nutzers anzeigen.
- Favoriten. Radioprogramme, die der Favoritenliste hinzugefügt wurden, einige möglicherweise nicht verfügbar (außerhalb des Empfangsbereichs)
- Bandkanäle Alle physisch möglichen Kanäle in der aktuellen Region (87,9, 88.1, 88.3, 88.5, 88.7, 88.9, 89.1 usw.). Jede Band hat ein separates Verzeichnis auf oberster Ebene.
Jedes Element in diesen Ordnern (AM/FM/Programme) ist ein MediaItem mit einem URI, der verwendet werden kann. mit MediaSession zur Feinabstimmung. Jeder Ordner der obersten Ebene (AM/FM/Programme) ist ein MediaItem mit einer mediaId, die kann zusammen mit MediaSession verwendet werden, um die Wiedergabe auszulösen. Dies liegt im Ermessen des OEMs. Für „Spiel FM“, „Spiel AM“ und „Spiel Radio ab“ sind alle unspezifischen Radioabfragen, die mediaId zum Senden an die OEM-Radio-App. Die Radio-App legt fest, was sie auf dem und die mediaId an.
Mediensitzung
Da es kein Konzept zum Pausieren eines Übertragungsstreams gibt, können die Aktionen „Wiedergabe“, „Pause“ und „Stopp“ nicht immer auf Radio angewendet. Über das Radio wird durch die Aktion „Stopp“ der Stream stummgeschaltet während Google Play mit dem Aufheben der Stummschaltung verknüpft ist.
Einige Radiosender (oder Apps) bieten die Möglichkeit, die Pause eines Übertragungsstreams durch
Inhalte im Cache zu speichern
und sie später wiederzugeben. Verwenden Sie in solchen Fällen onPause
.
Durch die Wiedergabe über die mediaId- und URI-Aktion soll ein Sender abgestimmt werden. die von der MediaBrowser-Oberfläche abgerufen werden. Die mediaId ist ein beliebiger String die von der Radio-App bereitgestellt wird, um eine eindeutige ID festzulegen, sodass eine bestimmte ID nur auf einen Artikel verweist. und stabiler Wert, d. h. ein bestimmter Artikel hat für die gesamte Sitzung dieselbe ID. um eine bestimmte Station zu identifizieren. Der URI hat ein klar definiertes Schema. Kurz gesagt: Ein URI-basierter von ProgramSelector. Dadurch wird zwar das uniquity-Attribut beibehalten, stabil sein, kann sich jedoch ändern, wenn die Station eine andere Frequenz wechselt.
onPlayFromSearch
wird standardmäßig nicht verwendet. liegt in der Verantwortung des Kunden
(Companion-App), um ein Suchergebnis aus der MediaBrowser-Baumstruktur auszuwählen. Umzug
dass diese Verantwortung für die Radio-App die Komplexität erhöhen würde, und erfordert formelle Verträge
Zeichenfolgenabfragen angezeigt werden sollten, was zu einer ungleichmäßigen Nutzererfahrung auf unterschiedlicher Hardware führen kann.
Plattformen.
Hinweis:Die Radio-App enthält keine zusätzlichen Informationen, die nützlich wären, um nach einem Stationsnamen zu suchen, der dem Client nicht angezeigt wird über die MediaBrowser-Oberfläche.
Das Überspringen zur nächsten oder vorherigen Station hängt vom aktuellen Kontext ab:
- Wenn eine App auf einen Sender aus der Favoritenliste eingestellt ist, kann zum nächsten Sender aus der Favoritenliste springen.
- Wenn du einen Sender aus der Programmliste hörst, wird möglicherweise der nächste Sender eingestellt verfügbaren Sender, sortiert nach Kanalnummer.
- Wenn du einen beliebigen Kanal anhörst, wird möglicherweise der nächste physische Kanal ausgewählt. auch ohne Funksignal.
Die Radio-App übernimmt diese Aktionen.
Fehlerbehandlung
TransportControls
Aktionen (Wiedergabe, Stopp und Weiter) gibt kein Feedback dazu, ob die Aktion
oder nicht. Fehler können nur durch Festlegen der MediaSession
Bundesstaat in
STATE_ERROR
mit einer Fehlermeldung.
Die Radio-App muss diese Aktionen ausführen und entweder ausführen oder einen Fehlerstatus festlegen.
Wenn die Ausführung des Wiedergabebefehls nicht sofort erfolgt, sollte der Wiedergabestatus in
STATE_CONNECTING
(bei direkter Abstimmung) oder
STATE_SKIPPING_TO_PREVIOUS
oder
NEXT
während der Befehl ausgeführt wird.
Der Client sollte
PlaybackState
beobachten
und bestätigen Sie, dass die Sitzung das aktuelle Programm in das Programm geändert hat, das angefordert oder in das
Fehlerstatus. STATE_CONNECTING
darf 30 Sekunden nicht überschreiten. Eine direkte Abstimmung auf einen bestimmten
Die AM/FM-Frequenz sollte viel schneller funktionieren.
Favoriten hinzufügen und entfernen
MediaSession unterstützt Bewertungen, mit denen Favoriten gesteuert werden können. onSetRating
mit dem Wert "Rating" aufgerufen.
RATING_HEART
fügt den aktuell eingestellten Sender zur Favoritenliste hinzu bzw. entfernt ihn daraus.
Im Gegensatz zu den alten Voreinstellungen geht dieses Modell von ungeordneten und unbegrenzten Favoriten aus.
, wenn jeder gespeicherte Favorit einem numerischen Slot zugewiesen wurde (normalerweise 1 bis 6).
Infolgedessen wären voreingestellte Systeme nicht mit onSetRating
kompatibel
.
Die Einschränkung der MediaSession API besteht darin, dass nur der aktuell eingestellte Sender hinzugefügt oder entfernt werden können. Elemente müssen beispielsweise zuerst ausgewählt werden, bevor sie entfernt werden können. Dies ist lediglich eine Einschränkung des MediaBrowser-Clients, z. B. Companion-App. Die Radio-App ist nicht ähnlich eingeschränkt. Dieser Teil ist optional Wenn eine App „Favoriten“ nicht unterstützt.
MediaBrowser
Um die Frequenzen oder Namen von physischen Kanälen anzugeben (bei der Feinabstimmung Kanäle, die für eine bestimmte Funktechnologie geeignet sind), sind gültig für einer bestimmten Region werden alle gültigen Kanäle (Frequenzen) für jedes Band aufgelistet. In den USA sind das 101 FM-Kanäle im Bereich von 87, 8 bis 108,0-MHz-Bereich (mit Abstand von 0,2 MHz) und 117-AM-Kanäle im Bereich von 530 bis 1.700 kHz bei einem Abstand von 10 kHz. Da HD-Radio den gleichen Kanalraum nutzt, nicht separat dargestellt.
Die Liste der derzeit verfügbaren Radioprogramme ist flach, da dies Anzeigeschemas wie z. B. Gruppierung nach Direct Audio Broadcast (DAB)-Ensemble.
Einträge in der Favoritenliste können möglicherweise nicht eingestellt werden. Wenn z. B. eine bestimmte Programm liegt außerhalb des zulässigen Bereichs. Die Radio-App erkennt möglicherweise, ob der Eintrag vorab abgestimmt werden können. In diesem Fall wird der Eintrag möglicherweise nicht als abspielbar markiert.
Um Ordner der obersten Ebene zu identifizieren, wird derselbe Mechanismus angewendet, der von Bluetooth verwendet wird.
Das heißt, ein Extras-Bundle von
MediaDescription
enthält, genau wie Bluetooth mit
EXTRA_BT_FOLDER_TYPE
, ein Tuner-spezifisches Feld.
Im Fall des Rundfunks führt dies zu der Definition der folgenden neuen Felder in der
öffentliche API:
EXTRA_BCRADIO_FOLDER_TYPE = "android.media.extra.EXTRA_BCRADIO_FOLDER_TYPE"
Eins der folgenden Werte: <ph type="x-smartling-placeholder">- </ph>
BCRADIO_FOLDER_TYPE_PROGRAMS = 1
Derzeit verfügbare Programme.BCRADIO_FOLDER_TYPE_FAVORITES = 2
Favoriten.BCRADIO_FOLDER_TYPE_BAND = 3
Alle physischen Kanäle einer bestimmten Band.
Sie müssen keine radiospezifischen Metadatenfelder definieren, da alle Die relevanten Daten passen in das vorhandene
MediaBrowser.MediaItem
-Schema:- Programmname (RDS PS, DAB-Dienstname).
MediaDescription.getTitle
. - FM-Frequenz. -URI (siehe
ProgramSelector) oder
MediaDescription.getTitle
(wenn sich ein Eintrag im OrdnerBROADCASTRADIO_FOLDER_TYPE_BAND
befindet). - Funkspezifische Kennungen (RDS PI, DAB SId).
MediaDescription.getMediaUri
wurde zu ProgramSelector geparst.
Normalerweise ist es nicht nötig, UKW-Frequenzen für einen Eintrag im das aktuelle Programm oder die Favoritenliste (da der Kunde mit Medien arbeiten sollte) IDs). Sollte jedoch ein solcher Bedarf bestehen, etwa zu Anzeigezwecken, im URI vorhanden und kann zu
ProgramSelector
geparst werden. Es wird jedoch nicht empfohlen, den URI zur Auswahl von Elementen im aktuellen Sitzung. Weitere Informationen finden Sie unterProgramSelector
Um Leistungs- oder binderbezogene Probleme zu vermeiden, muss der MediaBrowser-Dienst die Paginierung unterstützen:
EXTRA_PAGE
EXTRA_PAGE_SIZE
- Zusätzliche Parameter für
subscribe()
Hinweis:Die Paginierung wird standardmäßig im
onLoadChildren()
ohne Optionen-Handhabung.Ähnliche Einträge aus allen Arten von Listen (Rohkanäle, gefundene Programme und Favoriten) haben möglicherweise unterschiedliche mediaIds. Dies hängt von der Radio-App ab. Unterstützung in der Bibliothek verwendet werden. Die URIs (in der ProgramSelector-Form) unterscheiden sich zwischen Rohkanälen und Programmen, die in den meisten Fällen gefunden werden (mit Ausnahme von FM). ohne RDS), aber die gefundenen Programme und Favoriten sind größtenteils identisch (mit Ausnahme von z. B. bei der Aktualisierung der Verfügbarkeitsprognose).
Die Verwendung unterschiedlicher mediaIds für Einträge aus verschiedenen Listentypen führt dazu, können verschiedene Maßnahmen an ihnen vorgenommen werden. Sie können entweder die Favoritenliste oder der Liste „Alle Programme“ unter
onSkipToNext
entsprechend dem Ordner „Kürzlich“MediaItem
ausgewählt (siehe MediaSession).Spezielle Abstimmungsaktionen
Mit der Programmliste können Nutzer einen bestimmten Sender einstellen, aber nicht allgemeine Anfragen stellen, wie z. B. „Auf UKW hören“, was dazu führen kann, dass eine kürzliche einen Sender auf dem UKW-Band gehört haben.
Um solche Aktionen zu unterstützen, haben einige Verzeichnisse der obersten Ebene
FLAG_PLAYABLE
Flag gesetzt (zusammen mitFLAG_BROWSABLE
) für Ordner).Aktion Abstimmung auf Vorgehensweise Radio hören Alle Radiokanäle startService(ACTION_PLAY_BROADCASTRADIO)
ODER
playFromMediaId(MediaBrowser.getRoot())
FM abspielen Alle UKW-Kanäle Auf mediaId
des FM-Bands abspielen.Welches Programm ausgewählt werden soll, hängt von der App ab. Dies ist in der Regel der zuletzt eingestellte Kanal aus der angegebenen Liste. Weitere Informationen zu
ACTION_PLAY_BROADCASTRADIO
, siehe Allgemeine Absichten der Wiedergabe.Erkennung und Dienstverbindung
PackageManager
kann den MediaBrowserService, der Radiosender bereitstellt, direkt finden. Baum. Rufen Sie dazuresolveService
auf. mit dem IntentACTION_PLAY_BROADCASTRADIO
(siehe General Play Intents) undMATCH_SYSTEM_ONLY
. Alle Dienste, die Radiodienste bereitstellen, mehrere sein; zum Beispiel AM/FM und Satellit trennen), verwenden SiequeryIntentServices
Der aufgelöste Dienst verarbeitet die
android.media.browse.MediaBrowserService
-Bindung die Absicht der Nutzer*innen. Dies wird von GTS überprüft.Um eine Verbindung zum ausgewählten MediaBrowserService herzustellen, erstellen
MediaBrowser
-Instanz für eine bestimmte Dienstkomponente undconnect
. Nach dem Herstellen der Verbindung kann ein Handle zu MediaSession abgerufen werden über .getSessionToken
Die Radio-App kann Clientpakete einschränken, die in einem
onGetRoot
die Implementierung ihres Dienstes. Die App sollte System-Apps erlauben, eine Verbindung herzustellen ohne auf die weiße Liste gesetzt zu werden. Weitere Informationen zur Aufnahme in die Zulassungsliste finden Sie unter Akzeptiere das Assistant-App-Paket und die Google Assistant-Signatur.Ist die quellenspezifische App (z. B. eine Radio-App) auf einem Gerät ohne eine solche Unterstützung
ACTION_PLAY_BROADCASTRADIO
, aber sein MediaBrowser-Baum würde keine radio-spezifischen Tags enthalten. So kann ein Kunde überprüfen, ob eine bestimmte Quelle auf einem Gerät verfügbar ist, muss:- Radiodienst entdecken (
resolveService
anrufen fürACTION_PLAY_BROADCASTRADIO
). - Erstellen Sie
MediaBrowser
und stellen Sie dann eine Verbindung her. - Präsenz von
MediaItem
mitEXTRA_BCRADIO_FOLDER_TYPE
ermitteln extra.
Hinweis : In den meisten Fällen muss der Client alle verfügbaren MediaBrowser-Baumstrukturen, um alle verfügbaren Quellen für ein bestimmtes Gerät zu ermitteln.
Bandnamen
Die Bandliste wird durch eine Reihe von Verzeichnissen der obersten Ebene mit einem Ordnertyp dargestellt Tag auf
BCRADIO_FOLDER_TYPE_BAND
festgelegt. Die vonMediaItem
Titel sind lokalisierte Zeichenfolgen, die Bandnamen darstellen. In den meisten Fällen der englischen Übersetzung, aber der Kunde kann sich nicht auf diese Annahme verlassen.Um einen stabilen Mechanismus zum Suchen bestimmter Bänder bereitzustellen, Für Bandordner wurde ein zusätzliches Tag hinzugefügt:
EXTRA_BCRADIO_BAND_NAME_EN
. Dies ist einen nicht lokalisierten Namen des Bandes und kann nur einen der folgenden vordefinierten Werte annehmen:AM
FM
DAB
Wenn sich das Band nicht in dieser Liste befindet, sollte das Bandnamen-Tag nicht festgelegt werden. Wenn das Band jedoch in der Liste aufgeführt ist, muss ein Tag festgelegt sein. HD-Radio funktioniert nicht Zählen Sie separate Bänder auf, da es dasselbe zugrunde liegende Medium wie AM/FM verwendet.
Allgemeine Kaufabsichten
Jede App, die auf die Wiedergabe einer bestimmten Quelle (z. B. Radio oder CD) ausgerichtet ist, muss eine allgemeine Wiedergabe-Abfolge, um mit der Wiedergabe von Inhalten zu beginnen, möglicherweise inaktiv (z. B. nach dem Booten). Es hängt von der App ab, wie die Inhalte ausgewählt werden, Normalerweise handelt es sich dabei aber um das kürzlich angehörte Radioprogramm oder den kürzlich angehörten CD-Titel. Intent für jede Audioquelle definiert:
android.car.intent.action.PLAY_BROADCASTRADIO
android.car.intent.action.PLAY_AUDIOCD
: CD-DA oder CD-Textandroid.car.intent.action.PLAY_DATADISC
: Optische Datendisk wie CD/DVD, aber nicht CD-DA (möglicherweise gemischte CD)android.car.intent.action.PLAY_AUX
: ohne anzugeben, welche AUX-Anschlussandroid.car.intent.action.PLAY_BLUETOOTH
android.car.intent.action.PLAY_USB
: ohne anzugeben, welche USB-Gerätandroid.car.intent.action.PLAY_LOCAL
: Lokaler Medienspeicher (integrierter Blitz)
Intents wurden für allgemeine Wiedergabebefehle ausgewählt, zwei Probleme gleichzeitig haben: den allgemeinen Wiedergabebefehl und die Diensterkennung. Ein zusätzlicher Vorteil dieser Absicht wäre die Möglichkeit, solche ohne die MediaBrowser-Sitzung zu öffnen.
Die Diensterkennung ist eigentlich das wichtigere Problem, das mit diesen Intents. Das Verfahren für die Diensterkennung ist auf diese Weise einfach und eindeutig (siehe Erkennung und Dienstverbindung.
Um einige Clientimplementierungen zu vereinfachen, gibt es eine alternative Methode, der den entsprechenden Wiedergabebefehl ausgibt (der auch von der Radio-App implementiert werden muss): Ausgabe von
playFromMediaId
mit der RootId des Root-Knotens (verwendet als mediaId). Während die Root-Knoten nicht abspielbar ist, ist "rootId" ein beliebiger String das als „mediaId“ genutzt werden kann. Es sind jedoch keine Clients erforderlich, um diese Nuance zu verstehen.Programmauswahl
mediaId
reicht zwar aus, um einen Kanal aus derMediaBrowserService
, wird sie an eine Sitzung gebunden und nicht konsistent. zwischen den Anbietern. In einigen Fällen benötigt der Client möglicherweise einen absoluten Zeiger (z. B. absolute Häufigkeit), um sie zwischen Sitzungen und Geräten aufrechtzuerhalten.Im Zeitalter des digitalen Radiosenders reicht eine reine Frequenz nicht aus, einen bestimmten Sender einzustellen. Verwenden Sie daher
ProgramSelector
, um mit einem analogen oder digitalen Kanal verbunden werden.ProgramSelector
besteht aus zwei Teilen:- Primäre Kennung: Eine eindeutige und stabile ID für einen bestimmten Radiosender der sich nicht ändert, aber nicht ausreicht, um diesen Sender einzustellen. Beispiel: RDS-PI-Code, der in den USA in das Rufzeichen übersetzt werden kann.
- Sekundäre Kennungen: Zusätzliche Kennungen für die Abstimmung zu dieser Station (z. B. Frequenz), möglicherweise auch Kennungen von anderen Funktechnologien. So kann beispielsweise ein DAB-Sender über ein Fallback für analogen Rundfunk verfügen.
Damit
ProgramSelector
in dasMediaBrowser
- oderMediaSession
-basierte Lösung können Sie ein URI-Schema definieren, um sie zu serialisieren. Das Schema ist wie folgt definiert:broadcastradio://program/<primary ID type>/<primary ID>? <secondary ID type>=<secondary ID>&<secondary ID type>=<secondary ID>
In diesem Beispiel lautet der Abschnitt mit den sekundären Kennungen (nach dem Fragezeichen (
?
)) optional und kann entfernt werden, um eine stabile ID für die Verwendung alsmediaId
bereitzustellen. Beispiel:broadcastradio://program/RDS_PI/1234?AMFM_FREQUENCY=88500&AMFM_FREQUENCY=103300
broadcastradio://program/AMFM_FREQUENCY/102100
broadcastradio://program/DAB_SID_EXT/14895264?RDS_PI=1234
Der Autorisierungsteil (auch bekannt als Host) von
program
bietet etwas Spielraum für in Zukunft zu testen. Die Zeichenfolgen des ID-Typs sind genau angegeben. als ihre Namen in der HAL 2.x-Definition vonIdentifierType
und im Wert ist eine Dezimal- oder Hexadezimalzahl mit dem Präfix0x
.Alle anbieterspezifischen Kennzeichnungen werden durch das
VENDOR_
dargestellt . Beispiel:VENDOR_0
fürVENDOR_START
undVENDOR_1
fürVENDOR_START
plus 1. Solche URIs sind spezifisch für Die Funkhardware, auf der sie generiert wurden und nicht zwischen Geräten übertragen werden können von verschiedenen OEMs.Diese URIs müssen jedem MediaItem unter dem Radio der obersten Ebene zugewiesen werden. Ordner. Außerdem muss MediaSession sowohl
playFromMediaId
unterstützen, undplayFromUri
. Der URI ist jedoch in erster Linie für Funkschnittstellen vorgesehen. Metadatenextraktion (z. B. FM-Frequenz) und dauerhafter Speicher. Es gibt keine wird garantiert, dass der URI für alle Medienelemente verfügbar ist, z. B. wenn das primäre ID-Typ wird vom Framework noch nicht unterstützt). Die Media-ID hingegen funktioniert immer. Es wird nicht empfohlen, für Clients den URI zur Auswahl von Elementen aus der aktuelle MediaBrowser-Sitzung. Verwende stattdessenplayFromMediaId
. Allerdings ist es nicht optional für die bereitstellende Anwendung und fehlende URIs sind nur für gut begründete Fälle vorgesehen.Im ursprünglichen Design wurde anstelle der
://
-Sequenz ein einzelner Doppelpunkt verwendet nach dem Schemateil ein. Erstere wird jedoch nicht vonandroid.net.Uri
für absolute hierarchische URI-Referenzen.Andere Quelltypen
Andere Audioquellen können auf ähnliche Weise gehandhabt werden. Beispiel: Hilfseingabe und Audio-CD-Player.
Eine einzelne App kann mehrere Arten von Quellen bereitstellen. In solchen Fällen empfohlen, einen separaten MediaBrowserService für jede Art von Quelle. Auch bei einer Einrichtung mit mehreren bereitgestellten Quellen/MediaBrowserServices wird dringend empfohlen, jeweils eine MediaSession in einem
Audio-CD
Ähnlich wie bei Audio-CDs insofern, als die App, die solche Datenträger ausliefert, MediaBrowser mit einem einzigen durchsuchbaren Eintrag (oder mehr, wenn das System über eine CD-Wechsler), die wiederum alle Titel einer bestimmten CD enthalten. Wenn das System nicht über die Titel auf jeder CD verfügt (z. B. wenn alle Datenträger gleichzeitig in eine Patrone eingesetzt werden und nicht alle gelesen werden), dann MediaItem für das gesamte Laufwerk wäre nur
<ph type="x-smartling-placeholder">PLAYABLE
, nichtBROWSABLE
plusPLAYABLE
. Befindet sich kein Datenträger in einem für eine Anzeigenfläche hätte das Element wederPLAYABLE
nochBROWSABLE
. (aber jeder Slot muss immer in der Baumstruktur vorhanden sein).Diese Einträge würden ähnlich markiert werden wie das Senden von Radioordnern. are; Sie enthalten zusätzliche zusätzliche Felder, die in der MediaDescription API definiert sind:
EXTRA_CD_TRACK
: ProMediaItem
auf Audio-CD 1-basierte Titelnummer.EXTRA_CD_DISK
: 1-basierte Laufwerksnummer.
Bei einem System mit aktiviertem CD-Text und einem kompatiblen Laufwerk würde das MediaItem der obersten Ebene den Titel des Datenträgers. Entsprechend hätten die MediaItems für Tracks eine Titel des Titels.
AUX-Eingang
Die Anwendung, die die Hilfseingaben bereitstellt, stellt eine MediaBrowser-Baumstruktur mit einem einzelnen Eintrag (oder mehr, wenn mehrere Ports vorhanden sind), die den AUX-Eingang darstellen. Die jeweilige MediaSession übernimmt ihre mediaId und wechselt nach Erhalt der
<ph type="x-smartling-placeholder">playFromMediaId
-Anfrage zu dieser Quelle.Jeder AUX MediaItem-Eintrag hätte ein zusätzliches Feld
EXTRA_AUX_PORT_NAME
ist auf den nicht lokalisierten Namen des Ports festgelegt ohne das „AUX“ Wortgruppe. Beispiel: „AUX 1“ auf „1“, „AUX“ vorne“ nach vorne und „AUX“ in einen leeren String. In anderen Sprachen als Englisch würde der englische String beibehalten. UnwahrscheinlichEXTRA_BCRADIO_BAND_NAME_EN
sind die Werte OEM-definiert und nicht auf eine vordefinierte Liste beschränkt.Wenn die Hardware am AUX-Port angeschlossene Geräte erkennen kann, sollte auf der Hardware das MediaItem als
PLAYABLE
, nur wenn die Eingabe verbunden ist. Die Hardware sollte werden trotzdem aufgelistet (aber nichtPLAYABLE
), wenn nichts damit verbunden ist. Port. Wenn die Hardware nicht über eine solche Funktion verfügt, muss MediaItem immer aufPLAYABLE
Zusätzliche Felder
Definieren Sie die folgenden Felder:
EXTRA_CD_TRACK = "android.media.extra.CD_TRACK"
EXTRA_CD_DISK = "android.media.extra.CD_DISK"
EXTRA_AUX_PORT_NAME = "android.media.extra.AUX_PORT_NAME"
Der Kunde muss die MediaItems der obersten Ebene auf Elemente überprüfen, die die
EXTRA_CD_DISK
oderEXTRA_AUX_PORT_NAME
zusätzliches Feld festgelegt.Detaillierte Beispiele
In den folgenden Beispielen wird die MediaBrowser-Baumstruktur für Quelltypen behandelt, die Teil dieses Designs.
Broadcast-Radio-MediaBrowserService (Handles
ACTION_PLAY_BROADCASTRADIO
):- Sender (durchsuchbar)
EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_PROGRAMS
<ph type="x-smartling-placeholder">- </ph>
- URI von BBC One (abspielbar):
broadcastradio://program/RDS_PI/1234?AMFM_FREQUENCY=90500
- URI ABC 88.1 (abspielbar):
broadcastradio://program/RDS_PI/5678?AMFM_FREQUENCY=88100
- URI ABC 88.1 HD1 (abspielbar):
broadcastradio://program/HD_STATION_ID_EXT/158241DEADBEEF?AMFM_FREQUENCY=88100&RDS_PI=5678
- URI ABC 88.1 HD2 (abspielbar):
broadcastradio://program/HD_STATION_ID_EXT/158242DEADBEFE
- 90,5 FM (abspielbar) – FM ohne RDSURI:
broadcastradio://program/AMFM_FREQUENCY/90500
- URI für 620 AM (abspielbar):
broadcastradio://program/AMFM_FREQUENCY/620
- URI von BBC One (abspielbar):
broadcastradio://program/DAB_SID_EXT/1E24102?RDS_PI=1234
- URI von BBC One (abspielbar):
- Favoriten (durchsuchbar, spielbar)
EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_FAVORITES
<ph type="x-smartling-placeholder">- </ph>
- URI von BBC One (abspielbar):
broadcastradio://program/RDS_PI/1234?AMFM_FREQUENCY=101300
- BBC Two (nicht abspielbar)URI:
broadcastradio://program/RDS_PI/1300?AMFM_FREQUENCY=102100
- URI von BBC One (abspielbar):
- AM (durchsuchbar, abspielbar):
EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_BANDEXTRA_BCRADIO_BAND_NAME_EN="AM"
<ph type="x-smartling-placeholder">- </ph>
- URI für 530 AM (abspielbar):
broadcastradio://program/AMFM_FREQUENCY/530
- URI für 540 AM (abspielbar):
broadcastradio://program/AMFM_FREQUENCY/540
- URI für 550 AM (abspielbar):
broadcastradio://program/AMFM_FREQUENCY/550
- URI für 530 AM (abspielbar):
- FM (durchsuchbar, abspielbar):
EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_BANDEXTRA_BCRADIO_BAND_NAME_EN="FM"
<ph type="x-smartling-placeholder">- </ph>
- 87.7 FM (abspielbar) URI:
broadcastradio://program/AMFM_FREQUENCY/87700
- 87.9 FM (abspielbar) URI:
broadcastradio://program/AMFM_FREQUENCY/87900
- 88.1 FM (abspielbar) URI:
broadcastradio://program/AMFM_FREQUENCY/88100
- 87.7 FM (abspielbar) URI:
- DAB (abspielbar):
EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_BANDEXTRA_BCRADIO_BAND_NAME_EN="DAB"
Audio CD MediaBrowserService (Handles
ACTION_PLAY_AUDIOCD
):- Disc 1 (abspielbar)
EXTRA_CD_DISK=1
- Disc 2 (blätterbar, abspielbar)
EXTRA_CD_DISK=2
<ph type="x-smartling-placeholder">- </ph>
- Titel 1 (abspielbar)
EXTRA_CD_TRACK=1
- Titel 2 (abspielbar)
EXTRA_CD_TRACK=2
- Titel 1 (abspielbar)
- Meine Musik-CD (durchsuchbar, abspielbar)
EXTRA_CD_DISK=3
<ph type="x-smartling-placeholder">- </ph>
- All für mich (spielbar)
EXTRA_CD_TRACK=1
- Reise, Reise (playable)
EXTRA_CD_TRACK=2
- All für mich (spielbar)
- Leerer Slot 4 (nicht spielbar)
EXTRA_CD_DISK=4
AUX MediaBrowserService (Handles
ACTION_PLAY_AUX
):- AUX-Frontkamera (abspielbar)
EXTRA_AUX_PORT_NAME="front"
- AUX auf der Rückseite (abspielbar)
EXTRA_AUX_PORT_NAME="rear"