L'implementazione del controllo radio è basata su MediaSession
e
MediaBrowse
, che consentono alle app multimediali e assistente vocale di
controllare la radio. Per ulteriori informazioni, vedi
Realizzare app multimediali per le auto sul sito developer.android.com.
Nel supporto auto-trasmissione radio è disponibile un'implementazione struttura di navigazione dei media
raccolta in packages/apps/Car/libs
. Questa libreria contiene anche estensioni di
ProgramSelector per la conversione da e verso l'URI. È consigliabile che le implementazioni radio
utilizza questa libreria per creare l'albero di navigazione associato.
Selettore della fonte multimediale
Per garantire una transizione perfetta tra la radio e le altre app visualizzate nei contenuti multimediali,
la libreria car-media-common contiene classi che devono essere integrate nella radio
dell'app. MediaAppSelectorWidget
può essere incluso nel file XML dell'app della radio
(l'icona e il menu a discesa utilizzati nelle app multimediali e radio di riferimento):
<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" />
Questo widget avvia AppSelectionFragment
, che mostra una
di fonti multimediali a cui è possibile passare. Se vuoi usare una UI diversa da quella fornita,
puoi creare un widget personalizzato per avviare AppSelectionFragment
quando
dovrebbe essere visualizzato.
AppSelectionFragment newFragment = AppSelectionFragment.create(widget, packageName, fullScreen); newFragment.show(mActivity.getSupportFragmentManager(), null);
Un'implementazione di esempio viene fornita nell'implementazione dell'app radio di riferimento.
si trova in packages/apps/Car/Radio
.
Specifiche di controllo dettagliate
MediaSession
(tramite MediaSession.Callback
)
fornisce meccanismi di controllo per il programma radio attualmente in riproduzione:
onPlay
,onStop
. (Riattiva) l'audio della riproduzione radio.onPause
. Pausa in differita (se supportata).onPlayFromMediaId
. Riproduce contenuti da una cartella di primo livello. Ad esempio, "Fammi ascoltare FM" o "Fammi ascoltare la radio".onPlayFromUri
. Riprodurre una frequenza specifica. Ad esempio, "Fammi ascoltare 88.5 FM".onSkipToNext
,onSkipToPrevious
. Sintonizzati su un evento successivo o precedente stazione di noleggio.onSetRating
. Aggiungere o rimuovere elementi in/da Preferiti.
MediaBrowser espone un'istanza MediaItem su tre tipi di directory di primo livello:
- (Facoltativo) Programmi (stazioni). Questa modalità è in genere utilizzata Radio con doppio sintonizzatore per indicare tutte le stazioni radio sintonizzabili disponibili nella località dell'utente.
- Preferiti. Programmi radio aggiunti all'elenco dei preferiti; alcuni potrebbero essere non disponibile (fuori dal raggio di ricezione).
- Canali band. Tutti i canali fisicamente possibili nella regione corrente (87,9, 88.1, 88.3, 88.5, 88.7, 88.9, 89.1 e così via). Ogni banda ha una directory di primo livello separata.
Ogni elemento in ognuna di queste cartelle (AM/FM/Programmi) è un MediaItem con un URI che può essere utilizzato con MediaSession per l'ottimizzazione. Ogni cartella di primo livello (AM/FM/Programmi) è un elemento MediaItem con un mediaId che può essere utilizzato con MediaSession per attivare la riproduzione ed è a discrezione dell'OEM. Per ad esempio "Fammi ascoltare FM", "Fammi ascoltare AM" e "Fammi ascoltare la radio" sono tutte query radio non specifiche che utilizzano un mediaId da inviare all'app radio dell'OEM. Sta all'app radio stabilire cosa riprodurre dall'app una richiesta generica e il mediaId.
Sessione Media
Dato che non esiste il concetto di mettere in pausa una trasmissione, le azioni di riproduzione, pausa e interruzione non si applicano sempre alla radio. Nel caso della radio, l'azione di interruzione è associata alla disattivazione dell'audio dello stream. mentre Play è associato alla rimozione dell'audio.
Alcuni sintonizzatori radio (o app) offrono la possibilità di simulare la pausa di uno stream di trasmissioni
di memorizzazione nella cache per poi
riprodurli in un secondo momento. In questi casi, utilizza onPause
.
La riproduzione dalle azioni mediaId e URI è destinata alla sintonizzazione su una stazione recuperati dall'interfaccia di MediaBrowser. Il mediaId è una stringa arbitraria fornito dall'app della radio per imporre un valore univoco (in modo che un determinato ID rimandi a un solo elemento) e stabile (quindi un determinato elemento ha lo stesso ID per tutta la sessione) con cui per identificare una determinata stazione. L'URI sarà di uno schema ben definito. In breve, una query di ProgramSelector. Anche se in questo modo si preserva l'attributo di uniquità, non è necessario stabile, anche se può cambiare quando la stazione si sposta a una frequenza diversa.
Per impostazione predefinita, onPlayFromSearch
non viene utilizzato. È responsabilità del cliente
(app companion) per selezionare un risultato di ricerca dalla struttura MediaBrowser. In movimento
che la responsabilità nei confronti dell'app radio aumenterebbe la complessità, richiedesse contratti formali su come
dovrebbero essere visualizzate query di stringa, generando un'esperienza utente non uniforme su hardware diversi.
piattaforme di terze parti.
Nota: l'app Radio non contiene dati aggiuntivi informazioni utili per cercare il nome di una stazione non visibile al client tramite l'interfaccia di MediaBrowser.
Il passaggio alla stazione successiva o precedente dipende dal contesto corrente:
- Quando un'app è sintonizzata su una stazione dell'elenco Preferiti, l'app può passare alla stazione successiva dall'elenco dei preferiti.
- L'ascolto di una stazione dall'elenco Programmi può comportare la sintonizzazione sulla successiva stazione disponibile, ordinata in base al numero di canale.
- L'ascolto di un canale arbitrario può comportare la sintonizzazione sul canale fisico successivo, anche in assenza di segnale di trasmissione.
L'app radio gestisce queste azioni.
Gestione degli errori
TransportControls
azioni (Riproduci, Interrompi e Avanti) non forniscono feedback in merito al fatto che l'azione
va a buon fine. L'unico modo per indicare un errore è impostare la MediaSession
stato a
STATE_ERROR
con un messaggio di errore.
L'app radio deve gestire queste azioni ed eseguirle o impostare uno stato di errore.
Se l'esecuzione del comando di riproduzione non è immediata, lo stato di riproduzione deve essere modificato in
STATE_CONNECTING
(in caso di ottimizzazione diretta) o
STATE_SKIPPING_TO_PREVIOUS
o
NEXT
durante l'esecuzione del comando.
Il cliente dovrebbe guardare
PlaybackState
e verificare che la sessione abbia cambiato il programma corrente in ciò che è stato richiesto o inserito nel
. STATE_CONNECTING
non deve superare i 30 secondi. Tuttavia, una sintonia diretta con
La frequenza AM/FM dovrebbe essere molto più veloce.
Aggiungere e rimuovere preferiti
MediaSession supporta le valutazioni, che può essere utilizzata per controllare i Preferiti. onSetRating
chiamata con una valutazione di tipo
RATING_HEART
aggiunge o rimuove la stazione attualmente sintonizzata su o dall'elenco Preferiti.
A differenza delle preimpostazioni precedenti, questo modello presuppone che siano presenti Preferiti non ordinati e illimitati
, quando ogni preferito salvato è stato allocato a uno slot numerico (in genere, da 1 a 6).
Di conseguenza, i sistemi basati su preset non sarebbero compatibili con onSetRating
operativa.
Il limite dell'API MediaSession è che solo la stazione attualmente sintonizzata su che è possibile aggiungere o rimuovere. Ad esempio, gli elementi devono essere selezionati prima di possono essere rimossi. Si tratta solo di una limitazione del client MediaBrowser, ad esempio app complementare. L'app radio non ha limitazioni simili. Questa parte è facoltativa quando un'app non supporta i Preferiti.
MediaBrowser
Per esprimere quali frequenze o nomi di canali fisici (durante l'ottimizzazione a un canale arbitrario è adatto a una determinata tecnologia radio) sono validi per in una data regione, vengono elencati tutti i canali validi (frequenze) per ogni banda. Nella regione degli Stati Uniti, sono 101 canali FM da nella gamma di 87,8 a 108,0 MHz (con spaziatura di 0,2 MHz) e 117 canali AM nell'intervallo di 530 a 1700 kHz (con spaziatura di 10 kHz). Poiché la radio HD utilizza lo stesso spazio sul canale, non vengono presentati separatamente.
L'elenco dei programmi radio attualmente disponibili è fisso in quanto non è consentito schemi di visualizzazione, come il raggruppamento per ensemble di trasmissione audio diretta (DAB).
Le voci nell'elenco Preferiti potrebbero non essere sintonizzabili. Ad esempio, se un determinato non rientra nel raggio d'azione. L'app radio potrebbe rilevare o meno se la voce possono essere ottimizzati in anticipo. In questo caso, la voce potrebbe non essere contrassegnata come riproducibile.
Per identificare le cartelle di primo livello, viene applicato lo stesso meccanismo utilizzato dal Bluetooth.
In altre parole, un bundle extra di
MediaDescription
contiene un campo specifico per il sintonizzatore, proprio come il Bluetooth fa con
EXTRA_BT_FOLDER_TYPE
.
Nel caso delle trasmissioni radiofoniche, questo porta alla definizione dei nuovi campi seguenti nella
API pubblica:
EXTRA_BCRADIO_FOLDER_TYPE = "android.media.extra.EXTRA_BCRADIO_FOLDER_TYPE"
. Uno. dei seguenti valori:BCRADIO_FOLDER_TYPE_PROGRAMS = 1
. Programmi attualmente disponibili.BCRADIO_FOLDER_TYPE_FAVORITES = 2
. Preferiti.BCRADIO_FOLDER_TYPE_BAND = 3
. Tutti i canali fisici di una determinata band.
Non è necessario definire campi di metadati personalizzati specifici dei parametri radio, poiché i dati pertinenti rientrano nello schema
MediaBrowser.MediaItem
esistente:- Nome del programma (PS RDS, nome del servizio DAB).
MediaDescription.getTitle
. - Frequenza FM. URI (vedi
ProgramSelector) oppure
MediaDescription.getTitle
(se una voce si trova nella cartellaBROADCASTRADIO_FOLDER_TYPE_BAND
). - Identificatori radio-specifici (RDS PI, DAB SId).
MediaDescription.getMediaUri
analizzato in ProgramSelector.
In genere, non è necessario recuperare la frequenza FM per una voce nella programma corrente o dell'elenco dei preferiti (poiché il cliente deve operare su contenuti multimediali ID). Tuttavia, qualora dovesse emergere tale esigenza (ad esempio, a fini di visualizzazione), presenti nell'URI e possono essere analizzati per
ProgramSelector
. Detto questo, sconsigliamo di utilizzare l'URI per selezionare gli elementi all'interno dell'attuale durante la sessione. Per maggiori dettagli, vediProgramSelector
.Per evitare problemi relativi alle prestazioni o al binder, il servizio MediaBrowser deve supportare l'impaginazione:
EXTRA_PAGE
EXTRA_PAGE_SIZE
- Parametri aggiuntivi per
subscribe()
Nota: per impostazione predefinita, l'impaginazione è implementata nel
onLoadChildren()
senza gestione delle opzioni.Voci correlate da tutti i tipi di elenchi (canali non elaborati, programmi trovati e preferiti) potrebbero avere mediaId diversi (spetta all'app della radio, supporto nella raccolta li avranno diversi). Gli URI (nel formato ProgramSelector) sono diversi tra canali non elaborati e programmi trovati nella maggior parte dei casi (ad eccezione di FM senza RDS), ma sono per lo più le stesse tra i programmi trovati e i preferiti (tranne, ad esempio, quando PD è stato aggiornato).
Avere mediaId diversi per le voci provenienti da tipi di elenchi diversi rende è possibile eseguire azioni diverse. Puoi spostarti tra l'elenco dei preferiti nell'elenco Tutti i programmi su
onSkipToNext
, a seconda della cartella delMediaItem
selezionato (vedi MediaSession).Azioni di ottimizzazione speciali
L'elenco dei programmi consente agli utenti di sintonizzarsi su una stazione specifica, ma non di richieste generiche come "Sintonizzati su FM", che potrebbero comportare la sintonizzazione su un ascoltato una stazione sulla banda FM.
Per supportare queste azioni, alcune directory di primo livello hanno
FLAG_PLAYABLE
flag impostato (insieme aFLAG_BROWSABLE
per le cartelle).Azione Si sintonizza su Come emettere Ascoltare la radio Qualsiasi canale radio startService(ACTION_PLAY_BROADCASTRADIO)
OPPURE
playFromMediaId(MediaBrowser.getRoot())
Riproduci FM Qualsiasi canale FM Riproduci da mediaId
della banda FM.La scelta del programma da sintonizzarsi spetta all'app. Questo è in genere il canale sintonizzato più di recente nell'elenco fornito. Per maggiori dettagli su
ACTION_PLAY_BROADCASTRADIO
, vedi Intent di riproduzione generali.Rilevamento e connessione ai servizi
PackageManager
può trovare direttamente MediaBrowserService la radio broadcast albero di Natale. Per farlo, chiamaresolveService
con l'intentACTION_PLAY_BROADCASTRADIO
(vedi intent generali di riproduzione) e FlagMATCH_SYSTEM_ONLY
. Per trovare tutti i servizi che offrono radio ( può essere più di uno: ad esempio AM/FM e satellite separati), utilizzaqueryIntentServices
.Il servizio risolto gestisce l'associazione
android.media.browse.MediaBrowserService
per intenzione. Questo viene verificato con GTS.Per connetterti al MediaBrowserService selezionato, creazione
MediaBrowser
per un determinato componente di servizio econnect
. Dopo aver stabilito la connessione, puoi ottenere un handle per MediaSession tramitegetSessionToken
.L'app Radio può limitare i pacchetti client autorizzati a connettersi in un
onGetRoot
dell'implementazione del proprio servizio. L'app deve consentire la connessione delle app di sistema senza autorizzazione. Per maggiori dettagli sulle autorizzazioni, consulta Accettare il pacchetto dell'app dell'assistente e la firma.Se l'app specifica per la fonte (ad esempio un'app per la radio) è installata su una dispositivo senza questo supporto delle fonti, si pubblicizza come a gestire
ACTION_PLAY_BROADCASTRADIO
, ma la relativa struttura MediaBrowser non contengano tag specifici per i segnali radio. Di conseguenza, un cliente disposto a verificare se un determinato sia disponibile su un dispositivo, deve:- Scopri il servizio radio (chiama il numero
resolveService
perACTION_PLAY_BROADCASTRADIO
). - Crea
MediaBrowser
e connettiti. - Determina la presenza di
MediaItem
conEXTRA_BCRADIO_FOLDER_TYPE
extra.
Nota : nella maggior parte dei casi, il client deve analizzare tutti strutture MediaBrowser disponibili per rilevare tutte le fonti disponibili per un determinato dispositivo.
Nomi delle bande
L'elenco di bande è rappresentato da un insieme di directory di primo livello con un tipo di cartella impostato su
BCRADIO_FOLDER_TYPE_BAND
. DiMediaItem
i titoli sono stringhe localizzate che rappresentano i nomi delle band. Nella maggior parte dei casi lo sarà equivale alla traduzione in inglese, ma il cliente non può dipendere da questo presupposto.Per fornire un meccanismo stabile per la ricerca di determinati cinturini, viene aggiunto un tag aggiuntivo per le cartelle della banda,
EXTRA_BCRADIO_BAND_NAME_EN
. Questo è un nome del cinturino non localizzato e può assumere solo uno di questi valori predefiniti:AM
FM
DAB
Se il cinturino non è presente nell'elenco, il tag non deve essere impostato. Tuttavia, se la banda è nell'elenco, deve avere un tag impostato. La radio HD non enumera bande separate poiché utilizza lo stesso mezzo di base di AM/FM.
Intenzioni di gioco generiche
Ogni app dedicata alla riproduzione di una determinata fonte (come radio o CD) deve gestire una intenzione di acquisto generale di play per iniziare a riprodurre alcuni contenuti eventualmente da stato inattivo (ad esempio, dopo l'avvio). La selezione dei contenuti da parte dell'app spetta all'app ma di solito è il programma radio o la traccia CD ascoltata di recente.È disponibile un file per intenzione definito per ogni sorgente audio:
android.car.intent.action.PLAY_BROADCASTRADIO
android.car.intent.action.PLAY_AUDIOCD
: CD-DA o CD-Textandroid.car.intent.action.PLAY_DATADISC
: disco dati ottico simile CD/DVD, ma non CD-DA (potrebbe essere un CD in modalità mista)android.car.intent.action.PLAY_AUX
: senza specificare quale Porta AUXandroid.car.intent.action.PLAY_BLUETOOTH
android.car.intent.action.PLAY_USB
: senza specificare quale Dispositivo USBandroid.car.intent.action.PLAY_LOCAL
: spazio di archiviazione multimediale locale (flash integrato)
Gli intenti sono stati scelti per il comando di riproduzione generale, perché risolvono due problemi contemporaneamente: il comando generale di riproduzione stesso e il rilevamento dei servizi. Un ulteriore vantaggio di avere tale intento sarebbe la possibilità di eseguire tali una semplice azione senza aprire la sessione MediaBrowser.
La Service Discovery è in realtà il problema più importante risolto con questi intent. La procedura per il Service Discovery è semplice e inequivocabile in questo modo (vedi Rilevamento e connessione ai servizi).
Per semplificare alcune implementazioni dei clienti, esiste un modo alternativo di l'emissione di questo comando Play (che deve essere implementato anche dall'app radio): emettendo
playFromMediaId
con il rootId del nodo principale (utilizzato come mediaId). Mentre nodo root non deve essere riproducibile, il suo rootId è una stringa arbitraria che può essere utilizzato come mediaId. Tuttavia, i clienti non sono obbligatori per comprendere questa sfumatura.Selettore di programmi
Sebbene
mediaId
sia sufficiente per selezionare un canale daMediaBrowserService
, viene associato a una sessione e non è coerente tra i fornitori. In alcuni casi, il client potrebbe aver bisogno di un puntatore assoluto (ad esempio, frequenza assoluta) per mantenerlo tra le sessioni e i dispositivi.Nell'era delle trasmissioni radio digitali, una frequenza nuda non è sufficiente per sintonizzarsi su una stazione specifica. Pertanto, usa
ProgramSelector
per ottimizzare a un canale analogico o digitale.ProgramSelector
è costituito da due parti:- Identificatore principale. Un identificatore univoco e stabile per una determinata radio stazione che non cambia, ma potrebbe non essere sufficiente per sintonizzarsi su quella stazione. Ad esempio: Codice PI RDS, che può essere tradotto nel nominativo di chiamata negli Stati Uniti.
- Identificatori secondari. Identificatori aggiuntivi utili per l'ottimizzazione a quella stazione (ad esempio, la frequenza), includendo eventualmente identificatori di altre tecnologie radio. Ad esempio, una stazione DAB potrebbe avere una trasmissione analogica di riserva.
Per consentire a
ProgramSelector
di adattarsi aMediaBrowser
- o basata suMediaSession
, definisci uno schema URI per serializzarlo. Lo schema è definiti come segue:broadcastradio://program/<primary ID type>/<primary ID>? <secondary ID type>=<secondary ID>&<secondary ID type>=<secondary ID>
In questo esempio, la parte degli identificatori secondari (dopo il punto interrogativo (
?
)) è facoltativo e può essere rimosso per fornire un identificatore stabile da utilizzare comemediaId
. Ad esempio: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
La parte autorevole (conduttore anche noto come conduttore) di
program
offre spazio per un'estensione di schema in futuro. Le stringhe del tipo di identificatore sono specificate con come nomi nella definizione dell'HAL 2.x diIdentifierType
e il valore è un numero decimale o esadecimale (con prefisso0x
).Tutti gli identificatori specifici del fornitore sono rappresentati dal simbolo
VENDOR_
. Ad esempio,VENDOR_0
perVENDOR_START
eVENDOR_1
perVENDOR_START
più 1. Questi URI sono specifici l'hardware della radio su cui sono stati generati e non può essere trasferito da un dispositivo all'altro realizzati da OEM diversi.Questi URI devono essere assegnati a ciascun MediaItem nell'elenco dei pulsanti di opzione di primo livello cartelle. Inoltre, MediaSession deve supportare sia
playFromMediaId
eplayFromUri
. Tuttavia, l'URI è destinato principalmente ai segnali radio l'estrazione di metadati (come la frequenza FM) e l'archiviazione permanente. Non esiste garantire che l'URI sia disponibile per tutti gli elementi multimediali (ad esempio, quando l'URI tipo di ID non ancora supportato dal framework). D'altra parte, l'ID multimediale funziona sempre. Non è consigliabile che i client utilizzino l'URI per selezionare elementi dal sessione MediaBrowser corrente. Usa inveceplayFromMediaId
. Detto questo, non è facoltativo per l'app di gestione e gli URI mancanti sono riservati per casi giustificati.Il design iniziale utilizzava singoli due punti al posto della sequenza
://
dopo la parte dello schema. Tuttavia, il primo non è supportatoandroid.net.Uri
per riferimenti URI gerarchici assoluti.Altri tipi di origini
Altre sorgenti audio possono essere gestite in modo simile. Ad esempio, input ausiliario e il lettore CD audio.
Una singola app può gestire più tipi di origini. In questi casi, ti consigliamo di creare un servizio MediaBrowserService separato per ogni tipo di fonte. Anche in una configurazione con più sorgenti pubblicate/MediaBrowserServices, è vivamente consigliato di includere una singola MediaSession in un dell'app.
CD audio
Simile a un CD audio in quanto l'app che gestisce tali dischi esporre MediaBrowser con una singola voce sfogliabile (o più, se il sistema ha cambia CD), che a sua volta conteneva tutte le tracce di un dato CD. Se il sistema non conosce le tracce di ogni CD (ad esempio, quando tutti i dischi sono inserite in una cartuccia contemporaneamente e non le leggono tutte), quindi Il valore MediaItem per l'intero disco sarà solo
PLAYABLE
, nonBROWSABLE
piùPLAYABLE
. Se non ci sono dischi in una uno specifico spazio, l'elemento non sarà néPLAYABLE
néBROWSABLE
(ma ogni area deve essere sempre presente nell'albero).Queste voci verranno contrassegnate in modo simile a quello delle cartelle radio. are; potrebbero contenere altri campi aggiuntivi definiti nell'API MediaDescription:
EXTRA_CD_TRACK
: per ogniMediaItem
su CD audio, Numero di traccia in base uno.EXTRA_CD_DISK
: numero del disco in base a 1.
Per il sistema abilitato per CD-Text e i dischi compatibili, il MediaItem di primo livello e assegnare un titolo al disco. Allo stesso modo, i MediaItem per le tracce avrebbero titolo della traccia.
Ingresso ausiliario
L'app che fornisce l'input ausiliario espone una struttura MediaBrowser con una singola voce (o più, quando sono presenti più porte) che rappresenta la porta AUX in. La rispettiva MediaSession prende i suoi mediaId e passa a quell'origine dopo aver ricevuto la richiesta
playFromMediaId
.Ogni voce AUX MediaItem avrà un campo aggiuntivo
EXTRA_AUX_PORT_NAME
impostato sul nome non localizzato della porta senza il terminale "AUX" a frase. Ad esempio, "AUX 1" sarebbe impostato su "1", "AUX" anteriore" su "in primo piano" e "AUX" in una stringa vuota. Nelle lingue diverse dall'inglese, il nome rimane nella stessa stringa in inglese. Improbabile per quanto riguardaEXTRA_BCRADIO_BAND_NAME_EN
, i valori sono definiti dall'OEM e non vincolati a un elenco predefinito.Se l'hardware può rilevare dispositivi collegati alla porta AUX, l'hardware dovrebbe MediaItem come
PLAYABLE
, solo se l'ingresso è connesso. L'hardware deve comunque essere enumerato (ma nonPLAYABLE
) se non era collegato nulla una porta. Se l'hardware non dispone di tali funzionalità, MediaItem deve essere sempre impostato suPLAYABLE
.Campi aggiuntivi
Definisci i seguenti campi:
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"
Il cliente deve esaminare i MediaItem di primo livello per verificare la presenza di elementi con
EXTRA_CD_DISK
oEXTRA_AUX_PORT_NAME
campo aggiuntivo per iniziare.Esempi dettagliati
I seguenti esempi illustrano la struttura ad albero di MediaBrowser per i tipi di origine che sono di questo design.
Trasmissione radio MediaBrowserService (handle
ACTION_PLAY_BROADCASTRADIO
):- Stazioni (consultabili)
EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_PROGRAMS
- URI BBC One (riproducibile):
broadcastradio://program/RDS_PI/1234?AMFM_FREQUENCY=90500
- URI ABC 88.1 (riproducibile):
broadcastradio://program/RDS_PI/5678?AMFM_FREQUENCY=88100
- URI ABC 88.1 HD1 (riproducibile):
broadcastradio://program/HD_STATION_ID_EXT/158241DEADBEEF?AMFM_FREQUENCY=88100&RDS_PI=5678
- URI ABC 88.1 HD2 (riproducibile):
broadcastradio://program/HD_STATION_ID_EXT/158242DEADBEFE
- 90,5 FM (riproducibili) - FM senza RDSURI:
broadcastradio://program/AMFM_FREQUENCY/90500
- URI 620 AM (riproducibile):
broadcastradio://program/AMFM_FREQUENCY/620
- URI BBC One (riproducibile):
broadcastradio://program/DAB_SID_EXT/1E24102?RDS_PI=1234
- URI BBC One (riproducibile):
- Preferiti (consultabili, riproducibili)
EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_FAVORITES
- URI BBC One (riproducibile):
broadcastradio://program/RDS_PI/1234?AMFM_FREQUENCY=101300
- URI BBC Two (non riproducibile):
broadcastradio://program/RDS_PI/1300?AMFM_FREQUENCY=102100
- URI BBC One (riproducibile):
- AM (visualizzabile, riproducibile):
EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_BANDEXTRA_BCRADIO_BAND_NAME_EN="AM"
- URI 530 AM (riproducibile):
broadcastradio://program/AMFM_FREQUENCY/530
- URI 540 AM (riproducibile):
broadcastradio://program/AMFM_FREQUENCY/540
- URI 550 AM (riproducibile):
broadcastradio://program/AMFM_FREQUENCY/550
- URI 530 AM (riproducibile):
- FM (sfogliabile, riproducibile):
EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_BANDEXTRA_BCRADIO_BAND_NAME_EN="FM"
- 87,7 FM (riproducibile) URI:
broadcastradio://program/AMFM_FREQUENCY/87700
- 87,9 FM (riproducibile) URI:
broadcastradio://program/AMFM_FREQUENCY/87900
- 88.1 FM (riproducibile) URI:
broadcastradio://program/AMFM_FREQUENCY/88100
- 87,7 FM (riproducibile) URI:
- DAB (riproducibile):
EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_BANDEXTRA_BCRADIO_BAND_NAME_EN="DAB"
CD audio MediaBrowserService (gestisce
ACTION_PLAY_AUDIOCD
):- Disco 1 (riproducibile)
EXTRA_CD_DISK=1
- Disco 2 (utilizzabile, riproducibile)
EXTRA_CD_DISK=2
- Traccia 1 (riproducibile)
EXTRA_CD_TRACK=1
- Traccia 2 (riproducibile)
EXTRA_CD_TRACK=2
- Traccia 1 (riproducibile)
- Il mio CD musicale (consultabile, riproducibile)
EXTRA_CD_DISK=3
- Tutto da solo (riproducibile)
EXTRA_CD_TRACK=1
- Reise, Reise (riproducibile)
EXTRA_CD_TRACK=2
- Tutto da solo (riproducibile)
- Spazio vuoto 4 (non riproducibile)
EXTRA_CD_DISK=4
AUX MediaBrowserService (gestisce
ACTION_PLAY_AUX
):- Anteriore AUX (riproducibile)
EXTRA_AUX_PORT_NAME="front"
- AUX posteriore (riproducibile)
EXTRA_AUX_PORT_NAME="rear"