L'implémentation du contrôle de la radio est basée sur MediaSession
et MediaBrowse
, qui permettent aux applications multimédias et d'assistant vocal de contrôler la radio. Pour en savoir plus, consultez Créer des applications multimédias pour voitures sur developer.android.com.
Une implémentation d'arborescence de navigation multimédia est fournie dans la bibliothèque car-broadcastradio-support dans packages/apps/Car/libs
. Cette bibliothèque contient également des extensions de ProgramSelector pour convertir des URI et en convertir. Nous vous recommandons d'utiliser cette bibliothèque pour créer l'arborescence de navigation associée.
Sélecteur de source multimédia
Pour assurer une transition fluide entre la radio et les autres applications affichées dans les contenus multimédias, la bibliothèque car-media-common contient des classes qui doivent être intégrées à l'application de radio. MediaAppSelectorWidget
peut être inclus dans le fichier XML de l'application de radio (l'icône et le menu déroulant utilisés dans les applications multimédias et de radio de référence):
<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" />
Ce widget lance AppSelectionFragment
, qui affiche une liste des sources multimédias auxquelles vous pouvez passer. Si vous souhaitez utiliser une UI autre que celle fournie, vous pouvez créer un widget personnalisé pour lancer le AppSelectionFragment
lorsque le sélecteur doit s'afficher.
AppSelectionFragment newFragment = AppSelectionFragment.create(widget, packageName, fullScreen); newFragment.show(mActivity.getSupportFragmentManager(), null);
Un exemple d'implémentation est fourni dans l'implémentation de référence de l'application de radio, située dans packages/apps/Car/Radio
.
Spécifications détaillées des commandes
L'interface MediaSession
(via MediaSession.Callback
) fournit des mécanismes de contrôle pour le programme radio en cours de lecture:
onPlay
,onStop
. Activer/Désactiver le son de la radio.onPause
: mise en pause avec décalage temporel (si compatible).onPlayFromMediaId
: lire n'importe quel contenu à partir d'un dossier racine. Par exemple, "Écouter la radio FM" ou "Écouter la radio".onPlayFromUri
. Écoutez une fréquence spécifique. Par exemple, "Mets 88,5 FM".onSkipToNext
,onSkipToPrevious
. Passer à la station suivante ou précédente.onSetRating
: ajoutez ou supprimez des favoris.
MediaBrowser expose un MediaItem ajustable sur trois types de répertoires de premier niveau:
- (Facultatif) Programmes (chaînes). Ce mode est généralement utilisé par les radios à double tuner pour indiquer toutes les stations de radio disponibles à l'emplacement de l'utilisateur.
- Favoris Certains des programmes radio ajoutés à la liste "Favoris" peuvent être indisponibles (hors de portée de réception).
- Canaux de bande. Tous les canaux physiquement possibles dans la région actuelle (87,9, 88,1, 88,3, 88,5, 88,7, 88,9, 89,1, etc.). Chaque bande dispose d'un répertoire de premier niveau distinct.
Chaque élément de chacun de ces dossiers (AM/FM/Programmes) est un MediaItem avec un URI pouvant être utilisé avec MediaSession pour régler la fréquence. Chaque dossier racine (AM/FM/Programmes) est un MediaItem avec un mediaId qui peut être utilisé avec MediaSession pour déclencher la lecture. Il est à la discrétion de l'OEM. Par exemple, "Mets la radio FM", "Mets la radio AM" et "Mets la radio" sont toutes des requêtes radio non spécifiques qui utilisent un mediaId à envoyer à l'application radio OEM. C'est à l'application radio de déterminer ce qu'elle doit diffuser à partir de la requête générique et du mediaId.
MediaSession
Étant donné qu'il n'existe pas de concept de mise en pause d'un flux de diffusion, les actions de lecture, de mise en pause et d'arrêt ne s'appliquent pas toujours à la radio. Avec la radio, l'action "Arrêter" est associée à la désactivation du son du flux, tandis que l'action "Lire" est associée à la réactivation du son.
Certains tuners radio (ou applications) permettent de simuler une pause de flux de diffusion en mettant en cache le contenu, puis en le lisant plus tard. Dans ce cas, utilisez onPause
.
La lecture à partir des actions mediaId et URI vise à se connecter à une station extraite de l'interface MediaBrowser. Le mediaId est une chaîne arbitraire fournie par l'application de radio pour imposer une valeur unique (de sorte qu'un ID donné ne pointe que vers un seul élément) et stable (de sorte qu'un élément donné ait le même ID pendant toute la session) permettant d'identifier une station donnée. L'URI sera d'un schéma bien défini. En résumé, il s'agit d'une forme URI de ProgramSelector. Bien que cela préserve l'attribut d'unicité, il n'a pas besoin d'être stable, bien qu'il puisse changer lorsque la station passe à une autre fréquence.
Par conception, onPlayFromSearch
n'est pas utilisé. Il incombe au client (application associée) de sélectionner un résultat de recherche dans l'arborescence MediaBrowser. Transférer cette responsabilité à l'application de radio augmenterait la complexité, nécessiterait des contrats formels sur la façon dont les requêtes de chaîne doivent apparaître et entraînerait une expérience utilisateur inégale sur différentes plates-formes matérielles.
Remarque:L'application de radio ne contient pas d'informations supplémentaires qui seraient utiles pour rechercher un nom de station non exposé au client via l'interface MediaBrowser.
Le passage à la station suivante ou précédente dépend du contexte actuel:
- Lorsqu'une application est réglée sur une station de la liste des favoris, elle peut passer à la station suivante de la liste.
- Écouter une station de la liste des programmes peut entraîner la sélection de la station suivante disponible, triée par numéro de chaîne.
- L'écoute d'un canal arbitraire peut entraîner le réglage sur le canal physique suivant, même en l'absence de signal de diffusion.
L'application de radio gère ces actions.
Gestion des exceptions
Les actions TransportControls
(Lire, Arrêter et Suivant) n'indiquent pas si l'action aboutit ou non. Le seul moyen d'indiquer une erreur consiste à définir l'état de MediaSession sur STATE_ERROR
avec un message d'erreur.
L'application de radio doit gérer ces actions et les exécuter ou définir un état d'erreur.
Si l'exécution de la commande de lecture n'est pas immédiate, l'état de lecture doit être défini sur
STATE_CONNECTING
(en cas de réglage direct) ou
STATE_SKIPPING_TO_PREVIOUS
ou
NEXT
pendant l'exécution de la commande.
Le client doit surveiller
PlaybackState
et vérifier que la session a remplacé le programme actuel par ce qui a été demandé ou est entré dans l'état d'erreur. STATE_CONNECTING
ne doit pas dépasser 30 secondes. Toutefois, la mise au point directe sur une fréquence AM/FM donnée devrait être beaucoup plus rapide.
Ajouter et supprimer des favoris
MediaSession est compatible avec les classifications, ce qui permet de contrôler les favoris. onSetRating
appelé avec une note de type RATING_HEART
ajoute ou supprime la station actuellement sélectionnée dans la liste des favoris.
Contrairement aux anciens préréglages, ce modèle suppose une liste de favoris non ordonnée et illimitée, alors que chaque favori enregistré était attribué à un emplacement numérique (généralement de 1 à 6).
Par conséquent, les systèmes basés sur des préréglages seraient incompatibles avec l'opération onSetRating
.
La limite de l'API MediaSession est que seule la station actuellement sélectionnée peut être ajoutée ou supprimée. Par exemple, les éléments doivent d'abord être sélectionnés avant de pouvoir être supprimés. Il ne s'agit que d'une limitation du client MediaBrowser, comme une application associée. L'application de radio n'est pas soumise à la même restriction. Cette partie est facultative lorsqu'une application n'est pas compatible avec les favoris.
Navigateur multimédia
Pour indiquer quelles fréquences ou noms de canaux physiques (lorsque le réglage sur un canal arbitraire est adapté à une technologie radio donnée) sont valides pour une région donnée, tous les canaux (fréquences) valides sont listés pour chaque bande. Aux États-Unis, cela représente 101 canaux FM dans la plage de fréquences de 87,8 à 108 MHz (avec un espacement de 0,2 MHz) et 117 canaux AM dans la plage de fréquences de 530 à 1 700 kHz (avec un espacement de 10 kHz). Étant donné que la radio HD utilise le même espace de canaux, elle n'est pas présentée séparément.
La liste des programmes radio actuellement disponibles est plate, ce qui n'autorise pas les schémas d'affichage tels que le regroupement par ensemble de diffusion audio directe (DAB).
Il est possible que les entrées de la liste de favoris ne soient pas configurables. Par exemple, si un programme donné est hors plage. L'application de radio peut détecter ou non si la saisie peut être réglée à l'avance. Dans ce cas, il est possible qu'il ne marque pas l'entrée comme jouable.
Pour identifier les dossiers racines, le même mécanisme que celui utilisé par le Bluetooth est appliqué.
Autrement dit, un lot d'extras de l'objet
MediaDescription
contient un champ spécifique au tuner, comme le fait Bluetooth avec
EXTRA_BT_FOLDER_TYPE
.
Dans le cas de la radiodiffusion, cela conduit à définir les nouveaux champs suivants dans l'API publique:
EXTRA_BCRADIO_FOLDER_TYPE = "android.media.extra.EXTRA_BCRADIO_FOLDER_TYPE"
. L'une des valeurs suivantes :BCRADIO_FOLDER_TYPE_PROGRAMS = 1
: programmes actuellement disponibles.BCRADIO_FOLDER_TYPE_FAVORITES = 2
. Favoris.BCRADIO_FOLDER_TYPE_BAND = 3
: tous les canaux physiques d'une bande donnée.
Il n'est pas nécessaire de définir des champs de métadonnées personnalisées spécifiques à la radio, car toutes les données pertinentes s'intègrent au schéma
MediaBrowser.MediaItem
existant:- Nom du programme (PS RDS, nom du service DAB).
MediaDescription.getTitle
. - Fréquence FM. URI (voir ProgramSelector) ou
MediaDescription.getTitle
(si une entrée se trouve dans le dossierBROADCASTRADIO_FOLDER_TYPE_BAND
). - Identifiants spécifiques à la radio (PI RDS, SID DAB).
MediaDescription.getMediaUri
analysé en ProgramSelector.
En règle générale, il n'est pas nécessaire d'extraire la fréquence FM pour une entrée dans le programme en cours ou la liste des favoris (car le client doit fonctionner sur les ID multimédias). Toutefois, si un tel besoin se présente (par exemple, à des fins d'affichage), il est présent dans l'URI et peut être analysé en
ProgramSelector
. Toutefois, il n'est pas recommandé d'utiliser l'URI pour sélectionner des éléments dans la session en cours. Pour en savoir plus, consultezProgramSelector
.Pour éviter les problèmes de performances ou liés au liaisonneur, le service MediaBrowser doit prendre en charge la pagination:
EXTRA_PAGE
EXTRA_PAGE_SIZE
- Paramètres supplémentaires pour
subscribe()
Remarque:Par défaut, la pagination est implémentée dans la variante
onLoadChildren()
sans gestion des options.Les entrées associées de tous les types de listes (chaînes brutes, programmes trouvés et favoris) peuvent avoir des mediaIds différents (cela dépend de l'application de radio ; la bibliothèque d'assistance les aura différents). Les URI (sous forme de ProgramSelector) diffèrent dans la plupart des cas entre les canaux bruts et les programmes trouvés (sauf pour la FM sans RDS), mais sont généralement les mêmes entre les programmes trouvés et les favoris (sauf, par exemple, lorsque l'AF a été mise à jour).
Avoir des mediaIds différents pour les entrées de différents types de listes permet d'effectuer différentes actions dessus. Vous pouvez parcourir la liste "Favoris" ou la liste "Tous les programmes" sur
onSkipToNext
, en fonction du dossier deMediaItem
récemment sélectionné (voir MediaSession).Actions spéciales pour les titres
La liste des programmes permet aux utilisateurs de se connecter à une station spécifique, mais ne leur permet pas de formuler des requêtes générales telles que "Syntoniser la bande FM", ce qui pourrait entraîner la connexion à une station récemment écoutée sur la bande FM.
Pour prendre en charge ces actions, l'indicateur
FLAG_PLAYABLE
est défini pour certains répertoires de premier niveau (avecFLAG_BROWSABLE
pour les dossiers).Action Sélectionne Émettre un ordre Écouter la radio N'importe quelle chaîne de radio startService(ACTION_PLAY_BROADCASTRADIO)
OU
playFromMediaId(MediaBrowser.getRoot())
Mets la FM N'importe quelle chaîne FM Lire à partir de la mediaId
de la bande FMC'est l'application qui détermine le programme à regarder. Il s'agit généralement de la chaîne sur laquelle l'utilisateur s'est connecté pour la dernière fois dans la liste donnée. Pour en savoir plus sur
ACTION_PLAY_BROADCASTRADIO
, consultez la section Intents de lecture généraux.Détection et connexion au service
PackageManager
peut trouver directement l'arborescence de diffusion de MediaBrowserService. Pour ce faire, appelezresolveService
avec l'intentACTION_PLAY_BROADCASTRADIO
(voir Intents de lecture généraux) et l'indicateurMATCH_SYSTEM_ONLY
. Pour trouver tous les services qui diffusent de la radio (il peut y en avoir plusieurs, par exemple AM/FM et satellite séparés), utilisezqueryIntentServices
.Le service résolu gère également l'intent de liaison
android.media.browse.MediaBrowserService
. Cette information est confirmée par GTS.Pour vous connecter au MediaBrowserService sélectionné, créez une instance
MediaBrowser
pour un composant de service donné etconnect
. Une fois la connexion établie, un gestionnaire de MediaSession peut être obtenu viagetSessionToken
.L'application Radio peut limiter les packages client autorisés à se connecter dans une implémentation
onGetRoot
de son service. L'application doit autoriser les applications système à se connecter sans liste blanche. Pour en savoir plus sur la liste blanche, consultez la section Accepter le package et la signature de l'application Assistant.Si l'application spécifique à la source (par exemple, une application de radio) est installée sur un appareil sans prise en charge de cette source, elle s'annonce toujours comme gérant l'intent
ACTION_PLAY_BROADCASTRADIO
, mais son arbre MediaBrowser ne contient pas de balises spécifiques à la radio. Par conséquent, un client qui souhaite vérifier si une source donnée est disponible sur un appareil doit:- Découvrez le service de radio (appelez
resolveService
pourACTION_PLAY_BROADCASTRADIO
). - Créez
MediaBrowser
, puis connectez-vous-y. - Déterminez la présence de
MediaItem
avec un élément supplémentaireEXTRA_BCRADIO_FOLDER_TYPE
.
Remarque : Dans la plupart des cas, le client doit analyser tous les arbres MediaBrowser disponibles pour détecter toutes les sources disponibles pour un appareil donné.
Noms de groupes
La liste des canaux est représentée par un ensemble de répertoires racine avec une balise de type de dossier définie sur
BCRADIO_FOLDER_TYPE_BAND
. Les titres de leursMediaItem
sont des chaînes localisées représentant les noms de groupes. Dans la plupart des cas, il s'agit de la même traduction en anglais, mais le client ne peut pas s'appuyer sur cette hypothèse.Pour fournir un mécanisme stable permettant de rechercher certaines bandes, une balise supplémentaire est ajoutée pour les dossiers de bandes,
EXTRA_BCRADIO_BAND_NAME_EN
. Il s'agit d'un nom non localisé de la bande et ne peut prendre que l'une des valeurs prédéfinies suivantes:AM
FM
DAB
Si le groupe ne figure pas dans cette liste, la balise de nom de groupe ne doit pas être définie. Toutefois, si la bande figure dans la liste, une balise doit être définie. La radio HD n'énumère pas de bandes distinctes, car elle utilise le même support sous-jacent que la radio AM/FM.
Intents de jeu généraux
Chaque application dédiée à la lecture d'une source donnée (comme la radio ou le CD) doit gérer un intent play général pour commencer à lire du contenu, éventuellement à partir d'un état inactif (par exemple, après le démarrage). C'est à l'application de sélectionner le contenu à lire, mais il s'agit généralement du programme de radio ou du titre de CD récemment écouté.Un intent distinct est défini pour chaque source audio:
android.car.intent.action.PLAY_BROADCASTRADIO
android.car.intent.action.PLAY_AUDIOCD
: CD-DA ou CD-Textandroid.car.intent.action.PLAY_DATADISC
: disque de données optique tel qu'un CD/DVD, mais pas un CD-DA (peut être un CD en mode mixte)android.car.intent.action.PLAY_AUX
: sans spécifier le port auxiliaireandroid.car.intent.action.PLAY_BLUETOOTH
android.car.intent.action.PLAY_USB
: sans spécifier le périphérique USBandroid.car.intent.action.PLAY_LOCAL
: stockage multimédia local (flash intégré)
Les intents ont été choisis pour la commande de lecture générale, car ils résolvent deux problèmes à la fois: la commande de lecture générale elle-même et la détection de services. L'avantage supplémentaire d'un tel intent serait la possibilité d'exécuter une action simple sans ouvrir la session MediaBrowser.
La découverte de services est en fait le problème le plus important résolu avec ces intents. La procédure de détection de services est ainsi simple et sans ambiguïté (voir la section Détection et connexion de services).
Pour faciliter certaines implémentations client, il existe une autre méthode d'émission de cette commande Play (qui doit également être implémentée par l'application de radio) : l'émission de
playFromMediaId
avec le rootId du nœud racine (utilisé comme mediaId). Bien que le nœud racine ne soit pas destiné à être lu, son rootId est une chaîne arbitraire qui peut être consommée en tant que mediaId. Toutefois, les clients ne sont pas tenus de comprendre cette nuance.ProgramSelector
Bien que
mediaId
suffise à sélectionner une chaîne dansMediaBrowserService
, il devient lié à une session et n'est pas cohérent entre les fournisseurs. Dans certains cas, le client peut avoir besoin d'un pointeur absolu (comme une fréquence absolue) pour le maintenir entre les sessions et les appareils.À l'ère des diffusions radio numériques, une fréquence brute n'est pas suffisante pour se connecter à une station spécifique. Par conséquent, utilisez
ProgramSelector
pour régler la chaîne analogique ou numérique.ProgramSelector
se compose de deux parties:- Identifiant principal Identifiant unique et stable d'une station de radio donnée qui ne change pas, mais qui peut ne pas suffire à la syntoniser. Par exemple, le code PI RDS, qui peut être traduit en indicatif d'appel aux États-Unis.
- Identifiants secondaires Identifiants supplémentaires utiles pour régler la station (par exemple, la fréquence), y compris éventuellement des identifiants d'autres technologies radio. Par exemple, une station DAB peut avoir un service de diffusion analogique de secours.
Pour permettre à
ProgramSelector
de s'intégrer à la solution basée surMediaBrowser
ouMediaSession
, définissez un schéma d'URI pour le sérialiser. Le schéma est défini comme suit:broadcastradio://program/<primary ID type>/<primary ID>? <secondary ID type>=<secondary ID>&<secondary ID type>=<secondary ID>
Dans cet exemple, la partie "Identifiants secondaires" (après le point d'interrogation (
?
)) est facultative et peut être supprimée pour fournir un identifiant stable à utiliser commemediaId
. Exemple :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 partie autorité (également appelée hôte) de
program
offre une certaine marge d'extension du schéma à l'avenir. Les chaînes de type d'identifiant sont spécifiées précisément comme leurs noms dans la définition HAL 2.x deIdentifierType
, et le format de valeur est un nombre décimal ou hexadécimal (avec le préfixe0x
).Tous les identifiants spécifiques au fournisseur sont représentés par le préfixe
VENDOR_
. Par exemple,VENDOR_0
pourVENDOR_START
etVENDOR_1
pourVENDOR_START
+ 1. Ces URI sont spécifiques au matériel radio sur lequel ils ont été générés et ne peuvent pas être transférés d'un appareil à un autre fabriqué par différents OEM.Ces URI doivent être attribués à chaque MediaItem sous les dossiers de radio de premier niveau. De plus, MediaSession doit être compatible avec
playFromMediaId
etplayFromUri
. Toutefois, l'URI est principalement destiné à l'extraction des métadonnées radio (telles que la fréquence FM) et au stockage persistant. Il n'est pas garanti que l'URI sera disponible pour tous les éléments multimédias (par exemple, lorsque le type d'ID principal n'est pas encore compatible avec le framework). En revanche, l'ID multimédia fonctionne toujours. Il est déconseillé aux clients d'utiliser des URI pour sélectionner des éléments à partir de la session MediaBrowser actuelle. Utilisez plutôtplayFromMediaId
. Toutefois, ce n'est pas facultatif pour l'application de diffusion, et les URI manquants sont réservés aux cas bien justifiés.La conception initiale utilisait un seul deux-points au lieu de la séquence
://
après la partie du schéma. Toutefois, le premier n'est pas compatible avecandroid.net.Uri
pour les références URI hiérarchiques absolues.Autres types de sources
Vous pouvez gérer d'autres sources audio de la même manière. Par exemple, l'entrée auxiliaire et le lecteur de CD audio.
Une seule application peut diffuser plusieurs types de sources. Dans ce cas, nous vous recommandons de créer un MediaBrowserService distinct pour chaque type de source. Même dans une configuration avec plusieurs sources/MediaBrowserServices, il est fortement recommandé d'avoir une seule MediaSession dans une seule application.
CD audio
Semblable au CD audio, l'application qui diffuse ces disques expose MediaBrowser avec une seule entrée consultable (ou plus, si le système dispose d'un changeur de CD), qui à son tour contient toutes les pistes d'un CD donné. Si le système ne connaît pas les pistes de chaque CD (par exemple, lorsque tous les disques sont insérés dans une cartouche en même temps et qu'il ne les lit pas tous), MediaItem pour l'ensemble du disque ne sera que
PLAYABLE
, et nonBROWSABLE
plusPLAYABLE
. Si aucun disque n'est présent dans un emplacement donné, l'élément ne sera niPLAYABLE
, niBROWSABLE
(mais chaque emplacement doit toujours être présent dans l'arborescence).Ces entrées seraient marquées de la même manière que les dossiers de radiodiffusion. Elles contiendraient des champs supplémentaires définis dans l'API MediaDescription:
EXTRA_CD_TRACK
: pour chaqueMediaItem
sur un CD audio, numéro de piste basé sur 1.EXTRA_CD_DISK
: numéro de disque à partir de 1.
Pour un système compatible avec CD-Text et un disque compatible, le titre du disque est défini dans le MediaItem de niveau supérieur. De même, les MediaItems pour les titres comportent le titre du titre.
Entrée auxiliaire
L'application qui diffuse l'entrée auxiliaire expose un arbre MediaBrowser avec une seule entrée (ou plus, lorsqu'il existe plusieurs ports) représentant le port d'entrée AUX. La MediaSession correspondante prend son mediaId et passe à cette source après avoir reçu la requête
playFromMediaId
.Chaque entrée MediaItem AUX comporte un champ
EXTRA_AUX_PORT_NAME
supplémentaire défini sur le nom non localisé du port, sans la mention "AUX". Par exemple, "AUX 1" est défini sur "1", "AUX avant" sur "avant" et "AUX" sur une chaîne vide. Dans les paramètres régionaux autres que l'anglais, la balise de nom reste la même chaîne en anglais. Peu probable, car comme pourEXTRA_BCRADIO_BAND_NAME_EN
, les valeurs sont définies par l'OEM et ne sont pas limitées à une liste prédéfinie.Si le matériel peut détecter les appareils connectés au port AUX, il doit marquer le MediaItem comme
PLAYABLE
, uniquement si l'entrée est connectée. Le matériel doit toujours être énuméré (mais pasPLAYABLE
) si rien n'est connecté à ce port. Si le matériel ne dispose pas de cette fonctionnalité, le MediaItem doit toujours être défini surPLAYABLE
.Champs supplémentaires
Définissez les champs suivants:
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"
Le client doit vérifier les éléments MediaItems de niveau supérieur pour les éléments dont le champ supplémentaire
EXTRA_CD_DISK
ouEXTRA_AUX_PORT_NAME
est défini.Exemples détaillés
Les exemples suivants concernent la structure arborescente de MediaBrowser pour les types de sources qui font partie de cette conception.
MediaBrowserService de diffusion radio (gère
ACTION_PLAY_BROADCASTRADIO
):- Stations (consultables)
EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_PROGRAMS
- URI BBC One (jouable) :
broadcastradio://program/RDS_PI/1234?AMFM_FREQUENCY=90500
- URI ABC 88.1 (jouable) :
broadcastradio://program/RDS_PI/5678?AMFM_FREQUENCY=88100
- URI ABC 88.1 HD1 (jouable) :
broadcastradio://program/HD_STATION_ID_EXT/158241DEADBEEF?AMFM_FREQUENCY=88100&RDS_PI=5678
- URI ABC 88.1 HD2 (jouable) :
broadcastradio://program/HD_STATION_ID_EXT/158242DEADBEFE
- 90.5 FM (jouable) – FM sans RDSURI :
broadcastradio://program/AMFM_FREQUENCY/90500
- URI 620 AM (jouable) :
broadcastradio://program/AMFM_FREQUENCY/620
- URI BBC One (jouable) :
broadcastradio://program/DAB_SID_EXT/1E24102?RDS_PI=1234
- URI BBC One (jouable) :
- Favoris (consultables, lisibles)
EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_FAVORITES
- URI BBC One (jouable) :
broadcastradio://program/RDS_PI/1234?AMFM_FREQUENCY=101300
- URI BBC Two (non lisible) :
broadcastradio://program/RDS_PI/1300?AMFM_FREQUENCY=102100
- URI BBC One (jouable) :
- AM (consultable, lisible) :
EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_BANDEXTRA_BCRADIO_BAND_NAME_EN="AM"
- URI 530 AM (jouable) :
broadcastradio://program/AMFM_FREQUENCY/530
- URI 540 AM (jouable) :
broadcastradio://program/AMFM_FREQUENCY/540
- URI 550 AM (jouable) :
broadcastradio://program/AMFM_FREQUENCY/550
- URI 530 AM (jouable) :
- FM (consultable, lisible) :
EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_BANDEXTRA_BCRADIO_BAND_NAME_EN="FM"
- URI 87,7 FM (jouable) :
broadcastradio://program/AMFM_FREQUENCY/87700
- URI 87,9 FM (jouable) :
broadcastradio://program/AMFM_FREQUENCY/87900
- URI 88.1 FM (jouable) :
broadcastradio://program/AMFM_FREQUENCY/88100
- URI 87,7 FM (jouable) :
- DAB (jouable):
EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_BANDEXTRA_BCRADIO_BAND_NAME_EN="DAB"
MediaBrowserService pour CD audio (gère
ACTION_PLAY_AUDIOCD
):- Disque 1 (jouable)
EXTRA_CD_DISK=1
- Disque 2 (consultable, lisible)
EXTRA_CD_DISK=2
- Piste 1 (jouable)
EXTRA_CD_TRACK=1
- Piste 2 (jouable)
EXTRA_CD_TRACK=2
- Piste 1 (jouable)
- Mon CD de musique (consultable, lisible)
EXTRA_CD_DISK=3
- All By Myself (jouable)
EXTRA_CD_TRACK=1
- Reise, Reise (jouable)
EXTRA_CD_TRACK=2
- All By Myself (jouable)
- Case 4 vide (non jouable)
EXTRA_CD_DISK=4
AUX MediaBrowserService (gère
ACTION_PLAY_AUX
):- Entrée auxiliaire avant (jouable)
EXTRA_AUX_PORT_NAME="front"
- AUX arrière (jouable)
EXTRA_AUX_PORT_NAME="rear"