Le framework d'entrée Android TV (TIF) simplifie la diffusion de contenus en direct sur Android TV. Le TIF Android fournit une API standard permettant aux fabricants de créer des modules d'entrée pour contrôler Android TV, et permet la recherche et les recommandations de programmes télévisés en direct via les métadonnées publiées par l'entrée TV.
Le framework ne cherche pas à implémenter des normes TV ni des exigences régionales, mais il permet aux fabricants d'appareils de respecter plus facilement les normes de diffusion de la télévision numérique régionale sans réimplémentation. La documentation de cette section peut également être utile aux développeurs d'applications tierces qui souhaitent créer des entrées TV personnalisées.
Composants
L'implémentation du framework d'entrée Android TV inclut un gestionnaire d'entrée TV. Le TIF fonctionne avec l'application TV, une application système qui ne peut pas être remplacée par une application tierce, pour accéder aux chaînes intégrées et au tuner IP. L'application TV communique avec les modules d'entrée TV fournis par le fabricant de l'appareil ou d'autres parties via le gestionnaire d'entrée TV.
Le framework TV Input se compose des éléments suivants:
- Fournisseur de TV (
com.android.providers.tv.TvProvider
): base de données de chaînes, de programmes et des autorisations associées - Application TV (
com.android.tv.TvActivity
): application qui gère l'interaction utilisateur - TV Input Manager (
android.media.tv.TvInputManager
): permet aux entrées TV de communiquer avec l'application TV - Entrée TV: application représentant des tuners et des ports d'entrée physiques ou virtuels
- HAL d'entrée TV (module
tv_input
): définition matérielle qui permet aux entrées TV du système d'accéder au matériel spécifique au téléviseur lorsqu'il est implémenté - Contrôle parental: technologie permettant de bloquer des chaînes et des programmes
- HDMI-CEC: technologie permettant de contrôler à distance divers appareils via HDMI
- Tuner Framework: framework pour l'entrée TV avec tuner intégré
- MediaCas: un framework pour l'accès conditionnel
- Tuner Resource Manager: service permettant de gérer la ressource matérielle pour l'entrée TV, MediaCas et l'entrée de tuner intégrée
Ces composants sont décrits en détail ci-dessous. Consultez le schéma suivant pour obtenir une vue détaillée de l'architecture du framework d'entrée Android TV.
Procédure
Voici comment l'architecture est exercée:
- L'utilisateur voit et interagit avec l'application TV, une application système qui ne peut pas être remplacée par une application tierce.
- L'application TV affiche le contenu AV de l'entrée TV.
- L'application TV ne peut pas communiquer directement avec les entrées TV. TV Input Manager identifie l'état des entrées TV pour l'application TV. Consultez la section TV Input Manager ci-dessous pour en savoir plus sur ces limites.
Autorisations
- Seuls les entrées TV
signatureOrSystem
et l'application TV ont un accès complet à la base de données du fournisseur de services TV et peuvent recevoir des KeyEvents. - Seules les entrées TV système peuvent accéder au HAL de l'entrée TV via le service TV Input Manager. Les entrées TV sont accessibles individuellement via des sessions du Gestionnaire d'entrées TV.
- Les entrées TV tierces ont un accès verrouillé à la base de données du fournisseur TV et ne peuvent LIRE/ÉCRIRE que sur les lignes de package correspondantes.
- Les entrées TV tierces peuvent afficher leur propre contenu ou celui des entrées TV passthrough d'un fabricant d'appareils, comme HDMI1. Ils ne peuvent pas afficher de contenu provenant d'entrées TV qui ne sont pas des entrées TV (via un tuner intégré ou IPTV, par exemple).
- L'autorisation
TV_INPUT_HARDWARE
pour une application d'entrée TV matérielle signale au service TV Input Manager de signaler au service TV Input au démarrage d'appeler le service TV Input Manager et d'ajouter ses entrées TV. Cette autorisation permet à une application d'entrée TV matérielle d'accepter plusieurs entrées TV par service d'entrée TV, et d'ajouter et de supprimer de manière dynamique les entrées TV compatibles.
Fournisseur de services TV
La base de données du fournisseur de services TV stocke les chaînes et les programmes des entrées TV. Le fournisseur de services TV publie et gère également les autorisations associées afin que les entrées TV ne puissent voir que leurs propres enregistrements. Par exemple, une entrée TV spécifique ne peut voir que les chaînes et les programmes qu'elle a fournis, et n'est pas autorisée à accéder aux chaînes et aux programmes d'autres entrées TV.
Le fournisseur TV mappe le "genre de diffusion" au "genre canonique" en interne. Les entrées TV sont chargées de renseigner le champ "genre de diffusion" avec la valeur de la norme de diffusion sous-jacente. Le champ "genre canonique" sera automatiquement renseigné avec le genre associé correct à partir de android.provider.TvContract.Genres
. Par exemple, avec la norme de diffusion ATSC A/65 et un programme avec le genre 0x25 (signifiant "Sports"), l'entrée TV renseigne le champ "genre de diffusion" avec la chaîne "Sports" et le fournisseur de TV renseigne le champ "genre canonique" avec la valeur mappée android.provider.TvContract.Genres.SPORTS
.
Pour obtenir une vue détaillée du fournisseur de services TV, consultez le diagramme ci-dessous.
Seules les applications de la partition système privilégiée peuvent lire l'intégralité de la base de données du fournisseur de services TV.
Les entrées TV en passthrough ne stockent pas les chaînes et les programmes.
En plus des champs standards pour les chaînes et les programmes, la base de données du fournisseur de services TV propose également un champ de type BLOB, COLUMN_INTERNAL_PROVIDER_DATA
, dans chaque table que les entrées TV peuvent utiliser pour stocker des données arbitraires. Ces données BLOB peuvent inclure des informations personnalisées, telles que la fréquence du tuner associé, et être fournies dans un tampon de protocole ou une autre forme. Un champ de recherche est disponible pour rendre certains canaux indisponibles dans la recherche (par exemple, pour répondre aux exigences spécifiques à chaque pays en matière de protection du contenu).
Exemples de champs de base de données
Le fournisseur de services TV accepte les données structurées dans les tables de chaînes (android.provider.TvContract.Channels
) et de programmes (android.provider.TvContract.Programs
). Ces tables sont remplies et accessibles par les entrées TV et les applications système telles que l'application TV. Ces tables comportent quatre types de champs:
- Affichage : les champs d'affichage contiennent des informations que les applications peuvent vouloir rendre visibles pour l'utilisateur, comme le nom (
COLUMN_DISPLAY_NAME
) ou le numéro (COLUMN_DISPLAY_NUMBER
) d'une chaîne, ou le titre du programme en cours de lecture. - Métadonnées:trois champs permettent d'identifier le contenu, conformément aux normes applicables, comme l'ID de flux de transport d'une chaîne (
COLUMN_TRANSPORT_STREAM_ID
), l'ID de réseau d'origine (COLUMN_ORIGINAL_NETWORK_ID
) et l'ID de service (COLUMN_SERVICE_ID
). - Données internes: champs destinés à l'utilisation personnalisée des entrées TV.
Certains champs, commeCOLUMN_INTERNAL_PROVIDER_DATA
, sont des champs BLOB personnalisables dans lesquels une entrée TV peut stocker des métadonnées arbitraires sur sa chaîne ou son programme. - Flag : les champs "Flag" indiquent si une chaîne doit être soumise à des restrictions de recherche, de navigation ou de visionnage. Cette valeur ne peut être définie qu'au niveau du canal. Tous les programmes s'appliquent au paramètre de la chaîne.
COLUMN_SEARCHABLE
: la restriction de la recherche à partir de certains canaux peut être obligatoire dans certaines régions.COLUMN_SEARCHABLE = 0
signifie que la chaîne ne doit pas apparaître dans les résultats de recherche.COLUMN_BROWSABLE
: visible uniquement par les applications système. Empêcher les applications de parcourir la chaîneCOLUMN_BROWSABLE = 0
signifie que le canal ne doit pas être inclus dans la liste des canaux.COLUMN_LOCKED
: visible uniquement par les applications système Empêcher le visionnage de la chaîne par des comptes non valides sans saisir de codeCOLUMN_LOCKED = 1
signifie que la chaîne doit être protégée par le contrôle parental.
Pour obtenir une liste plus exhaustive des champs, consultez android/frameworks/base/media/java/android/media/tv/TvContract.java
.
Autorisations et contrôle des accès
Tous les champs sont visibles par toute personne ayant accès à la ligne correspondante. Aucun champ n'est directement accessible aux utilisateurs. Ils ne voient que ce que l'application TV, les applications système ou les entrées TV affichent.
- Chaque ligne contient
PACKAGE_NAME
, le package (application) propriétaire de cette ligne, vérifié sur Query, Insert, Update via TvProvider.java. Une entrée TV ne peut accéder qu'aux informations qu'elle a écrites et est séparée des informations fournies par les autres entrées TV. - Autorisations de lecture et d'écriture via AndroidManifest.xml (nécessite le consentement de l'utilisateur) pour déterminer les canaux disponibles.
- Seules les applications
signatureOrSystem
peuvent acquérir l'autorisationACCESS_ALL_EPG_DATA
pour accéder à l'intégralité de la base de données.
Gestionnaire d'entrées TV
Le Gestionnaire d'entrée TV fournit une API système centrale au framework d'entrée Android TV global. Il arbitre les interactions entre les applications et les entrées TV, et fournit des fonctionnalités de contrôle parental. Les sessions TV Input Manager doivent être créées une à une avec les entrées TV. Le gestionnaire d'entrées TV permet d'accéder aux entrées TV installées afin que les applications puissent:
- Lister les entrées du téléviseur et vérifier leur état
- Créer des sessions et gérer les écouteurs
Pour les sessions, une entrée TV ne peut être réglée par l'application TV que sur les URI qu'elle a ajoutés à la base de données du fournisseur de TV, à l'exception des entrées TV en passthrough qui peuvent être réglées à l'aide de TvContract.buildChannelUriForPassthroughInput()
.
Le volume d'une entrée TV peut également être défini. Les entrées TV fournies et signées par le fabricant de l'appareil (applications signées) ou d'autres applications installées dans la partition du système auront accès à l'intégralité de la base de données du fournisseur de services TV. Cet accès peut être utilisé pour créer des applications permettant de parcourir et de rechercher dans toutes les chaînes et émissions de télévision disponibles.
Une application peut créer et enregistrer une TvInputCallback
avec la android.media.tv.TvInputManager
pour être rappelée en cas de modification de l'état d'une entrée TV, ou en cas d'ajout ou de suppression d'une entrée TV. Par exemple, une application TV peut réagir lorsqu'une entrée TV est déconnectée en l'affichant comme déconnectée et en empêchant sa sélection.
Le gestionnaire d'entrées TV fait abstraction de la communication entre l'application TV et les entrées TV. L'interface standard du Gestionnaire d'entrées TV et de l'entrée TV permet à plusieurs fabricants d'appareils de créer leurs propres applications TV, tout en aidant toutes les entrées TV tierces à fonctionner sur toutes les applications TV.
Entrées TV
Les entrées TV sont des applications Android dans le sens où elles disposent d'un fichier AndroidManifest.xml et sont installées (via Play, préinstallées ou téléchargées indépendamment). Android TV est compatible avec les applications système préinstallées, les applications signées par le fabricant de l'appareil et les entrées TV tierces.
Certaines entrées, comme l'entrée HDMI ou l'entrée du tuner intégré, ne peuvent être fournies que par le fabricant, car elles communiquent directement avec le matériel sous-jacent. D'autres, comme l'IPTV, le place-shifting et le décodeur externe, peuvent être fournis par des tiers sous forme d'APK sur le Google Play Store. Une fois téléchargée et installée, la nouvelle entrée peut être sélectionnée dans l'application TV.
Exemple d'entrée de passthrough
Dans cet exemple, l'entrée TV fournie par le fabricant de l'appareil est fiable et a un accès complet au fournisseur de TV. En tant qu'entrée TV passthrough, elle n'enregistre aucune chaîne ni aucun programme auprès du fournisseur de services TV. Pour obtenir l'URI utilisé pour référencer l'entrée de passthrough, utilisez la méthode utilitaire android.media.tv.TvContract
buildChannelUriForPassthroughInput(String inputId)
.
L'application TV communique avec le gestionnaire d'entrées TV pour accéder à l'entrée HDMI du téléviseur.
Exemple de tuner intégré
Dans cet exemple, l'entrée TV du tuner intégré fournie par le fabricant de l'appareil est fiable et dispose d'un accès complet au fournisseur de télévision.
Exemple d'entrée tierce
Dans cet exemple, l'entrée TV du décodeur externe est fournie par un tiers. Étant donné que cette entrée TV ne peut pas accéder directement au flux vidéo HDMI entrant, elle doit passer par le gestionnaire d'entrées TV et utiliser l'entrée TV HDMI fournie par le fabricant de l'appareil.
Via le gestionnaire d'entrées TV, l'entrée TV externe du décodeur peut communiquer avec l'entrée TV HDMI et lui demander de diffuser la vidéo sur HDMI1. L'entrée TV du décodeur peut donc contrôler le téléviseur, tandis que l'entrée TV HDMI fournie par le fabricant génère la vidéo.
Exemple Picture-in-picture (PIP)
Le schéma ci-dessus montre comment les boutons d'une télécommande sont transmis à une entrée TV spécifique pour l'affichage Picture-in-picture (PIP). Ces pressions sur les boutons sont interprétées par le pilote matériel fourni par le fabricant de l'appareil, qui convertit les codes de balayage matériels en codes de touche Android et les transmet aux fonctions pipeline d'entrée Android standard InputReader
et InputDispatcher
en tant que KeyEvents.
Ces événements déclenchent à leur tour des événements dans l'application TV si elle est active.
Seules les entrées TV du système peuvent recevoir InputEvents
, et uniquement si elles disposent de l'autorisation système RECEIVE_INPUT_EVENT
.
L'entrée TV est chargée de déterminer les InputEvents à consommer et doit permettre à l'application TV de gérer les touches qu'elle n'a pas besoin de consommer.
L'application TV est chargée de savoir quelle entrée TV système est active, c'est-à-dire sélectionnée par l'utilisateur, et de clarifier les KeyEvents
entrantes et de les acheminer vers la session de gestion des entrées TV appropriée, en appelant dispatchInputEvent()
pour transmettre l'événement à l'entrée TV associée.
Exemple d'entrée MHEG-5
Le diagramme suivant présente une vue plus détaillée de la manière dont les KeyEvents
sont acheminés via le TIF Android.
Il illustre le flux d'une application à bouton rouge, couramment utilisée en Europe pour permettre aux utilisateurs d'accéder à des applications interactives sur leurs téléviseurs. Une application peut être diffusée via ce flux de transport. Lorsque l'utilisateur clique sur le bouton, il permet aux utilisateurs d'interagir avec ces applications de diffusion. Par exemple, vous pouvez utiliser ces applications de diffusion pour accéder à des pages Web ou aux résultats sportifs associés.
Consultez la section Application Broadcast pour savoir comment les applications de diffusion interagissent avec l'application TV.
Dans cet exemple :
- L'application TV est active et reçoit toutes les touches.
KeyEvents
(par exemple, le bouton rouge) est transmis à l'entrée TV active en tant queInputEvents.
- L'entrée TV système s'intègre à la pile MHEG-5 et dispose de l'autorisation système
RECEIVE_INPUT_EVENT
. - À la réception d'un code clavier d'activation (par exemple, un bouton rouge), l'entrée TV active l'application de diffusion.
- L'entrée TV consomme
KeyEvents
en tant queInputEvents
, et l'application de diffusion est sélectionnée et gèreInputEvents
jusqu'à ce qu'elle soit fermée.
Remarque: Les entrées TV tierces ne reçoivent jamais de clés.
TV Input HAL
Le HAL d'entrée TV facilite le développement d'entrées TV pour accéder au matériel spécifique au téléviseur.
Comme pour les autres HAL Android, le HAL d'entrée TV (tv_input
) est disponible dans l'arborescence source AOSP, et le fournisseur développe son implémentation.
Remarque: À partir d'Android 14, l'interface HAL d'entrée TV est définie à l'aide d'AIDL.
Application TV
L'application TV du système présente les contenus TV en direct à l'utilisateur. Une application TV de référence (télévision en direct) est fournie avec la plate-forme Android. Elle peut être utilisée telle quelle, personnalisée, étendue ou remplacée par les fabricants d'appareils. Le code source est disponible dans le projet Android Open Source. Vous pouvez commencer à l'utiliser dans l'article Reference TV app (Application TV de référence).
Les fabricants d'appareils peuvent étendre leurs applications TV pour implémenter des fonctionnalités spécifiques au fabricant de l'appareil ou au pays, mais cela n'entre pas dans le champ d'application de la TIF ni de l'application TV de référence.
L'application TV du système doit au minimum gérer les tâches suivantes:
Installation et configuration
- Détecter automatiquement les entrées TV
- Autoriser les entrées TV à lancer la configuration de la chaîne
- Paramètres de contrôle parental
- Modifier les chaînes
Affichage
- Accéder à toutes les chaînes de télévision et naviguer dans celles-ci
- Accéder à la barre d'informations sur les programmes télévisés
- Afficher les données du guide électronique de programmes (EPG)
- Prendre en charge plusieurs pistes audio et de sous-titres
- Demander un code de contrôle parental
- Autoriser la superposition de l'UI de l'entrée TV pour la norme TV (HbbTV, etc.)
- Remplir les résultats de recherche pour les chaînes et les programmes TV
- Afficher les fiches de liaison d'applications
- Compatibilité avec les API de décalage temporel
- Gérer la fonctionnalité DVR et prendre en charge les API d'enregistrement TV
Cet ensemble de fonctionnalités sera élargi avec les nouvelles versions d'Android où les API TIF de la plate-forme seront étendues. CTS Verifier fournit la couverture des tests de compatibilité.
Prise en charge des entrées TV tierces
Android TV fournit des API pour les développeurs pour les entrées TV tierces, ce qui permet aux applications installées de diffuser des chaînes logicielles dans l'expérience de télévision en direct. Pour garantir une implémentation compatible sur les appareils Android, l'application TV du système a certaines responsabilités concernant la présentation des entrées et des chaînes TV tierces à l'utilisateur. L'application Live TV de référence fournit une implémentation compatible. Si vous remplacez l'application système TV, les fabricants d'appareils doivent s'assurer que leurs propres applications offrent une compatibilité similaire afin de répondre aux attentes des développeurs sur tous les appareils Android TV.
L'application TV du système doit afficher les entrées tierces avec le service de télévision en direct par défaut de l'appareil. Les API pour les développeurs permettent aux utilisateurs de trouver des chaînes (une fois installées) dans leur expérience TV standard.
La différenciation visuelle entre les chaînes intégrées et les chaînes tierces est autorisée, comme indiqué dans la section "Application TV" du CDD Android.
Les sections suivantes montrent comment l'application de télévision en direct répond aux exigences de la CDD.
Nouvelle configuration de chaîne
L'ajout de nouvelles entrées/chaînes tierces commence par la recherche et l'installation d'une entrée TV à partir d'une plate-forme de téléchargement d'applications, telle que Google Play.
Certaines entrées TV tierces ajoutent automatiquement des chaînes à la base de données TvProvider. Cependant, la plupart d'entre elles fournissent une activité de configuration pour permettre à l'utilisateur de configurer ses canaux, de fournir des informations de connexion et d'effectuer d'autres actions. L'application TV du système doit s'assurer que l'utilisateur peut activer cette activité de configuration. C'est pourquoi le CDD exige que les entrées tierces soient des actions de navigation minimales en dehors de l'application TV principale.
L'application de référence pour la télévision en direct fournit le menu "Sources de chaînes" pour accéder aux entrées.
De plus, une fiche de notification s'affiche en haut du menu de l'application TV après l'installation d'un nouveau TvInput pour rediriger l'utilisateur directement vers la configuration:
Si l'utilisateur prend une mesure via la notification, il peut choisir de configurer ses sources, comme illustré dans la figure 10.
Consultez Définir votre service d'entrée TV pour connaître les attentes des développeurs dans ce domaine.
Personnaliser la liste des chaînes
Les fabricants d'appareils peuvent fournir une UI pour masquer certaines chaînes et permettre aux utilisateurs de gérer leurs propres EPG. La télévision en direct inclut cette fonctionnalité.
EPG
Les développeurs de saisie tiers doivent être sûrs que les utilisateurs peuvent facilement accéder à leurs chaînes lors d'une utilisation générale, sur tous les appareils Android TV compatibles.
Les chaînes provenant d'entrées tierces doivent être présentées dans l'EPG de l'expérience TV en direct standard de l'appareil. Vous pouvez utiliser une séparation visuelle ou des catégories distinctes pour les chaînes tierces (consultez la section "Application TV" du CDD Android). L'essentiel est que les utilisateurs puissent trouver les chaînes qu'ils ont installées.
Recherche
Les fabricants doivent implémenter l'application TV pour inclure les résultats de recherche pour les requêtes de recherche globales afin de garantir la meilleure expérience utilisateur possible. La télévision en direct fournit une implémentation (voir ) qui fournit des résultats à partir d'entrées tierces (obligatoires pour la compatibilité de la plate-forme) ainsi que d'entrées intégrées.
Décalage temporel
Pour les appareils équipés d'Android 6.0 ou version ultérieure, l'application TV doit être compatible avec les API de décalage temporel du framework Android. En outre, les fabricants doivent implémenter des commandes de lecture dans l'application TV, qui permettent aux utilisateurs de mettre en pause, de reprendre, de faire un retour arrière et une avance rapide dans la lecture.
Pour les entrées TV compatibles avec le décalage temporel, l'application TV doit afficher les commandes de lecture.
DVR
Pour les appareils équipés d'Android 7.0 ou version ultérieure, l'application TV doit prendre en charge les API d'enregistrement TV du framework Android afin de prendre en charge, de répertorier et de lire les programmes enregistrés.
Cela permet aux fabricants d'appareils de brancher leurs sous-systèmes DVR sur le TIF et de réduire considérablement l'effort d'intégration nécessaire pour activer ou intégrer la fonctionnalité DVR sur un appareil TV. Il permet également aux tiers de fournir des systèmes DVR après-vente pouvant être branchés à un appareil Android TV.
En plus d'enregistrer des contenus en direct, l'application TV gère également les conflits de ressources. Par exemple, si l'appareil est équipé de deux tuners, il peut enregistrer deux programmes en même temps. Si l'utilisateur demande à enregistrer trois émissions, l'application TV doit gérer le conflit et afficher une notification ou demander à l'utilisateur de planifier une priorité pour ces demandes.
Les applications TV peuvent également implémenter une logique plus sophistiquée, par exemple demander à un utilisateur s'il souhaite enregistrer tous les futurs épisodes d'une série lorsqu'il demande à enregistrer un épisode.
Consultez le diagramme suivant pour découvrir une implémentation possible du DVR sur Android TV.
- Le service d'entrée TV indique à l'application TV le nombre de tuners disponibles afin qu'elle puisse gérer les conflits de ressources potentiels.
- L'application TV reçoit une requête lancée par l'utilisateur pour enregistrer un programme télévisé.
- L'application TV stocke le calendrier d'enregistrement dans sa base de données interne.
- Lorsque l'heure d'enregistrement est arrivée, l'application TV transmet une requête pour se régler sur la chaîne associée à l'enregistrement.
- Le service d'entrée TV reçoit cette requête, indique s'il existe des ressources appropriées ou non, puis se règle sur la chaîne.
- L'application TV transmet ensuite une demande de démarrage de l'enregistrement au Gestionnaire d'entrées TV.
- Le service d'entrée TV reçoit cette requête et commence l'enregistrement.
- Le service d'entrée TV stocke les données vidéo réelles dans son espace de stockage, qui peut être un espace de stockage externe ou cloud.
- Lorsque l'enregistrement doit être arrêté, l'application TV transmet la requête d'arrêt de l'enregistrement au gestionnaire d'entrée TV.
- Une fois que le service d'entrée TV a reçu la requête, il arrête l'enregistrement et ajoute les métadonnées associées au fournisseur de services TV afin que l'application TV puisse afficher l'enregistrement aux utilisateurs sur demande.
Pour en savoir plus sur l'implémentation des fonctionnalités d'enregistrement dans votre service d'entrée TV, consultez cet article sur l'enregistrement TV.
Ressources utiles
- Le CDD Android et les API de développement documentées constituent les références définitives.
- CTS Verifier utilise les API dans le cadre du programme de tests de compatibilité. L'exécution de cette opération sur la télévision en direct peut être utile pour afficher l'EPG, la recherche, le contrôle parental et d'autres exigences dans le contexte des entrées tierces.
- Consultez Définir votre service d'entrée TV pour connaître les attentes des développeurs dans ce domaine.
Contrôle parental
Le contrôle parental permet à un utilisateur de bloquer les chaînes et les programmes indésirables, mais de contourner le blocage en saisissant un code PIN.
La responsabilité de la fonctionnalité de contrôle parental est partagée entre l'application TV, le service TV Input Manager, le fournisseur de TV et l'entrée TV.
Le contrôle parental est obligatoire et est couvert par CTS Verifier.
Un certain nombre de pays ont défini des systèmes de classification que les entrées TV peuvent utiliser via l' API TVContentRating. De plus, les entrées TV peuvent enregistrer leurs propres systèmes de classification personnalisés, comme le montre le test du vérificateur CTS, qui introduit une classification "fausse". Dans les pays où un système de classification standard existe, les fabricants d'appareils sont encouragés à combiner le contrôle parental du TV Input Framework avec tout autre mécanisme qu'ils peuvent inclure.
Fournisseur de services TV
Chaque ligne de chaîne comporte un champ COLUMN_LOCKED
qui permet de verrouiller la lecture de chaînes spécifiques sans saisir de code PIN. Le champ de programme COLUMN_CONTENT_RATING
est destiné à l'affichage et n'est pas utilisé pour appliquer le contrôle parental.
Gestionnaire d'entrées TV
Le gestionnaire d'entrées TV stocke tous les TvContentRating
bloqués et répond à isRatingBlocked()
pour indiquer si le contenu avec la classification donnée doit être bloqué.
Entrée TV
L'entrée TV vérifie si le contenu actuel doit être bloqué en appelant isRatingBlocked()
sur le gestionnaire d'entrée TV lorsque la classification du contenu affiché a changé (lors d'un changement de programme ou de chaîne) ou que les paramètres de contrôle parental ont changé (sur ACTION_BLOCKED_RATINGS_CHANGED
et ACTION_PARENTAL_CONTROLS_ENABLED_CHANGED
). Si le contenu doit être bloqué, l'entrée TV désactive l'audio et la vidéo, et informe l'application TV que le contenu actuel est bloqué en appelant notifyContentBlocked(TvContentRating)
. Si le contenu ne doit pas être bloqué, l'entrée TV active l'audio et la vidéo, et informe l'application TV que le contenu actuel est autorisé en appelant notifyContentAllowed()
.
Application TV
Pour respecter les API de contrôle parental et créer une plate-forme compatible, l'application TV du système doit permettre aux utilisateurs de gérer le contrôle parental, y compris pour les classifications personnalisées enregistrées par des applications spécifiques.
L'application TV affiche une UI de code PIN lorsqu'elle est avertie par une entrée TV que le contenu actuel est bloqué ou lorsque l'utilisateur tente de regarder une chaîne bloquée.
L'appli TV ne stocke pas directement les paramètres du contrôle parental. Lorsque l'utilisateur modifie les paramètres de contrôle parental, chaque TvContentRating
bloquée est stockée par le Gestionnaire d'entrées TV, et les chaînes bloquées sont stockées par le fournisseur de services TV.
L'application TV doit déclarer l'autorisation android.permission.MODIFY_PARENTAL_CONTROLS
pour pouvoir modifier les paramètres du contrôle parental.
Les fabricants d'appareils sont invités à:
- Exécutez le test de contrôle parental du vérificateur CTS sur l'application de télévision en direct de référence pour une démonstration des exigences de compatibilité.
- Utiliser l'application TV en direct comme référence pour leur propre application TV: consultez en particulier la source ContentRatingsManager et RatingSystemsFragment, et découvrez comment elles gèrent les classifications personnalisées.
HDMI-CEC
Le HDMI-CEC permet à un appareil de contrôler un autre, ce qui permet de contrôler plusieurs appareils d'un home cinéma avec une seule télécommande. Android TV l'utilise pour accélérer la configuration et permettre un contrôle à distance sur différentes entrées TV via l'application TV centrale. Par exemple, elle peut changer d'entrée, allumer ou éteindre des appareils, etc.
Le TIF Android implémente le HDMI-CEC en tant que service de contrôle HDMI afin que les fabricants d'appareils n'aient qu'à développer des pilotes de bas niveau qui interagissent avec le HAL Android TV léger, en ignorant la logique métier plus complexe. En fournissant une implémentation standard, Android cherche à atténuer les problèmes de compatibilité en réduisant les implémentations fragmentées et la prise en charge sélective des fonctionnalités. Le service de contrôle HDMI utilise les services Android existants, y compris l'entrée et l'alimentation.
Cela signifie que les implémentations HDMI-CEC existantes devront être repensées pour interagir avec le TIF Android. Nous vous recommandons que la plate-forme matérielle contienne un microprocesseur pour recevoir l'alimentation CEC et d'autres commandes.
- Le bus CEC reçoit une commande de la source actuellement active pour passer à une autre source.
- Le pilote transmet la commande au HAL HDMI-CEC.
- Le HAL informe tous les
ActiveSourceChangeListeners
. - Le service de contrôle HDMI est informé de la modification de la source via
ActiveSourceChangeListener
. - Le service TV Input Manager génère un intent permettant à l'application TV de changer de source.
- L'application TV crée ensuite une session de gestion des entrées TV pour l'entrée TV sur laquelle elle passe et appelle
setMain
sur cette session. - La session du gestionnaire d'entrées TV transmet ces informations à l'entrée HDMI du téléviseur.
- L'entrée HDMI du téléviseur demande à définir la surface de la bande latérale.
- Le service TV Input Manager génère une commande de contrôle de routage correspondante à l'aide du service de contrôle HDMI lorsque la surface est définie.
Consignes d'intégration TV
Application de diffusion
Étant donné que chaque pays a des exigences spécifiques à la diffusion (MHEG, Teletext, HbbTV, etc.), les fabricants doivent fournir leurs propres solutions pour l'application de diffusion, par exemple:
- MHEG: pile native
- Télétexte: pile native
- HbbTV: solution HbbTV de Vewd Software
Dans la version Android L, Android TV s'attend à ce que les fabricants d'appareils utilisent des intégrateurs système ou les solutions Android pour les piles TV régionales, transmettent la surface aux piles logicielles TV ou transmettent le code clé nécessaire pour interagir avec les anciennes piles.
Voici comment l'application de diffusion et l'application TV interagissent:
- L'application TV est active et reçoit toutes les touches.
- L'application TV transmet les touches (par exemple, le bouton rouge) à l'appareil d'entrée TV.
- Le périphérique d'entrée TV s'intègre en interne à l'ancienne pile TV.
- À la réception d'un code clavier d'activation (par exemple, un bouton rouge), le périphérique d'entrée TV active les applications de diffusion.
- Une application de diffusion est mise en avant dans l'application TV et gère les actions des utilisateurs.
Pour la recherche vocale/les recommandations, l'application de diffusion peut prendre en charge la recherche dans l'application pour la recherche vocale.