Implémentation de la radiocommande

L'implémentation de la commande radio est basée sur MediaSession et MediaBrowse, qui permettent aux applis multimédias et assistant vocal de contrôler la radio. Pour en savoir plus, consultez Créez des applications multimédias pour voitures sur developer.android.com.

Une implémentation d'arborescence de navigation multimédia est fournie dans la documentation car-broadcastradio-support bibliothèque dans packages/apps/Car/libs. Cette bibliothèque contient également des extensions de ProgramSelector pour convertir l'URI en URI et inversement. Il est recommandé que les implémentations radio utilisez 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 d'autres applications affichées dans des contenus multimédias, la bibliothèque car-media-common contient des classes qui doivent être intégrées à la radio l'application. MediaAppSelectorWidget peut être inclus dans le fichier XML de l'application Radio. (icône et 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 vers lesquelles il est possible de basculer. Si vous souhaitez une UI autre que celle fournie, vous pouvez créer un widget personnalisé pour lancer AppSelectionFragment lorsque le 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 l'application de radio de référence, situé dans le pays suivant : packages/apps/Car/Radio.

Spécifications détaillées des commandes

MediaSession (via MediaSession.Callback) fournit des mécanismes de contrôle pour le programme radio en cours de lecture:

  • onPlay, onStop. (réactivez) le son de la radio.
  • onPause Mise en pause avec contrôle du direct (si compatible).
  • onPlayFromMediaId lire n'importe quel contenu à partir d'un dossier racine ; Exemple : "Mets FM" ou "Mets la radio".
  • onPlayFromUri Lire une fréquence spécifique. Par exemple, "Mets 88.5 FM".
  • onSkipToNext, onSkipToPrevious. Régler sur un titre suivant ou précédent .
  • onSetRating ajouter des éléments aux favoris ou en supprimer.

MediaBrowser présente un fichier MediaItem sur trois types de répertoires de premier niveau:

  • (Facultatif) Programmes (stations). Ce mode est généralement utilisé par des signaux doubletuner pour indiquer toutes les stations de radio réglables disponibles à l'emplacement de l'utilisateur.
  • Favoris. Programmes de radio ajoutés à la liste des favoris, certains peuvent l'être indisponible (en dehors de la plage de réception).
  • Chaînes du bracelet. 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.
<ph type="x-smartling-placeholder">
</ph> Structure de l&#39;arborescence MediaBrowserService
Figure 2. Structure de l'arborescence MediaBrowserService

Chaque élément de chacun de ces dossiers (AM/FM/Programs) est un MediaItem avec un URI qui peut être utilisé avec MediaSession pour l'ajuster. Chaque dossier de premier niveau (AM/FM/Programs) est un MediaItem avec un MediaId qui peut être utilisé avec MediaSession pour déclencher la lecture (à la discrétion de l'OEM). Pour par exemple, "Mets FM", "Mets le matin" et "Mets la radio" sont toutes des requêtes radio non spécifiques qui utilisent mediaId à envoyer à l'application de radio OEM. C'est l'application Radio de déterminer ce que vous voulez écouter sur requête générique et le mediaId.

MediaSession

Étant donné qu'il n'existe pas de concept de mise en pause d'une diffusion en direct, les actions Lecture, Pause et Arrêt ne s'appliquent pas toujours à la radio. Avec la case d'option, l'action Arrêt est associée à la coupure du son du flux. tandis que Play est associé à la suppression du son.

Certains tuners (ou applications) permettent de simuler la mise en pause d'un flux de diffusion en le contenu mis en cache, puis de le lire plus tard. Dans ce cas, utilisez onPause.

La lecture à partir des actions mediaId et URI est destinée à se régler sur une station récupéré à partir de l'interface MediaBrowser. Le mediaId est une chaîne arbitraire. fournies par l'application radio pour imposer un identifiant unique (de sorte qu'un identifiant donné pointe vers un seul élément) et stable (un élément donné a le même identifiant pendant toute la session) avec laquelle pour identifier une station donnée. L'URI doit suivre un schéma bien défini. En bref, un URI du sélecteur de programme. Bien que cela préserve l'attribut d'unité, il n'est pas nécessaire soit stable, bien qu'elle puisse changer lorsque la station passe à une fréquence différente.

onPlayFromSearch n'est pas utilisé par défaut. Est à la charge du client (application associée) pour sélectionner un résultat de recherche dans l'arborescence MediaBrowser. En mouvement cette responsabilité à l'égard de l'application radio augmenterait la complexité, nécessiterait des contrats formels sur la façon dont les requêtes de chaîne de caractères devraient apparaître et entraîner une expérience utilisateur inégale sur différents matériels plates-formes.

Remarque:L'application de radio ne contient pas d'informations Informations 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 passe sur une station de la liste des favoris, elle peut passer à la radio suivante à partir de la liste des favoris.
  • L'écoute d'une station de la liste des programmes peut entraîner le réglage de la station disponible, triée en fonction du numéro de la chaîne.
  • Écouter un canal arbitraire peut entraîner le réglage du canal physique suivant, même en l'absence de signal de diffusion.

L'application de radio gère ces actions.

Gestion des exceptions

TransportControls ("Lecture", "Arrêt" et "Suivant") n'indique pas si l'action réussissent ou non. Le seul moyen d'indiquer une erreur est de définir la classe MediaSession en STATE_ERROR avec un message d'erreur.

L'application 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 la PlaybackState et vérifier que la session a modifié le programme actuel en fonction de ce qui a été demandé ou saisi dans état d'erreur. STATE_CONNECTING ne doit pas dépasser 30 secondes. Cependant, l'accord direct La fréquence AM/FM devrait être beaucoup plus rapide.

Ajouter et supprimer des favoris

MediaSession prend en charge les évaluations, qui peuvent être utilisées pour contrôler les favoris. onSetRating appelé avec une note de type RATING_HEART ajoute ou supprime la station actuellement réglée dans la liste des favoris.

Contrairement aux anciens préréglages, ce modèle part du principe que les favoris , lorsque chaque favori enregistré a été alloué à 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 onSetRating. opération.

L'API MediaSession a une limite : seule la station actuellement sélectionnée peuvent être ajoutées ou supprimées. Par exemple, les éléments doivent être sélectionnés avant d'être peuvent être supprimées. Il s'agit seulement d'une limitation du client MediaBrowser, l'application associée. L'application de radio n'est pas soumise à des restrictions similaires. Cette partie est facultative lorsqu'une application ne prend pas en charge les Favoris.

Navigateur multimédia

Pour exprimer les fréquences ou les noms de canaux physiques (lors du réglage à un canal arbitraire adapté à une technologie radio donnée) sont valides pour pour une région donnée, tous les canaux (fréquences) valides sont répertoriés pour chaque bande. Aux États-Unis, cela correspond à 101 chaînes FM comprises entre 87,8 et Plage de 108,0 MHz (en utilisant un espacement de 0,2 MHz) et canaux 117 AM dans la plage 530 jusqu'à 1 700 kHz (en utilisant un espacement de 10 kHz). Comme la radio HD utilise le même espace de canaux, elles ne sont pas présentées séparément.

La liste des programmes de radio actuellement disponibles est plate, car elle ne permet pas des schémas d'affichage tels que le regroupement par ensemble de diffusion audio directe (DAB).

Il se peut que les entrées de la liste des favoris ne soient pas modifiables. Par exemple, si une valeur programme n'est pas autorisé. L'application radio peut ou non détecter si l'entrée peuvent être ajustés à l'avance. Si c'est le cas, il est possible que l'entrée ne soit pas jouable.

Pour identifier les dossiers de premier niveau, le mécanisme utilisé par le Bluetooth est appliqué. Autrement dit, un groupe "Bonus" de MediaDescription contient un champ spécifique au tuner, tout comme le Bluetooth avec EXTRA_BT_FOLDER_TYPE. Dans le cas de la radiodiffusion, cela permet de définir les nouveaux champs suivants dans le API publique:

  • EXTRA_BCRADIO_FOLDER_TYPE = "android.media.extra.EXTRA_BCRADIO_FOLDER_TYPE" Un des valeurs suivantes: <ph type="x-smartling-placeholder">
      </ph>
    • BCRADIO_FOLDER_TYPE_PROGRAMS = 1 Programmes actuellement disponibles.
    • BCRADIO_FOLDER_TYPE_FAVORITES = 2 Favoris.
    • BCRADIO_FOLDER_TYPE_BAND = 3 Tous les canaux physiques d'un groupe donné.

    Il n'est pas nécessaire de définir des champs de métadonnées personnalisés spécifiques aux cases d'option, car tous les données pertinentes s'intègrent dans le schéma MediaBrowser.MediaItem existant:

    • Nom du programme (RDS PS, DAB service name). MediaDescription.getTitle.
    • Fréquence FM. URI (voir ProgramSelector) ou MediaDescription.getTitle (si une entrée se trouve dans le dossier BROADCASTRADIO_FOLDER_TYPE_BAND).
    • Identifiants radio-spécifiques (RDS PI, DAB SId). MediaDescription.getMediaUri a été analysé dans ProgramSelector.

    En règle générale, il n'est pas nécessaire d'extraire la fréquence FM pour une entrée sur la Programme en cours ou liste de favoris (dans la mesure où le client doit agir sur des médias ID). Toutefois, si un tel besoin se présente (par exemple, à des fins d'affichage), il est présentes dans l'URI et peuvent être analysées dans ProgramSelector. Cela dit, il n'est pas recommandé d'utiliser l'URI pour sélectionner des éléments dans la section session. Pour en savoir plus, consultez ProgramSelector

    Pour éviter les problèmes de performances ou de liaison, le service MediaBrowser doit être compatible avec la pagination:

    Remarque:Par défaut, la pagination est implémentée par défaut dans le onLoadChildren() sans gestion des options.

    Entrées associées provenant de tous types de listes (chaînes brutes, programmes trouvés et favoris) peuvent avoir différents mediaId (c'est à l'appli Radio ; la compatibilité de la bibliothèque seront différents). Les URI (dans le formulaire ProgramSelector) diffèrent entre les chaînes brutes et les programmes que l'on retrouve dans la plupart des cas (sauf pour les sans RDS), mais sont globalement les mêmes entre les programmes trouvés et les favoris (sauf par exemple, lors de la mise à jour de la prévision de disponibilité).

    Le fait d'avoir différents mediaIds pour les entrées de différents types de listes qu'il est possible d'effectuer différentes actions les concernant. Vous pouvez parcourir la liste des Favoris ou la liste "Tous les programmes" sur onSkipToNext, en fonction du dossier dans lequel MediaItem sélectionné (voir MediaSession).

    Actions de réglage spéciales

    La liste de programmes permet aux utilisateurs de sélectionner une station spécifique, mais ne leur permet pas de des requêtes générales, telles que "Tune to FM", qui pourraient entraîner un réglage sur un écouté une station sur la bande FM.

    Pour permettre de telles actions, certains répertoires de premier niveau disposent du FLAG_PLAYABLE défini (avec FLAG_BROWSABLE) pour les dossiers).

    Action Titres pour Procédure d'émission
    Écouter la radio N'importe quelle chaîne de radio startService(ACTION_PLAY_BROADCASTRADIO)

    OU,

    playFromMediaId(MediaBrowser.getRoot())
    Mets FM N'importe quelle chaîne FM Lire à partir du mediaId de la bande FM.

    La détermination du programme à régler dépend de l'application. C'est généralement la dernière chaîne de la liste donnée. Pour en savoir plus sur ACTION_PLAY_BROADCASTRADIO, consultez Intentions de lecture générales :

    Découverte et connexion au service

    PackageManager peut trouver directement le service MediaBrowserService qui diffuse la radiodiffusion arborescence. Pour cela, appelez resolveService avec l'intent ACTION_PLAY_BROADCASTRADIO (voir Intentions de lecture générales) et MATCH_SYSTEM_ONLY. Pour trouver tous les services qui proposent la radio peut être plus d'un ; par exemple, séparez les fonctions AM/FM et satellite), utilisez queryIntentServices

    Le service résolu gère la liaison android.media.browse.MediaBrowserService l’intention. Cette information est validée via GTS.

    Pour vous connecter au MediaBrowserService sélectionné, créer Instance MediaBrowser pour un composant de service donné et connect. Une fois la connexion établie, vous pouvez obtenir un handle vers MediaSession via getSessionToken

    L'application Radio peut limiter les packages clients autorisés à se connecter dans un onGetRoot la mise en œuvre de leur service. L'application doit autoriser les applications système à se connecter sans liste blanche. Pour en savoir plus sur l'ajout à la liste blanche, consultez Acceptez 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 une telle source, il présenterait tout de même la gestion ACTION_PLAY_BROADCASTRADIO, mais son arborescence MediaBrowser ne doivent pas contenir de balises radio-spécifiques. Ainsi, un client prêt à vérifier si source est disponible sur un appareil, doit:

    1. Découvrez la radio (appelez resolveService pour ACTION_PLAY_BROADCASTRADIO).
    2. Créez MediaBrowser, puis connectez-vous.
    3. Déterminer la présence de MediaItem avec EXTRA_BCRADIO_FOLDER_TYPE supplémentaires.

    Remarque : Dans la plupart des cas, le client doit analyser tous les arborescences MediaBrowser disponibles pour détecter toutes les sources disponibles pour un appareil donné.

    Noms des bandes

    La liste des bandes est représentée par un ensemble de répertoires de premier niveau avec un type de dossier définie sur BCRADIO_FOLDER_TYPE_BAND. Leurs MediaItem les titres sont des chaînes localisées pour représenter les noms des groupes de musique. Dans la plupart des cas, ce sera est identique à la traduction en anglais, mais le client ne peut pas s'en fier à cette hypothèse.

    Pour obtenir un mécanisme stable permettant de rechercher certains bracelets, une un tag supplémentaire a été ajouté pour les dossiers de bande EXTRA_BCRADIO_BAND_NAME_EN. C'est un nom non localisé de la bande et ne peut accepter qu'une seule des valeurs prédéfinies suivantes:

    • AM
    • FM
    • DAB

    Si la bande ne figure pas sur cette liste, vous ne devez pas définir son nom. Toutefois, si la bande figure sur la liste, un tag doit être défini. La radio HD ne fonctionne pas énumérer des bandes distinctes, car il utilise le même support sous-jacent que AM/FM.

    Intentions de jeu générales

    Chaque application dédiée à la lecture d'une source donnée (radio ou CD, par exemple) doit gérer une l'intention générale play pour commencer à lire du contenu, éventuellement (par exemple, après le démarrage). C’est à l’application comment sélectionner le contenu à mais il s'agit généralement d'un programme radio ou d'une piste CD récemment écoutés. d'un intent défini pour chaque source audio:

    • android.car.intent.action.PLAY_BROADCASTRADIO
    • android.car.intent.action.PLAY_AUDIOCD: CD-DA ou CD-Text
    • android.car.intent.action.PLAY_DATADISC: disque de données optique comme CD/DVD, mais pas CD-DA (peut être un CD en mode mixte)
    • android.car.intent.action.PLAY_AUX: sans spécifier le Port AUX
    • android.car.intent.action.PLAY_BLUETOOTH
    • android.car.intent.action.PLAY_USB: sans spécifier le Périphérique USB
    • android.car.intent.action.PLAY_LOCAL: stockage multimédia local (Flash intégré)

    Les intents ont été choisis pour les commandes générales du jeu, car ils résolvent deux problèmes à la fois: la commande générale play elle-même et la détection de services. L'avantage supplémentaire d'avoir une telle intention serait la possibilité d'exécuter une telle une action simple sans ouvrir de session MediaBrowser.

    La découverte de services est en fait le problème le plus important les intents. La procédure de recherche de services est ainsi simple et sans équivoque (voir Découverte et connexion au service).

    Pour faciliter certaines implémentations clientes, il existe une autre méthode émettre une commande de lecture de ce type (qui doit également être implémentée par l'application radio): émettant playFromMediaId avec le rootId du nœud racine (utilisé comme mediaId). Alors que le nœud racine n'est pas conçu pour être lu, son rootId est une chaîne arbitraire qui peut être utilisée en tant que mediaId. Toutefois, les clients ne sont pas obligés pour comprendre cette nuance.

    Sélecteurdeprogramme

    Bien que mediaId soit suffisant pour sélectionner une chaîne dans le MediaBrowserService, il est 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 un fréquence absolue) afin de la maintenir entre les sessions et les appareils.

    À l'ère des émissions de radio numériques, une fréquence simple ne suffit pas pour se régler sur une station spécifique. Par conséquent, utilisez ProgramSelector pour régler vers un canal analogique ou numérique. ProgramSelector se compose de deux parties:

    • Identifiant principal : Identifiant unique et stable d'une radio donnée. station qui ne change pas, mais qui risque de ne pas suffire pour se régler sur cette station. Par exemple : Code PI RDS, qui peut être traduit en indicatif aux États-Unis.
    • Identifiants secondaires : Identifiants supplémentaires utiles pour le réglage à cette station (fréquence, par exemple), en incluant éventuellement des identifiants d'autres les technologies radio. Par exemple, une station DAB peut avoir une diffusion de remplacement analogique.

    Pour permettre à ProgramSelector de tenir dans MediaBrowser- ou Solution basée sur MediaSession, définissez un schéma d'URI pour le sérialiser. Le schéma est définis comme suit:

    broadcastradio://program/<primary ID type>/<primary ID>?
    <secondary ID type>=<secondary ID>&<secondary ID type>=<secondary ID>

    Dans cet exemple, la partie secondaire "Identifiants" (après le point d'interrogation (?)) est facultatif et peut être supprimé pour fournir un identifiant stable à utiliser en tant que mediaId. 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é (ou hôte) de program offre de la place pour l'extension de schéma à l'avenir. Les chaînes de type d'identifiant sont spécifiées avec précision comme noms dans la définition HAL 2.x de IdentifierType et la valeur est un nombre décimal ou hexadécimal (avec le préfixe 0x).

    Tous les identifiants spécifiques aux fournisseurs sont représentés par le VENDOR_ préfixe. Par exemple, VENDOR_0 pour VENDOR_START et VENDOR_1 pour VENDOR_START plus 1. Ces URI sont spécifiques le matériel radio sur lequel ils ont été générés et ne peuvent pas être transférés d'un appareil à l'autre ; faite par différents OEM.

    Ces URI doivent être attribués à chaque MediaItem sous la case d'option de premier niveau dossiers. De plus, MediaSession doit être compatible avec les playFromMediaId et playFromUri. Cependant, l'URI est principalement destiné au trafic radio l'extraction de métadonnées (comme la fréquence FM) et le stockage persistant. Il n'y a aucun garantir que l'URI sera disponible pour tous les éléments multimédias (par exemple, lorsque l'URI principal le type d'ID n'est pas encore pris en charge par le framework). En revanche, l'ID média fonctionne toujours. Il est déconseillé aux clients d'utiliser l'URI pour sélectionner des éléments session MediaBrowser en cours. Utilisez plutôt playFromMediaId. Cela dit, il s'agit n'est pas facultatif pour l'application de diffusion, et les URI manquants sont réservés aux cas justifiés.

    La conception initiale utilisait un seul signe deux-points au lieu de la séquence ://. après la partie schéma. Toutefois, le premier n'est pas pris en charge par android.net.Uri pour les références d'URI hiérarchiques absolues.

    Autres types de sources

    Les autres sources audio peuvent être traitées de la même manière. Par exemple, l'entrée auxiliaire et le lecteur CD audio.

    Une même application peut diffuser plusieurs types de sources. Dans ce cas, nous vous recommandons de créer un service MediaBrowserService distinct chaque type de source. Même dans une configuration avec plusieurs sources diffusées/MediaBrowserServices, il est fortement recommandé d'avoir une seule MediaSession au cours d'une même l'application.

    CD audio

    Semblable à un CD audio, dans la mesure où l'application qui utilise 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 contiendra toutes les pistes d'un CD donné. Si le système n'a pas connaissance des pistes de chaque CD (par exemple, lorsque tous les disques sont insérés en même temps dans une cartouche et ne la lisent pas toutes), puis L'élément MediaItem pour l'intégralité du disque correspondrait simplement à PLAYABLE, et non à BROWSABLE plus PLAYABLE. S'il n'y a pas de disque dans l'emplacement spécifié, l'élément n'est ni PLAYABLE, ni BROWSABLE (mais chaque emplacement doit toujours être présent dans l'arborescence).

     Arborescence de CD audio
    Figure 3. Arborescence de CD audio.

    Ces entrées seront marquées de la même manière que les dossiers radio de diffusion are; ils contiennent des champs supplémentaires supplémentaires définis dans l'API MediaDescription:

    • EXTRA_CD_TRACK: pour chaque tranche de MediaItem d'un CD audio, Numéro de titre basé sur 1.
    • EXTRA_CD_DISK: numéro de disque de base 1.

    Pour le système compatible CD-Text et les disques compatibles, l'élément MediaItem de premier niveau doit avoir un titre pour le disque. De même, les MediaItems pour les pistes auront une valeur le titre de la piste.

    Entrée auxiliaire

    L'application qui diffuse l'entrée auxiliaire expose une arborescence MediaBrowser avec une seule entrée (ou plusieurs, lorsque plusieurs ports existent) représentant le port d'entrée AUX. La MediaSession correspondante utilise mediaId et passe à cette source après avoir reçu la requête playFromMediaId.

    Arborescence AUX
    Figure 4. arborescence AUX.

    Chaque entrée MediaItem AUX comporte un champ supplémentaire EXTRA_AUX_PORT_NAME défini sur le nom non localisé du port sans le bouton "AUX" l'expression. Exemple : "AUX 1" doit être réglé sur "1", "AUX" avant" par "avant" et "AUX" en une chaîne vide. Dans les langues autres que l'anglais, le nom reste la même chaîne anglaise. Peu probable que EXTRA_BCRADIO_BAND_NAME_EN : les valeurs sont définies par l'OEM et ne sont pas limité à une liste prédéfinie.

    Si le matériel peut détecter les appareils connectés au port AUX, il doit marquer MediaItem en tant que PLAYABLE, uniquement si l'entrée est connectée. Le matériel doit est quand même énuméré (mais pas PLAYABLE) si rien n'a été connecté à ce . Si le matériel ne dispose pas d'une telle capacité, l'élément MediaItem doit toujours être défini sur PLAYABLE

    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 examiner les MediaItems de premier niveau pour identifier les éléments ayant le EXTRA_CD_DISK ou EXTRA_AUX_PORT_NAME champ supplémentaire défini.

    Exemples détaillés

    Les exemples suivants décrivent l'arborescence MediaBrowser pour les types de sources de cette conception.

    Broadcast radio MediaBrowserService (gère ACTION_PLAY_BROADCASTRADIO):

    • Radios (consultable)EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_PROGRAMS <ph type="x-smartling-placeholder">
        </ph>
      • URI BBC One (lecture) : broadcastradio://program/RDS_PI/1234?AMFM_FREQUENCY=90500
      • URI ABC 88.1 (lecture) : broadcastradio://program/RDS_PI/5678?AMFM_FREQUENCY=88100
      • URI ABC 88.1 HD1 (lecture) : broadcastradio://program/HD_STATION_ID_EXT/158241DEADBEEF?AMFM_FREQUENCY=88100&RDS_PI=5678
      • URI ABC 88.1 HD2 (lecture) : broadcastradio://program/HD_STATION_ID_EXT/158242DEADBEFE
      • 90.5 FM (lecture) – FM sans RDSURI: broadcastradio://program/AMFM_FREQUENCY/90500
      • URI (lecture) 620 AM: broadcastradio://program/AMFM_FREQUENCY/620
      • URI BBC One (qui peut être lu) : broadcastradio://program/DAB_SID_EXT/1E24102?RDS_PI=1234
    • Favoris (consultables, jouables)EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_FAVORITES <ph type="x-smartling-placeholder">
        </ph>
      • URI BBC One (qui peut être lu) : broadcastradio://program/RDS_PI/1234?AMFM_FREQUENCY=101300
      • URI BBC Two (non lisible) : broadcastradio://program/RDS_PI/1300?AMFM_FREQUENCY=102100
    • AM (consultable, jouable): EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_BANDEXTRA_BCRADIO_BAND_NAME_EN="AM" <ph type="x-smartling-placeholder">
        </ph>
      • URI (lecture) 530 AM: broadcastradio://program/AMFM_FREQUENCY/530
      • URI (lecture) 540 AM: broadcastradio://program/AMFM_FREQUENCY/540
      • URI (lecture) 550 AM: broadcastradio://program/AMFM_FREQUENCY/550
    • FM (consultable, lisible): EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_BANDEXTRA_BCRADIO_BAND_NAME_EN="FM" <ph type="x-smartling-placeholder">
        </ph>
      • URI 87.7 FM (lecture) : broadcastradio://program/AMFM_FREQUENCY/87700
      • URI 87.9 FM (lecture) : broadcastradio://program/AMFM_FREQUENCY/87900
      • URI 88.1 FM (lecture) : broadcastradio://program/AMFM_FREQUENCY/88100
    • DAB (lecture): EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_BANDEXTRA_BCRADIO_BAND_NAME_EN="DAB"

    Audio CD MediaBrowserService (gère ACTION_PLAY_AUDIOCD):

    • Disque 1 (lisible) EXTRA_CD_DISK=1
    • Disque 2 (consultable, lisible) EXTRA_CD_DISK=2 <ph type="x-smartling-placeholder">
        </ph>
      • Piste 1 (jouable) EXTRA_CD_TRACK=1
      • Piste 2 (jouable) EXTRA_CD_TRACK=2
    • Mon CD musical (consultable, lisible) EXTRA_CD_DISK=3 <ph type="x-smartling-placeholder">
        </ph>
      • Tout par moi-même (jouable) EXTRA_CD_TRACK=1
      • Reise, Reise (jouable) EXTRA_CD_TRACK=2
    • Emplacement 4 vide (impossible de lire) EXTRA_CD_DISK=4

    AUX MediaBrowserService (gère ACTION_PLAY_AUX):

    • Port AUX (mode de lecture) à l'avant de l'appareil EXTRA_AUX_PORT_NAME="front"
    • Connecteur AUX arrière (pouvant être lu) EXTRA_AUX_PORT_NAME="rear"