La implementación del control de radio se basa en MediaSession
y
MediaBrowse
, que permiten que las apps multimedia y del asistente de voz hagan lo siguiente:
controlar la radio. Para obtener más información, consulta
Cómo compilar apps multimedia para vehículos en developer.android.com.
En el campo car-broadcastradio-support se proporciona una implementación del árbol de navegación multimedia
biblioteca en packages/apps/Car/libs
. Esta biblioteca también contiene extensiones de
ProgramSelector para realizar la conversión desde y hacia el URI. Se recomienda que las implementaciones de radio
usar esta biblioteca para compilar el árbol de navegación asociado.
Selector de fuente multimedia
Para proporcionar una transición fluida entre la radio y otras apps que se muestran en el contenido multimedia,
La biblioteca auto-media-common contiene clases que se deben integrar en la radio
. MediaAppSelectorWidget
se puede incluir en el XML de la app de radio.
(el ícono y el menú desplegable que se usan en las aplicaciones de radio y contenido multimedia de referencia):
<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" />
Este widget inicia el AppSelectionFragment
, que muestra un
una lista de fuentes multimedia a las que puedes cambiar. Si se desea una IU distinta de la proporcionada,
puedes crear un widget personalizado para iniciar el AppSelectionFragment
cuando el elemento
se debe mostrar el selector.
AppSelectionFragment newFragment = AppSelectionFragment.create(widget, packageName, fullScreen); newFragment.show(mActivity.getSupportFragmentManager(), null);
Se proporciona un ejemplo de implementación en la implementación de la app de radio de referencia.
ubicado en packages/apps/Car/Radio
.
Especificaciones detalladas de los controles
El MediaSession
(a través de MediaSession.Callback
)
proporciona mecanismos de control para el programa de radio que se está reproduciendo en ese momento:
onPlay
,onStop
. (Activa) el sonido de la reproducción de la radio.onPause
Pausa por pausa en directo (si es compatible).onPlayFromMediaId
Reproducir cualquier contenido de una carpeta de nivel superior Por ejemplo, "Reproduce FM" o "Reproducir la radio".onPlayFromUri
Reproducir una frecuencia específica Por ejemplo, "Reproduce 88.5 FM".onSkipToNext
,onSkipToPrevious
. Sintonizar para anterior o siguiente estación.onSetRating
Agrega contenido a Favoritos o quítalo de ellos.
El MediaBrowser expone una configuración MediaItem en tres tipos de directorios de nivel superior:
- (Opcional) Programas (estaciones). Por lo general, los usuarios de este modo radios de dos sintonizadores para indicar todas las estaciones de radio sintonizables disponibles en la ubicación del usuario.
- Favoritos. Se agregaron programas de radio a la lista de Favoritos; es posible que algunos no disponible (fuera del rango de recepción).
- Canales de bandas. Todos los canales posibles físicamente en la región actual (87.9, 88.1, 88.3, 88.5, 88.7, 88.9, 89.1, etc.). Cada banda tiene un directorio independiente de nivel superior.
Cada elemento en cada una de estas carpetas (AM/FM/Programs) es un MediaItem con un URI que puede utilizarse. con MediaSession para ajustarlos. Cada carpeta de nivel superior (AM/FM/Programs) es un MediaItem con un mediaId que se puede usar con MediaSession para activar la reproducción, lo cual queda a discreción del OEM. Para por ejemplo, "Reproducir FM", "Reproducir a.m." y "Reproduce la radio" son todas consultas de radio no específicas que usan un mediaId para enviar a la app de radio del OEM. Depende de la app de radio determinar qué reproducir de la genérica y el mediaId.
MediaSession
Dado que no existe el concepto de pausar una transmisión continua, las acciones Reproducir, Pausar y Detener no siempre se aplican a la radio. Con la radio, la acción Detener se asocia con silenciar la transmisión. mientras que Play está asociado con quitar el sonido.
Algunos sintonizadores de radio (o apps) permiten simular la pausa de una transmisión continua.
almacenar en caché el contenido y reproducirlo más tarde. En esos casos, usa onPause
.
La reproducción desde acciones mediaId y URI está diseñada para sintonizar una estación. recuperado de la interfaz MediaBrowser. El mediaId es una string arbitraria. proporcionadas por la app de radio para imponer un valor único (de manera que un ID determinado solo apunte a un elemento). y estable (por lo que un determinado elemento tiene el mismo ID en toda la sesión) con el que para identificar una estación determinada. El URI tendrá un esquema bien definido. En resumen, una dirección de correo electrónico de ProgramSelector. Si bien esto conserva el atributo de unicidad, no es necesario ser estable, aunque puede cambiar cuando la estación se mueve a una frecuencia diferente.
Por diseño, no se usa onPlayFromSearch
. Es responsabilidad del cliente
(app complementaria) para seleccionar un resultado de la búsqueda del árbol de MediaBrowser. Para mudanza
que la responsabilidad hacia la aplicación de radio aumentaría la complejidad, requeriría contratos formales sobre
Deberían aparecer las consultas de cadenas y generar una experiencia del usuario desigual en diferentes hardware.
y plataformas de Google Cloud.
Nota: La app de radio no contiene datos información útil para buscar el nombre de una estación que no esté expuesto al cliente a través de la interfaz MediaBrowser.
Saltar a la estación siguiente o a la anterior depende del contexto actual:
- Cuando una app se sintoniza a una estación de la lista Favoritos, la app puede pasar a la siguiente estación de la lista de Favoritos.
- Si escuchas una estación de la lista Program, es posible que se sintonice la siguiente. estación disponible, ordenada según el número de canal.
- Escuchar un canal arbitrario puede provocar la sintonización del siguiente canal físico. incluso cuando no hay señal de emisión.
La app de radio controla estas acciones.
Manejo de errores
TransportControls
acciones (Reproducir, Detener y Siguiente) no proporciona comentarios sobre si la acción
tenga éxito o no. La única forma de indicar un error es establecer la MediaSession
estado a
STATE_ERROR
con un mensaje de error.
La app de radio debe controlar esas acciones y ejecutarlas o establecer un estado de error.
Si la ejecución del comando de reproducción no es inmediata, el estado de reproducción se debe cambiar a
STATE_CONNECTING
(en caso de sintonía directa) o
STATE_SKIPPING_TO_PREVIOUS
o
NEXT
mientras se ejecuta el comando.
El cliente debe mirar
PlaybackState
.
y verificar que la sesión haya cambiado el programa actual por lo que se solicitó o ingresó al
estado de error. STATE_CONNECTING
no debe superar los 30 segundos. Sin embargo, una melodía directa con un
La frecuencia AM/FM debería funcionar mucho más rápido.
Agregar y quitar favoritos
MediaSession es compatible con las clasificaciones, que se pueden usar para controlar los Favoritos. onSetRating
llamado con una calificación de tipo
RATING_HEART
agrega o elimina la estación sintonizada actualmente en o desde la lista de Favoritos.
Al contrario de los ajustes predeterminados heredados, este modelo supone un Favoritos desordenado y no delimitado
, cuando cada favorito guardado se asignó a un espacio numérico (por lo general, de 1 a 6).
Por lo tanto, los sistemas basados en ajustes predeterminados no serían compatibles con onSetRating
.
una sola operación.
La limitación de la API de MediaSession es que solo la estación está sintonizada actualmente que se pueden agregar o quitar. Por ejemplo, los elementos se deben seleccionar primero antes de se puede quitar. Esta es solo una limitación del cliente MediaBrowser, como un aplicación complementaria. La app de radio no tiene restricciones similares. Esta parte es opcional. cuando una app no admite Favoritos.
MediaBrowser
Para expresar qué frecuencias o nombres de canales físicos (al sintonizar a un canal arbitrario es adecuada para una determinada tecnología de radio) son válidas para en una región determinada, se enumeran todos los canales válidos (frecuencias) para cada banda. En la región de EE.UU., esto equivale a 101 canales FM, del rango de 87.8 a Rango de 108.0 MHz (con espaciado de 0.2 MHz) y 117 canales de AM en el rango de 530 hasta 1,700 kHz (con espaciado de 10 kHz). Debido a que la radio HD usa el mismo espacio de canales, no se presenta por separado.
La lista de programas de radio disponibles actualmente es plana, ya que no permite esquemas de visualización, como la agrupación por transmisión de audio directo (DAB).
Es posible que no se puedan ajustar las entradas de la lista de Favoritos. Por ejemplo, si un determinado el programa está fuera del rango. La app de radio podría o no detectar si la entrada que se puede ajustar de antemano. Si es así, es posible que no se marque la entrada como reproducible.
Para identificar las carpetas de nivel superior, se aplica el mismo mecanismo que usa Bluetooth.
Es decir, un paquete de Extras del
MediaDescription
contiene un campo específico del sintonizador, al igual que Bluetooth con
EXTRA_BT_FOLDER_TYPE
.
En el caso de la radiofrecuencia, esto conduce a la definición de los siguientes campos nuevos en el
API pública:
EXTRA_BCRADIO_FOLDER_TYPE = "android.media.extra.EXTRA_BCRADIO_FOLDER_TYPE"
Uno de los siguientes valores:BCRADIO_FOLDER_TYPE_PROGRAMS = 1
Programas disponibles actualmente.BCRADIO_FOLDER_TYPE_FAVORITES = 2
Favoritos.BCRADIO_FOLDER_TYPE_BAND = 3
Todos los canales físicos de una banda determinada.
No es necesario definir ningún campo de metadatos personalizados específicos para radios, ya que los datos relevantes se ajustan al esquema
MediaBrowser.MediaItem
existente:- Nombre del programa (RDS PS, nombre del servicio DAB).
MediaDescription.getTitle
. - Frecuencia FM URI (consulta
ProgramSelector) o
MediaDescription.getTitle
(si una entrada está en la carpetaBROADCASTRADIO_FOLDER_TYPE_BAND
). - Identificadores específicos de radio (RDS PI, DAB SId).
Se analizó
MediaDescription.getMediaUri
en ProgramSelector.
Por lo general, no es necesario recuperar la frecuencia FM para una entrada en el el programa actual o la lista de Favoritos (ya que el cliente debe operar en los medios de comunicación IDs). Sin embargo, si esa necesidad surgiera (por ejemplo, para fines de visualización), sería presente en el URI y se puede analizar como
ProgramSelector
. Dicho esto, no se recomienda usar el URI para seleccionar elementos dentro del sesión. Para obtener más información, consultaProgramSelector
Para evitar problemas de rendimiento o relacionados con Binder, el servicio MediaBrowser debe admitir la paginación:
EXTRA_PAGE
EXTRA_PAGE_SIZE
- Parámetros adicionales para
subscribe()
Nota: De forma predeterminada, la paginación se implementa de forma predeterminada en el
onLoadChildren()
sin control de opciones.Entradas relacionadas de todos los tipos de listas (canales sin procesar, programas encontrados y favoritos) pueden tener diferentes mediaIds (depende de la app de radio; la asistencia la biblioteca los tendrán diferentes). Los URI (en formato ProgramSelector) difieren entre los canales sin procesar y los programas que se encuentran en la mayoría de los casos (excepto para FM) sin RDS), pero en su mayoría son iguales entre los programas encontrados y los favoritos (excepto, por ejemplo, cuando se actualizó AF).
Tener diferentes mediaIds para las entradas de distintos tipos de listas realizar diferentes acciones sobre ellos. Puede recorrer la lista de Favoritos o la lista Todos los programas en
onSkipToNext
, según la carpeta donde se encuentrenMediaItem
seleccionadas (consulta MediaSession).Acciones de ajuste especiales
La lista de programas permite a los usuarios sintonizar una estación específica, pero no les permite hacer solicitudes generales, como "Tune to FM", lo que podría provocar un sintonizador escuchó una estación en la banda FM.
Para permitir estas acciones, algunos directorios de nivel superior tienen la etiqueta
FLAG_PLAYABLE
marca establecida (junto conFLAG_BROWSABLE
para las carpetas).Acción Sintonía para Cómo emitirlo Reproducir la radio Cualquier canal de radio startService(ACTION_PLAY_BROADCASTRADIO)
O
playFromMediaId(MediaBrowser.getRoot())
Reproducir FM Cualquier canal FM Reproducir desde el mediaId
de la banda FM.La determinación de qué programa sintonizar depende de la app. Este es por lo general, el canal de la lista que se muestra más recientemente. Para obtener detalles
ACTION_PLAY_BROADCASTRADIO
, consulta Intents de reproducción generales.Detección y conexión del servicio
PackageManager
puede encontrar directamente el MediaBrowserService que entrega la radio de transmisión. de imágenes. Para ello, llama aresolveService
. con el intentACTION_PLAY_BROADCASTRADIO
(consulta Intents de juego generales) yMATCH_SYSTEM_ONLY
. Para encontrar todos los servicios de radio (hay puede ser más de uno; por ejemplo, AM/FM y satélite independientes), utilizaqueryIntentServices
El servicio resuelto controla la vinculación
android.media.browse.MediaBrowserService
también tiene un alto nivel de intención. Esto se verifica con GTS.Para conectarte al MediaBrowserService seleccionado, crear Instancia
MediaBrowser
para un componente de servicio determinado yconnect
. Después de establecer la conexión, se puede obtener un handle para MediaSession a través degetSessionToken
La app Radio puede restringir los paquetes cliente que pueden conectarse en un
onGetRoot
implementación de su servicio. La app debería permitir que las apps del sistema se conecten sin incluirla en la lista blanca. Para obtener más información sobre las listas blancas, consulta Acepta el paquete y la firma de la app de Asistente.Si la app específica de la fuente (por ejemplo, una app de radio) está instalada en un dispositivo sin dicha compatibilidad con la fuente, se anunciaría de todas formas que maneja el
ACTION_PLAY_BROADCASTRADIO
, pero su árbol MediaBrowser no No deben contener etiquetas específicas para cada radio. Por lo tanto, un cliente que está dispuesto a comprobar si un determinado fuente está disponible en un dispositivo, debe:- Descubre el servicio de radio (llama al
resolveService
paraACTION_PLAY_BROADCASTRADIO
). - Crea
MediaBrowser
y, luego, conéctate a ella. - Determina la presencia de
MediaItem
conEXTRA_BCRADIO_FOLDER_TYPE
adicionales.
Nota: En la mayoría de los casos, el cliente debe analizar todos Árboles de MediaBrowser disponibles para detectar todas las fuentes disponibles para un dispositivo determinado.
Nombres de correas
La lista de bandas se representa mediante un conjunto de directorios de nivel superior con un tipo de carpeta se configuró la etiqueta en
BCRADIO_FOLDER_TYPE_BAND
. SusMediaItem
son cadenas localizadas que representan los nombres de las bandas. En la mayoría de los casos, será lo mismo que la traducción al inglés, pero el cliente no puede depender de esa suposición.Para proporcionar un mecanismo estable para buscar ciertas bandas, Se agregó una etiqueta adicional para las carpetas de la banda,
EXTRA_BCRADIO_BAND_NAME_EN
. Este es un nombre no localizado de la banda y solo puede tener uno de estos valores predefinidos:AM
FM
DAB
Si la banda no está en esta lista, no se debe establecer la etiqueta con el nombre de la banda. Sin embargo, si la banda está en la lista, debe tener una etiqueta establecida. La radio HD no funciona enumera las bandas separadas, ya que usan el mismo medio subyacente que AM/FM.
Intents de juego generales
Cada aplicación dedicada a la reproducción de una fuente determinada (como radio o CD) debe procesar un intent general play para comenzar a reproducir contenido que posiblemente sea de inactivo (por ejemplo, después del inicio). Depende de la app cómo seleccionar el contenido para pero suele ser el programa de radio o la pista de CD que se reprodujo recientemente. intent definido para cada fuente de audio:
android.car.intent.action.PLAY_BROADCASTRADIO
android.car.intent.action.PLAY_AUDIOCD
: CD-DA o CD-Textandroid.car.intent.action.PLAY_DATADISC
: como disco de datos óptico CD/DVD, pero no CD-DA (puede ser CD en modo mixto).android.car.intent.action.PLAY_AUX
: Sin especificar cuál Puerto AUXandroid.car.intent.action.PLAY_BLUETOOTH
android.car.intent.action.PLAY_USB
: Sin especificar cuál Dispositivo USBandroid.car.intent.action.PLAY_LOCAL
: Almacenamiento de contenido multimedia local (Flash integrado)
Se eligieron los intents para el comando de reproducción general, ya que resuelven dos problemas a la vez: el comando general "play" y la detección de servicios. Un beneficio adicional de tener dicha intención sería la posibilidad de ejecutar tales acción simple sin abrir la sesión de MediaBrowser.
El descubrimiento de servicios es, de hecho, el problema más importante que se resuelve . El procedimiento para el descubrimiento de servicios es fácil y inequívoco de esta manera (consulta Descubrimiento y conexión del servicio).
Para facilitar algunas implementaciones de clientes, hay una forma alternativa de emitir dicho comando de Play (que también debe implementar la app de radio): emites
playFromMediaId
con el rootId del nodo raíz (se usa como mediaId). Si bien el nodo raíz no debe reproducirse, su rootId es una string arbitraria que se puede hacer para que sea consumible como mediaId. Sin embargo, los clientes no son necesarios para entender este matiz.Selector de programa
Si bien
mediaId
es suficiente para seleccionar un canal delMediaBrowserService
, se vincula a una sesión y no es coherente. entre los proveedores. En algunos casos, es posible que el cliente necesite un puntero absoluto (como un absoluta) para mantenerlo entre sesiones y dispositivos.En la era de las transmisiones de radio digitales, una frecuencia desnuda no es suficiente para sintonizar una estación específica. Por lo tanto, usa
ProgramSelector
para ajustar a un canal analógico o digital.ProgramSelector
consta de dos partes:- Identificador principal. Un identificador único y estable para una radio determinada que no cambia, pero que puede no ser suficiente para sintonizarla. Por ejemplo: Código PI de RDS, que se puede traducir al indicativo de estación de EE.UU.
- Identificadores secundarios. Identificadores adicionales útiles para el ajuste a esa estación (por ejemplo, frecuencia), posiblemente con identificadores de otros tecnologías de radio. Por ejemplo, una estación de DAB puede tener una reserva de transmisión analógica.
Para permitir que
ProgramSelector
se ajuste aMediaBrowser
, o Solución basada enMediaSession
, define un esquema de URI para serializar. El esquema es se define de la siguiente manera:broadcastradio://program/<primary ID type>/<primary ID>? <secondary ID type>=<secondary ID>&<secondary ID type>=<secondary ID>
En este ejemplo, la parte de identificadores secundarios (después del signo de interrogación (
?
)) se y se puede quitar para proporcionar un identificador estable que se pueda usar comomediaId
. Por ejemplo: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 de autoridad (también conocida como host) de
program
proporciona un espacio para extensión del esquema en el futuro. Las cadenas de tipo de identificador se especifican con precisión como sus nombres en la definición deIdentifierType
de HAL 2.x y el valor es un número decimal o hexadecimal (con prefijo0x
).Todos los identificadores específicos de proveedores están representados por el
VENDOR_
. . Por ejemplo,VENDOR_0
paraVENDOR_START
yVENDOR_1
paraVENDOR_START
más 1. Esos URIs son específicos de el hardware de radio en el que se generaron y que no se pueden transferir entre dispositivos de diferentes OEMs.Estos URI deben asignarse a cada elemento MediaItem en el radio de nivel superior. individuales. Además, MediaSession debe admitir
playFromMediaId
yplayFromUri
. Sin embargo, el URI está destinado principalmente a la radio. la extracción de metadatos (como la frecuencia FM) y el almacenamiento persistente. No hay garantizar que el URI esté disponible para todos los elementos multimedia (por ejemplo, cuando el evento El framework aún no admite ese tipo de ID). Por otro lado, Media ID siempre funciona. No se recomienda que los clientes usen el URI para seleccionar elementos del sesión actual de MediaBrowser. En su lugar, usaplayFromMediaId
. Dicho esto, es no es opcional para la app entregada, y los URI faltantes se reservan para casos bien justificados.En el diseño inicial, se usaron solo dos puntos en lugar de la secuencia
://
. después de la parte del esquema. Sin embargo, la primera no es respaldada porandroid.net.Uri
para referencias de URI jerárquicas absolutas.Otros tipos de fuentes
Se pueden controlar otras fuentes de audio de manera similar. Por ejemplo, las entradas auxiliares el reproductor de CD de audio.
Una sola app puede entregar varios tipos de fuentes. En esos casos, se recomienda crear un MediaBrowserService separado cada tipo de fuente. Incluso en una configuración con varias fuentes entregadas/MediaBrowserServices, Se recomienda especialmente tener una sola MediaSession dentro de una sola .
CD de audio
Al igual que con el CD de audio, la app que funciona con esos discos mostrar MediaBrowser con una sola entrada explorable (o más, si el sistema tiene un de un CD), que a su vez contendría todas las pistas de un CD determinado. Si el sistema no conoce las pistas de cada CD (por ejemplo, cuando se se insertan en un cartucho a la vez y no los lee todos) MediaItem para todo el disco sería solo
PLAYABLE
, noBROWSABLE
másPLAYABLE
. Si no hay un disco en una espacio determinado, el elemento no seráPLAYABLE
niBROWSABLE
(pero cada ranura debe estar siempre presente en el árbol).Estas entradas se marcarán de manera similar a las carpetas de transmisiones de radio are; contendrán campos adicionales adicionales definidos en la API de MediaDescription:
EXTRA_CD_TRACK
: Por cadaMediaItem
en CD de audio, Número de pista basado en 1.EXTRA_CD_DISK
: Es el número de disco basado en 1.
En el caso del sistema habilitado para CD-Text y el disco compatible, el MediaItem de nivel superior se tener un título del disco. Del mismo modo, los MediaItems de las pistas tendrían una título de la pista.
Entrada auxiliar
La app que entrega entradas auxiliares expone un árbol de MediaBrowser con una sola entrada (o más, cuando existen varios puertos) que representan el modo AUX en el puerto. La MediaSession respectiva toma su mediaId y cambia a esa fuente después de recibir la solicitud
playFromMediaId
.Cada entrada de MediaItem AUX tendría un campo adicional
EXTRA_AUX_PORT_NAME
configurado en el nombre no localizado del puerto sin "AUX" frase. Por ejemplo, "AUX 1" se habría establecido en "1", "AUX" frente" a "frontal" y "AUX" en una cadena vacía. En las configuraciones regionales que no están en inglés, el nombre etiqueta se mantendrá en la misma cadena en inglés. Improbable en cuanto aEXTRA_BCRADIO_BAND_NAME_EN
, los valores están definidos por el OEM y no está restringida a una lista predefinida.Si el hardware puede detectar dispositivos conectados al puerto AUX, el hardware debe marcar MediaItem como
PLAYABLE
, solo si la entrada está conectada. El hardware debe aún se enumera (pero noPLAYABLE
) si no hay nada relacionado con esto. puerto de red. Si el hardware no posee dicha capacidad, el objeto MediaItem siempre debe configurarse enPLAYABLE
Campos adicionales
Define los siguientes campos:
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"
El cliente necesita revisar los MediaItems de nivel superior para los elementos que tienen el
EXTRA_CD_DISK
oEXTRA_AUX_PORT_NAME
campo adicional automático.Ejemplos detallados
Los siguientes ejemplos abordan la estructura de árbol de MediaBrowser para los tipos de origen que se parte de este diseño.
Transmisión de radio MediaBrowserService (controla
ACTION_PLAY_BROADCASTRADIO
):- Estaciones (explorables)
EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_PROGRAMS
- URI de BBC One (jugable):
broadcastradio://program/RDS_PI/1234?AMFM_FREQUENCY=90500
- URI de ABC 88.1 (reproducible):
broadcastradio://program/RDS_PI/5678?AMFM_FREQUENCY=88100
- URI de ABC 88.1 HD1 (reproducible):
broadcastradio://program/HD_STATION_ID_EXT/158241DEADBEEF?AMFM_FREQUENCY=88100&RDS_PI=5678
- URI de ABC 88.1 HD2 (reproducible):
broadcastradio://program/HD_STATION_ID_EXT/158242DEADBEFE
- 90.5 FM (reproducible), FM sin RDSURI:
broadcastradio://program/AMFM_FREQUENCY/90500
- URI de 620 a.m. (reproducible):
broadcastradio://program/AMFM_FREQUENCY/620
- URI de BBC One (jugable):
broadcastradio://program/DAB_SID_EXT/1E24102?RDS_PI=1234
- URI de BBC One (jugable):
- Favoritos (se puede explorar y jugar)
EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_FAVORITES
- URI de BBC One (jugable):
broadcastradio://program/RDS_PI/1234?AMFM_FREQUENCY=101300
- URI de BBC Two (no reproducible):
broadcastradio://program/RDS_PI/1300?AMFM_FREQUENCY=102100
- URI de BBC One (jugable):
- AM (explorable, reproducible):
EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_BANDEXTRA_BCRADIO_BAND_NAME_EN="AM"
- URI (jugable) de las 530 a.m.:
broadcastradio://program/AMFM_FREQUENCY/530
- URI (reproducible) de 540 a.m.:
broadcastradio://program/AMFM_FREQUENCY/540
- URI de 550 a.m. (reproducible):
broadcastradio://program/AMFM_FREQUENCY/550
- URI (jugable) de las 530 a.m.:
- FM (explorable, reproducible):
EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_BANDEXTRA_BCRADIO_BAND_NAME_EN="FM"
- 87.7 URI de FM (reproducible):
broadcastradio://program/AMFM_FREQUENCY/87700
- 87.9 URI de FM (reproducible):
broadcastradio://program/AMFM_FREQUENCY/87900
- 88.1 URI de FM (reproducible):
broadcastradio://program/AMFM_FREQUENCY/88100
- 87.7 URI de FM (reproducible):
- DAB (se puede reproducir):
EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_BANDEXTRA_BCRADIO_BAND_NAME_EN="DAB"
CD de audio MediaBrowserService (controla
ACTION_PLAY_AUDIOCD
):- Disco 1 (reproducible)
EXTRA_CD_DISK=1
- Disco 2 (explorable y reproducible)
EXTRA_CD_DISK=2
- Pista 1 (se puede reproducir)
EXTRA_CD_TRACK=1
- Pista 2 (se puede reproducir)
EXTRA_CD_TRACK=2
- Pista 1 (se puede reproducir)
- Mi CD de música (que se puede explorar y reproducir)
EXTRA_CD_DISK=3
- Solo para mí (jugable)
EXTRA_CD_TRACK=1
- Reise, Reise (jugable)
EXTRA_CD_TRACK=2
- Solo para mí (jugable)
- Espacio vacío 4 (no se puede reproducir)
EXTRA_CD_DISK=4
AUX MediaBrowserService (controla
ACTION_PLAY_AUX
):- AUX delantera (reproducible)
EXTRA_AUX_PORT_NAME="front"
- AUX trasera (se puede reproducir)
EXTRA_AUX_PORT_NAME="rear"