
L'Android TV Input Framework (TIF) simplifie la diffusion de contenu en direct sur Android TV. L'Android TIF 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 TV en direct via les métadonnées publiées par l'entrée TV.
Le cadre ne cherche pas à mettre en œuvre des normes de télévision ou des exigences régionales, mais permet aux fabricants d'appareils de respecter plus facilement les normes régionales de diffusion de télévision numérique sans nouvelle mise en œuvre. 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 d'Android TV Input Framework comprend 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 TV Input Manager.
Le cadre d'entrée TV comprend :
- Fournisseur de télévision (
com.android.providers.tv.TvProvider
) : une base de données de chaînes, de programmes et d'autorisations associées - TV App (
com.android.tv.TvActivity
) : l'application qui gère l'interaction de l'utilisateur - TV Input Manager (
android.media.tv.TvInputManager
) : permet aux entrées TV de communiquer avec l'application TV - TV Input : une application représentant des tuners physiques ou virtuels et des ports d'entrée
- TV Input HAL (module
tv_input
) : une 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 une fois implémenté. - Contrôle Parental : la technologie pour permettre le blocage de chaînes et de programmes
- HDMI-CEC : la technologie pour permettre le contrôle à distance de divers appareils via HDMI
- Tuner Framework : un cadre pour l'entrée TV du tuner intégré
- MediaCas : un framework pour l'accès conditionnel
- Tuner Resource Manager : un service pour gérer les ressources matérielles pour l'entrée TV, MediaCas et l'entrée Tuner intégré
Ces composants sont traités en détail ci-dessous. Consultez le schéma suivant pour une vue détaillée de l’architecture Android TV Input Framework.

Couler
Voici comment s’exerce l’architecture :
- 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. Le gestionnaire d'entrées TV identifie l'état des entrées TV pour l'application TV. Voir TV Input Manager ci-dessous pour plus de détails sur ces limitations.
Autorisations
- Seules les entrées TV
signatureOrSystem
et l'application TV ont un accès complet à la base de données du fournisseur TV et sont capables de recevoir des KeyEvents. - Seules les entrées TV du système peuvent accéder au HAL d’entrée TV via le service TV Input Manager. Les entrées TV sont accessibles individuellement via les sessions TV Input Manager.
- Les entrées TV tierces ont un accès verrouillé par paquet à la base de données du fournisseur de télévision et peuvent LIRE/ÉCRIRE uniquement sur les lignes de paquet correspondantes.
- Les entrées TV tierces peuvent afficher leur propre contenu ou le contenu des entrées TV passthrough du fabricant de l'appareil, comme HDMI1. Ils ne peuvent pas afficher le contenu des entrées TV non-passthrough, comme un tuner IPTV intégré.
- L'autorisation
TV_INPUT_HARDWARE
pour une application matérielle d'entrée TV signale au service TV Input Manager de notifier 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 matérielle d'entrée TV de prendre en charge plusieurs entrées TV par service d'entrée TV, ainsi que de pouvoir ajouter et supprimer dynamiquement ses entrées TV prises en charge.
Fournisseur de télévision
La base de données du fournisseur TV stocke les chaînes et les programmes des entrées TV. Le fournisseur 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 programmes qu'elle a fournis et il lui est interdit d'accéder aux chaînes et programmes des autres entrées TV.
Le fournisseur de télévision mappe en interne le « genre de diffusion » au « genre canonique ». Les entrées TV sont chargées de renseigner le « genre de diffusion » avec la valeur dans la norme de diffusion sous-jacente, et 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 (ce qui signifie « Sports »), l'entrée TV remplira le « genre de diffusion » avec la chaîne « Sports » et le fournisseur de télévision remplira le champ « genre canonique » avec la valeur mappée android.provider.TvContract.Genres.SPORTS
.
Consultez le schéma ci-dessous pour une vue détaillée du fournisseur de télévision.

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 télévision.
Les entrées TV Passthrough ne stockent pas les chaînes et les programmes.
En plus des champs standard pour les chaînes et les programmes, la base de données du fournisseur 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 peuvent être fournies dans un tampon de protocole ou sous une autre forme. Un champ consultable est disponible pour rendre certaines chaînes indisponibles dans la recherche (par exemple pour répondre aux exigences spécifiques du pays en matière de protection du contenu).
Exemples de champs de base de données
Le fournisseur de télévision prend en charge les données structurées dans les tables de chaînes ( android.provider.TvContract.Channels
) et de programmes ( android.provider.TvContract.Programs
). Ces tableaux sont renseignés 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 souhaiter rendre visibles à l'utilisateur, comme le nom d'une chaîne (
COLUMN_DISPLAY_NAME
) ou un numéro (COLUMN_DISPLAY_NUMBER
), ou le titre du programme visionné. - Métadonnées : il existe trois champs pour identifier le contenu, selon les normes pertinentes, comme l'ID de flux de transport d'un canal (
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. - Indicateur : les champs d'indicateur indiquent si une chaîne doit être restreinte en matière de recherche, de navigation ou de visualisation. Ceci ne peut être réglé qu'au niveau du canal. Tous les programmes s'en remettent au réglage de la chaîne.
-
COLUMN_SEARCHABLE
: restreindre la recherche à partir de certaines chaînes peut être une exigence dans certaines régions.COLUMN_SEARCHABLE = 0
signifie que la chaîne ne doit pas être exposée dans les résultats de recherche. -
COLUMN_BROWSABLE
: Visible uniquement par les applications système. Empêcher la navigation de la chaîne par les applications.COLUMN_BROWSABLE = 0
signifie que la chaîne ne doit pas être incluse dans la liste des chaînes. -
COLUMN_LOCKED
: Visible uniquement par les applications système. Empêcher la chaîne d'être visionnée par des comptes invalides sans saisir le code PIN.COLUMN_LOCKED = 1
signifie que la chaîne doit être protégée par le contrôle parental.
Pour une liste plus exhaustive des champs, voir android/frameworks/base/media/java/android/media/tv/TvContract.java
Autorisations et contrôle d'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 voient uniquement ce que l'application TV, les applications système ou les entrées TV font surface.
- Chaque ligne contient
PACKAGE_NAME
, le package (application) qui possède cette ligne, coché sur Requête, Insertion, Mise à jour via TvProvider.java. Une entrée TV ne peut accéder qu'aux informations qu'elle a écrites et est isolée des informations fournies par d'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ée TV
Le TV Input Manager fournit une API système centrale au cadre global d'entrée Android TV. Il arbitre l'interaction entre les applications et les entrées TV et fournit une fonctionnalité de contrôle parental. Les sessions TV Input Manager doivent être créées individuellement avec les entrées TV. Le gestionnaire d'entrée TV permet d'accéder aux entrées TV installées afin que les applications puissent :
- Répertoriez les entrées TV et vérifiez leur état
- Créer des sessions et gérer les auditeurs
Pour les sessions, une entrée TV peut être réglée par l'application TV uniquement sur les URI qu'elle a ajoutés à la base de données du fournisseur TV, à l'exception des entrées TV passthrough qui peuvent être réglées à l'aide de TvContract.buildChannelUriForPassthroughInput()
. Une entrée TV peut également avoir son volume réglé. Les entrées TV fournies et signées par le fabricant de l'appareil (applications de signature) ou d'autres applications installées dans la partition système auront accès à l'intégralité de la base de données du fournisseur TV. Cet accès peut être utilisé pour créer des applications permettant de parcourir et de rechercher parmi toutes les chaînes et programmes de télévision disponibles.
Une application peut créer et enregistrer un TvInputCallback
avec android.media.tv.TvInputManager
pour être rappelé en cas de changement d'état d'une entrée TV ou lors de l'ajout ou de la 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 TV Input Manager résume la communication entre l'application TV et les entrées TV. L'interface standard de TV Input Manager et TV Input 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 ont un fichier AndroidManifest.xml et sont installées (via Play, préinstallées ou téléchargées). Android TV prend en charge 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 tuner intégrée, ne peuvent être fournies que par le fabricant car elles communiquent directement avec le matériel sous-jacent. D'autres, tels que l'IPTV, le déplacement et le STB externe, peuvent être fournis par des tiers sous forme d'APK sur 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 Passthrough

Dans cet exemple, l'entrée TV fournie par le fabricant de l'appareil est fiable et dispose d'un accès complet au fournisseur TV. En tant qu'entrée TV passthrough, elle n'enregistre aucune chaîne ou programme auprès du fournisseur de télévision. Pour obtenir l'URI utilisé pour référencer l'entrée relais, utilisez la méthode utilitaire android.media.tv.TvContract
buildChannelUriForPassthroughInput(String inputId)
. L'application TV communique avec le gestionnaire d'entrée TV pour atteindre l'entrée TV HDMI.
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 de saisie tierce

Dans cet exemple, l’entrée TV STB 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ée TV et utiliser l'entrée TV HDMI fournie par le fabricant de l'appareil.
Grâce au gestionnaire d'entrée TV, l'entrée TV STB externe peut parler avec l'entrée TV HDMI et lui demander d'afficher la vidéo sur HDMI1. Ainsi, l'entrée TV STB peut contrôler le téléviseur tandis que l'entrée TV HDMI fournie par le fabricant restitue la vidéo.
Exemple d'image dans l'image (PIP)

Le diagramme ci-dessus montre comment les boutons d'une télécommande sont transmis à une entrée TV spécifique pour l'affichage d'image dans l'image (PIP). Ces pressions sur les boutons sont interprétées par le pilote matériel fourni par le fabricant de l'appareil, convertissant les scancodes matériels en codes clés Android et les transmettant aux fonctions de pipeline d'entrée Android standard InputReader
et InputDispatcher
en tant que KeyEvents . Ceux-ci déclenchent à leur tour des événements sur l'application TV si celle-ci est au point.
Seules les entrées TV du système sont éligibles pour 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 clés qu'elle n'a pas besoin de consommer.
L'application TV est chargée de savoir quel système d'entrée TV est actif, c'est-à-dire sélectionné par l'utilisateur, et de lever l'ambiguïté KeyEvents
entrants et de les acheminer vers la bonne session TV Input Manager, en appelant dispatchInputEvent()
pour transmettre l'événement à l'entrée TV associée. .
Exemple d'entrée MHEG-5
Le diagramme suivant montre une vue plus détaillée de la manière dont KeyEvents
sont acheminés via le TIF Android.

Il décrit le flux d'une application à bouton rouge, courante en Europe pour permettre aux utilisateurs d'accéder à des applications interactives sur leur téléviseur. Une application peut être livrée via ce flux de transport. Lorsque vous cliquez 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 à des résultats sportifs associés.
Consultez la section Application de diffusion pour découvrir comment les applications de diffusion interagissent avec l'application TV.
Dans cet exemple :
- L'application TV est au point et reçoit toutes les clés.
-
KeyEvents
(par exemple le bouton rouge) sont transmis à l'entrée TV active en tantInputEvents.
- L'entrée TV du système s'intègre à la pile MHEG-5 et dispose de l'autorisation système
RECEIVE_INPUT_EVENT
. - À la réception du code clé d'activation (par exemple le bouton rouge), l'entrée TV active l'application de diffusion.
- L'entrée TV consomme
KeyEvents
en tantInputEvents
et l'application de diffusion est au centre et gèreInputEvents
jusqu'à leur suppression.
Remarque : les entrées TV tierces ne reçoivent jamais de clés.
Entrée TV HAL
Le TV Input HAL 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 de AIDL .
Application TV
L'application TV du système présente du contenu TV en direct à l'utilisateur. Une application TV de référence (Live TV) est fournie avec la plate-forme Android, qui 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 et vous pouvez commencer à l'utiliser dans l'article sur l' application Reference TV .
Les fabricants d'appareils peuvent étendre leurs applications TV pour implémenter des fonctionnalités spécifiques au fabricant de l'appareil ou à un pays, mais cela n'entre pas dans le champ d'application de TIF ou de l'application TV de référence.
Au minimum, l'application TV du système doit gérer les tâches suivantes :
Installation et configuration
- Détection automatique des entrées TV
- Laisser les entrées TV lancer la configuration des chaînes
- Contrôler les paramètres parentaux
- Modifier les chaînes
Affichage
- Accédez et parcourez toutes les chaînes de télévision
- Accéder à la barre d’informations sur les programmes TV
- Afficher les données du guide de programmation électronique (EPG)
- Prend en charge plusieurs pistes audio et sous-titres
- Fournir un défi de code PIN de contrôle parental
- Autoriser la superposition de l'interface utilisateur de l'entrée TV pour la norme TV (HbbTV, etc.)
- Renseigner les résultats de recherche pour les chaînes et programmes de télévision
- Afficher les cartes de liaison des applications
- Prise en charge des API de décalage temporel
- Gérer la fonctionnalité DVR et prendre en charge les API d'enregistrement TV
Cet ensemble de fonctionnalités augmentera avec les nouvelles versions d'Android dans lesquelles 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 de développement pour les entrées TV tierces, permettant aux applications installées de diffuser des chaînes logicielles dans l'expérience TV en direct. Pour garantir la mise en œuvre d'un appareil Android compatible, 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 ; En cas de remplacement de l'application TV du système, 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 faire apparaître les entrées tierces aux côtés du service de télévision en direct par défaut de l'appareil. La promesse des API de développement est que les utilisateurs pourront trouver des chaînes (une fois installées) dans le cadre de 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 défini dans la section TV App du CDD Android.
Les sections suivantes montrent comment l'application Live TV répond aux exigences CDD.
Configuration d'une nouvelle chaîne
L'ajout de nouvelles entrées/chaînes tierces commence lorsque l'utilisateur recherche et installe une entrée TV à partir d'un magasin d'applications, tel que Google Play.
Certaines entrées TV tierces ajoutent automatiquement des chaînes à la base de données TvProvider. Cependant, la plupart proposeront une activité de configuration pour permettre à l'utilisateur de configurer ses chaînes, de fournir des informations de connexion et d'autres actions. L'application TV du système doit garantir que l'utilisateur peut activer cette activité de configuration, c'est pourquoi le CDD nécessite des entrées tierces pour des actions de navigation minimales en dehors de l'application TV principale.
L'application de référence Live TV fournit le menu Sources de chaînes pour accéder aux entrées.




De plus, une carte de notification s'affiche en haut du menu TV App après l'installation d'un nouveau TvInput, pour diriger l'utilisateur directement vers la configuration :

Si l'utilisateur agit via la notification, il peut choisir de configurer ses sources comme le montre la figure 10.
Voir 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 interface utilisateur 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 d'entrées tiers doivent avoir l'assurance 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 le cadre de l’EPG d’expérience TV en direct standard de l’appareil. Une séparation visuelle ou des catégories distinctes pour les chaînes tierces peuvent être utilisées (voir 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 mettre en œuvre l'application TV pour inclure les résultats de recherche pour les demandes de recherche globales afin de garantir la meilleure expérience utilisateur. Live TV fournit une implémentation (voir qui fournit des résultats à partir d'entrées tierces (requises pour la compatibilité de la plate-forme) ainsi que des entrées intégrées.
Décalage temporel
Pour les appareils fonctionnant sous Android 6.0 et versions ultérieures, l'application TV doit prendre en charge les API de décalage temporel du cadre Android. De plus, les fabricants doivent implémenter des commandes de lecture dans l'application TV, qui permettent aux utilisateurs de mettre en pause, de reprendre, de rembobiner et d'avancer rapidement la lecture.
Pour les entrées TV prenant en charge le décalage temporel, l'application TV doit afficher les commandes de lecture.

Enregistreur vidéo numérique
Pour les appareils fonctionnant sous Android 7.0 et versions ultérieures, l'application TV doit prendre en charge les API d'enregistrement TV du cadre Android pour prendre en charge, répertorier et lire les programmes enregistrés.
Cela permet aux fabricants d'appareils de connecter leurs sous-systèmes DVR à TIF et de réduire considérablement les efforts d'intégration nécessaires pour activer ou intégrer la fonctionnalité DVR sur un appareil TV. Il permet également à des tiers de fournir des systèmes DVR de rechange pouvant être branchés sur un appareil Android TV.
En plus d'enregistrer du contenu en direct, l'application TV gère également les conflits de ressources. Par exemple, si l’appareil dispose de deux tuners, il peut enregistrer deux programmes en même temps. Si l'utilisateur demande à en enregistrer trois, l'application TV doit gérer le conflit et doit soit afficher une notification, soit demander à l'utilisateur de planifier une priorité pour ces demandes.
Les applications TV peuvent également mettre en œuvre une logique plus sophistiquée, comme 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 une vue d’une éventuelle implémentation DVR dans Android TV.

- Le service d'entrée TV indique à l'application TV combien de tuners sont disponibles afin que l'application TV puisse gérer d'éventuels conflits de ressources.
- L'application TV reçoit une demande lancée par l'utilisateur pour enregistrer un programme TV.
- L'application TV stocke le programme d'enregistrement dans sa base de données interne.
- Lorsqu'il est temps d'enregistrer, l'application TV transmet une demande pour syntoniser la chaîne associée à l'enregistrement.
- Le service d'entrée TV reçoit cette demande, répond en indiquant s'il existe ou non des ressources appropriées et syntonise la chaîne.
- Ensuite, l'application TV transmet une demande de démarrage de l'enregistrement au TV Input Manager.
- Le service d'entrée TV reçoit cette demande et démarre l'enregistrement.
- Le service d'entrée TV stocke les données vidéo réelles dans son stockage, qui peut être un stockage externe ou un stockage cloud.
- Lorsqu'il est temps de terminer l'enregistrement, l'application TV transmet la demande d'arrêt de l'enregistrement au TV Input Manager.
- Une fois que le service d'entrée TV reçoit la demande, il arrête l'enregistrement et ajoute ses métadonnées associées au fournisseur TV afin que l'application TV puisse montrer l'enregistrement aux utilisateurs sur demande.
Pour plus d'informations sur la mise en œuvre 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 sont les références définitives.
- CTS Verifier exerce les API dans le cadre du programme de tests de compatibilité. L'exécuter sur Live TV peut être un moyen utile de voir l'EPG, la recherche, le contrôle parental et d'autres exigences dans le contexte des entrées tierces.
- Voir 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 programmes indésirables, mais de contourner le blocage en entrant 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 TV et TV Input.
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 TV Inputs peut utiliser via l' API TVContentRating . De plus, les entrées TV peuvent enregistrer leurs propres systèmes de classification personnalisés, comme le démontre le test CTS Verifier, qui introduit une « fausse » classification. Pour les pays où il existe un système de classification standard, les fabricants d'appareils sont encouragés à combiner le contrôle parental du cadre d'entrée TV avec tout autre mécanisme qu'ils peuvent inclure.
Fournisseur de télévision
Chaque ligne de chaîne comporte un champ COLUMN_LOCKED
qui est utilisé pour empêcher la visualisation de chaînes spécifiques sans entrer 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ée TV
Le TV Input Manager stocke chaque TvContentRating
bloqué 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 honorer les API de contrôle parental et donc créer une plate-forme compatible, l'application TV du système doit fournir aux utilisateurs un moyen de gérer le contrôle parental, y compris pour toutes les classifications personnalisées enregistrées par des applications spécifiques.
L'application TV affiche une interface utilisateur de code PIN lorsqu'elle est informée par une entrée TV que le contenu actuel est bloqué ou lorsque l'utilisateur tente de visualiser une chaîne bloquée.
L'application TV ne stocke pas directement les paramètres de contrôle parental. Lorsque l'utilisateur modifie les paramètres de contrôle parental, chaque TvContentRating
bloqué est stocké par TV Input Manager et les chaînes bloquées sont stockées par le fournisseur de télévision.
L'application TV doit déclarer l'autorisation android.permission.MODIFY_PARENTAL_CONTROLS
afin de modifier les paramètres de contrôle parental.
Les fabricants d’appareils sont encouragés à :
- Effectuez le test de contrôle parental CTS Verifier par rapport à l'application Live TV de référence pour une démonstration des exigences de compatibilité.
- Utilisez l'application Live TV comme référence pour leur propre application TV : consultez en particulier les sources ContentRatingsManager et RatingSystemsFragment , et comment ils gèrent les évaluations personnalisées.
HDMI-CEC
HDMI-CEC permet à un appareil d'en contrôler un autre, permettant ainsi à une seule télécommande de contrôler plusieurs appareils dans un home cinéma. Il est utilisé par Android TV pour accélérer la configuration et permettre un contrôle à distance de diverses entrées TV via l'application TV centrale. Par exemple, il peut commuter des entrées, allumer ou éteindre des appareils, etc.
Android TIF implémente HDMI-CEC en tant que service de contrôle HDMI, de sorte que les fabricants d'appareils n'ont qu'à développer des pilotes de bas niveau qui interagissent avec le léger Android TV HAL, en ignorant une 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 interopérer avec Android TIF. Nous recommandons que la plate-forme matérielle contienne un microprocesseur pour recevoir la mise sous tension 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 HDMI-CEC HAL.
- Le HAL informe tous
ActiveSourceChangeListeners
. - Le service de contrôle HDMI est informé du changement de source via
ActiveSourceChangeListener
. - Le service TV Input Manager génère une intention pour que l'application TV change de source.
- L'application TV crée ensuite une session TV Input Manager pour l'entrée TV vers laquelle basculer et appelle
setMain
sur cette session. - La session TV Input Manager transmet ces informations à l’entrée HDMI TV.
- L'entrée HDMI TV demande de 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 vers le service de contrôle HDMI lorsque la surface est définie.
Directives d'intégration TV
Application de diffusion
Étant donné que chaque pays a des exigences spécifiques en matière de diffusion (MHEG, Télétexte, 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 de systèmes 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 piles héritées.
Voici comment l'application de diffusion et l'application TV interagissent :
- L'application TV est au point et reçoit toutes les clés.
- L'application TV transmet les clés (par exemple le bouton rouge) au périphérique d'entrée TV.
- Le périphérique d'entrée TV s'intègre en interne à la pile TV existante.
- À la réception d'un code clé d'activation (par exemple, bouton rouge), le périphérique d'entrée TV active les applications de diffusion.
- Une application de diffusion prend le focus dans l'application TV et gère les actions de l'utilisateur.
Pour la recherche/recommandation vocale, l'application de diffusion peut prendre en charge la recherche dans l'application pour la recherche vocale.
,
L'Android TV Input Framework (TIF) simplifie la diffusion de contenu en direct sur Android TV. L'Android TIF 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 TV en direct via les métadonnées publiées par l'entrée TV.
Le cadre ne cherche pas à mettre en œuvre des normes de télévision ou des exigences régionales, mais permet aux fabricants d'appareils de respecter plus facilement les normes régionales de diffusion de télévision numérique sans nouvelle mise en œuvre. 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 d'Android TV Input Framework comprend 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 TV Input Manager.
Le cadre d'entrée TV comprend :
- Fournisseur de télévision (
com.android.providers.tv.TvProvider
) : une base de données de chaînes, de programmes et d'autorisations associées - TV App (
com.android.tv.TvActivity
) : l'application qui gère l'interaction de l'utilisateur - TV Input Manager (
android.media.tv.TvInputManager
) : permet aux entrées TV de communiquer avec l'application TV - TV Input : une application représentant des tuners physiques ou virtuels et des ports d'entrée
- TV Input HAL (module
tv_input
) : une 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 une fois implémenté. - Contrôle Parental : la technologie pour permettre le blocage de chaînes et de programmes
- HDMI-CEC : la technologie pour permettre le contrôle à distance de divers appareils via HDMI
- Tuner Framework : un cadre pour l'entrée TV du tuner intégré
- MediaCas : un framework pour l'accès conditionnel
- Tuner Resource Manager : un service pour gérer les ressources matérielles pour l'entrée TV, MediaCas et l'entrée Tuner intégré
Ces composants sont traités en détail ci-dessous. Consultez le schéma suivant pour une vue détaillée de l’architecture Android TV Input Framework.

Couler
Voici comment s’exerce l’architecture :
- 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. Le gestionnaire d'entrées TV identifie l'état des entrées TV pour l'application TV. Voir TV Input Manager ci-dessous pour plus de détails sur ces limitations.
Autorisations
- Seules les entrées TV
signatureOrSystem
et l'application TV ont un accès complet à la base de données du fournisseur TV et sont capables de recevoir des KeyEvents. - Seules les entrées TV du système peuvent accéder au HAL d’entrée TV via le service TV Input Manager. Les entrées TV sont accessibles individuellement via les sessions TV Input Manager.
- Les entrées TV tierces ont un accès verrouillé par paquet à la base de données du fournisseur de télévision et peuvent LIRE/ÉCRIRE uniquement sur les lignes de paquet correspondantes.
- Les entrées TV tierces peuvent afficher leur propre contenu ou le contenu des entrées TV passthrough du fabricant de l'appareil, comme HDMI1. Ils ne peuvent pas afficher le contenu des entrées TV non-passthrough, comme un tuner IPTV intégré.
- L'autorisation
TV_INPUT_HARDWARE
pour une application matérielle d'entrée TV signale au service TV Input Manager de notifier 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 matérielle d'entrée TV de prendre en charge plusieurs entrées TV par service d'entrée TV, ainsi que de pouvoir ajouter et supprimer dynamiquement ses entrées TV prises en charge.
Fournisseur de télévision
La base de données du fournisseur TV stocke les chaînes et les programmes des entrées TV. Le fournisseur de télévision publie et gère également les autorisations associées afin que les entrées de télévision 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'il a fournis et il est interdit d'accéder aux chaînes et programmes de tout autre téléviseur.
Le fournisseur de télévision cartose le "genre de diffusion" au "genre canonique" en interne. Les entrées de télévision sont responsables de remplir le "genre de diffusion" avec la valeur dans la norme de diffusion sous-jacente, et le champ "Genre canonique" sera automatiquement rempli avec le genre associé correct d' android.provider.TvContract.Genres
. Par exemple, avec ATSC A / 65 standard de diffusion et le programme avec Genre 0x25 (qui signifie «sport»), la contribution du téléviseur remplira le «genre de diffusion» avec la chaîne «Sports» et le fournisseur de télévision remplira le domaine du «genre canonique» avec La valeur mappée android.provider.TvContract.Genres.SPORTS
.
Voir le diagramme ci-dessous pour une vue détaillée du fournisseur de télévision.

Seules les applications de la partition Système privilégiée peuvent lire la base de données du fournisseur de télévision.
Les entrées TV à pashrough ne stockent pas les chaînes et les programmes.
En plus des champs standard pour les chaînes et les programmes, la base de données du fournisseur de télévision propose également un champ de type blob, COLUMN_INTERNAL_PROVIDER_DATA
, dans chaque tableau 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 peuvent être fournies dans un tampon de protocole ou un autre formulaire. Un champ consultable est disponible pour rendre certains canaux indisponibles dans la recherche (comme pour répondre aux exigences spécifiques au pays pour la protection de contenu).
Exemples de champs de base de données
Le fournisseur de télévision prend en charge les données structurées dans Channel ( android.provider.TvContract.Channels
) et Program ( android.provider.TvContract.Programs
). Ces tableaux sont remplis et accessibles par les entrées TV et les applications système comme l'application TV. Ces tables ont 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 d'une chaîne (
COLUMN_DISPLAY_NAME
) ou le numéro (COLUMN_DISPLAY_NUMBER
), ou le titre du programme visualisé. - Metadata: il existe trois champs pour identifier le contenu, selon les normes pertinentes, 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 le service ID (COLUMN_SERVICE_ID
). - Données internes : champs pour l'utilisation personnalisée des entrées TV.
Certains champs, commeCOLUMN_INTERNAL_PROVIDER_DATA
, sont des champs Blob personnalisables où une entrée TV peut stocker des métadonnées arbitraires sur leur chaîne ou leur programme. - Flag: Les champs de drapeau représentent si un canal doit être limité de la recherche, de la navigation ou de la visualisation. Cela ne peut être défini qu'au niveau du canal. Tous les programmes se remettent au paramètre sur la chaîne.
-
COLUMN_SEARCHABLE
: La restriction de la recherche à partir de certains canaux peut être une exigence dans certaines régions.COLUMN_SEARCHABLE = 0
signifie que le canal ne doit pas être exposé dans les résultats de recherche. -
COLUMN_BROWSABLE
: visible uniquement pour les applications système. Restriger le canal par être parcouru par les applications.COLUMN_BROWSABLE = 0
signifie que le canal ne doit pas être inclus dans la liste des canaux. -
COLUMN_LOCKED
: visible uniquement pour les applications système. Restriger le canal de la visualisation par des comptes non valides sans saisir le code PIN.COLUMN_LOCKED = 1
signifie que le canal doit être protégé par le contrôle parental.
Pour une liste plus exhaustive des champs, voir android/frameworks/base/media/java/android/media/tv/TvContract.java
Autorisation et contrôle d'accès
Tous les champs sont visibles pour 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 surface.
- Chaque ligne a
PACKAGE_NAME
, le package (app) qui possède cette ligne, vérifié sur la requête, insérer, mettre à jour via tvprovider.java. Une entrée TV peut accéder uniquement aux informations qu'elle a écrites et est bouclée à partir des informations fournies par d'autres entrées TV. - Lire, écrivez des autorisations via AndroidManifest.xml (nécessite un consentement des utilisateurs) pour déterminer les canaux disponibles.
- Seules les applications
signatureOrSystem
peuvent acquérir l'autorisationACCESS_ALL_EPG_DATA
pour accéder à toute la base de données.
Gestionnaire d'entrée de télévision
Le gestionnaire de saisie TV fournit une API système centrale au framework d'entrée Android TV global. Il arbitre l'interaction entre les applications et les entrées TV et fournit des fonctionnalités de contrôle parental. Les séances de gestionnaire des entrées TV doivent être créées individuelles avec des entrées TV. Le gestionnaire de saisies TV permet d'accéder aux entrées TV installées afin que les applications puissent:
- Liste des entrées TV et vérifiez leur statut
- Créer des séances et gérer les auditeurs
Pour les sessions, une entrée TV peut être réglée par l'application TV uniquement à URI, il a ajouté à la base de données du fournisseur de télévision, à l'exception des entrées TV Passthrough qui peuvent être réglées à l'utilisation TvContract.buildChannelUriForPassthroughInput()
. Une entrée TV peut également avoir son ensemble de volumes. Les entrées de télévision fournies et signées par le fabricant de périphériques (Signature Apps) ou d'autres applications installées dans la partition système auront accès à la base de données du fournisseur de télévision. Cet accès peut être utilisé pour construire des applications pour parcourir et rechercher sur toutes les chaînes et programmes de télévision disponibles.
Une application peut créer et enregistrer un TvInputCallback
avec android.media.tv.TvInputManager
pour être rappelé sur le changement d'état d'une entrée TV ou sur l'addition ou la 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 TV Entrée Manager résume la communication entre l'application TV et les entrées TV. L'interface standard de TV Inting Manager et des entrées 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 de télévision
Les entrées de télévision sont des applications Android dans le sens où elles ont un AndroidManifest.xml et sont installées (via Play, préinstallé ou entendus). Android TV prend en charge les applications système préinstallées, les applications signées par le fabricant d'appareils 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 parlent directement avec le matériel sous-jacent. D'autres, tels que IPTV, le décalage de lieu et le STB externe, peuvent être fournis par des tiers en tant qu'APK sur Google Play Store. Une fois téléchargé et installé, la nouvelle entrée peut être sélectionnée dans l'application TV.
Exemple d'entrée de passe

Dans cet exemple, les entrées TV fournies par le fabricant de l'appareil sont fiables et ont un accès complet au fournisseur de télévision. En tant qu'entrée TV à passhrough, il n'enregistre aucune chaîne ou émission auprès du fournisseur de télévision. Pour obtenir l'uri utilisé pour référencer l'entrée de passthrough, utilisez la méthode d'utilité android.media.tv.TvContract
buildChannelUriForPassthroughInput(String inputId)
. L'application TV communique avec le gestionnaire de saisies TV pour atteindre l'entrée TV HDMI.
Exemple de tuner intégré

Dans cet exemple, l'entrée de télévision du tuner intégré fournie par le fabricant de l'appareil est fiable et a un accès complet au fournisseur de télévision.
Exemple d'entrée tiers

Dans cet exemple, l'entrée externe STB TV est fournie par un tiers. Étant donné que cette entrée TV ne peut pas accéder directement au flux vidéo HDMI à venir, il doit passer par le gestionnaire d'entrée TV et utiliser l'entrée TV HDMI fournie par la fabrication de l'appareil.
Grâce au gestionnaire de saisie TV, l'entrée externe STB TV peut parler avec l'entrée TV HDMI et lui demander d'afficher la vidéo sur HDMI1. Ainsi, l'entrée STB TV peut contrôler le téléviseur tandis que l'entrée TV HDMI fournie par le fabricant rend la vidéo.
Exemple d'image dans l'image (PIP)

Le diagramme ci-dessus montre comment les boutons d'une télécommande sont passés à une entrée TV spécifique pour l'image dans l'affichage de l'image (PIP). Ces pressions sur les bouton sont interprétées par le pilote matériel fourni par le fabricant de l'appareil, convertissant les scancodes matériels en Android KeyCodes et les transmettant au Pipeline Android standard InputReader
et Fonctions InputDispatcher
en tant que Devents de Key . Ceux-ci déclenchent à leur tour les événements sur l'application TV s'il est mis au point.
Seules les entrées de télévision système sont éligibles pour recevoir InputEvents
, et uniquement s'ils ont l'autorisation système RECEIVE_INPUT_EVENT
. L'entrée du téléviseur est responsable de déterminer les inputés à consommer et devrait permettre à l'application TV de gérer les clés qu'il n'a pas besoin de consommer.
L'application TV est chargée de savoir quelle entrée TV système est active, ce qui signifie sélectionné par l'utilisateur, et de désambiguïter KeyEvents
entrants et de les réaliser vers la session de gestionnaire de saisie de télévision correcte, appelant dispatchInputEvent()
pour passer l'événement à l'entrée TV associée .
Exemple d'entrée MHEG-5
Le diagramme suivant montre une vue plus détaillée de la façon dont KeyEvents
est acheminé via Android TIF.

Il décrit le flux d'une application de bouton rouge, commune en Europe pour permettre aux utilisateurs d'accéder aux applications interactives sur leurs téléviseurs. Une application peut être livrée sur ce flux de transport. Lorsque le bouton est cliqué, il permet aux utilisateurs d'interagir avec ces applications de diffusion. Par exemple, vous pouvez utiliser ces applications de diffusion pour accéder aux pages Web ou aux scores sportifs connexes.
Voir la section d'application de diffusion pour savoir comment les applications de diffusion interagissent avec l'application TV.
Dans cet exemple :
- L'application TV est au point et reçoit toutes les clés.
-
KeyEvents
(par exemple le bouton rouge) est transmis à l'entrée TV active en tantInputEvents.
- L'entrée System TV s'intègre à la pile MHEG-5 et a l'autorisation système
RECEIVE_INPUT_EVENT
. - Lors de la réception de Keycode d'activation (par exemple le bouton rouge), l'entrée TV active l'application Broadcast.
- La contribution TV consomme
KeyEvents
commeInputEvents
et l'application Broadcast est la mise au point et gèreInputEvents
jusqu'à rejeter.
Remarque : les entrées de télévision tierces ne reçoivent jamais de clés.
Entrée de télévision HAL
Les entrées TV aident le développement des entrées TV pour accéder au matériel spécifique au téléviseur. Comme pour les autres Hals Android, le TV INTRING HAL ( tv_input
) est disponible dans l'arborescence source AOSP et le fournisseur développe son implémentation.
Remarque : En commençant par Android 14, l'interface HAL de saisie du téléviseur est définie à l'aide de l'AIDL .
Application TV
L'application System TV présente du contenu TV en direct à l'utilisateur. Une application de télévision de référence (TV en direct) est fournie aux côtés de la plate-forme Android, qui peut être utilisée tel quel, personnalisée, étendue ou remplacée par des fabricants d'appareils. Le code source est disponible dans le projet Open Source Android, et vous pouvez démarrer avec lui dans l'article de référence TV de l'application .
Les fabricants d'appareils peuvent étendre leurs applications TV pour implémenter le fabricant d'appareils ou les fonctionnalités spécifiques au pays, mais ce n'est pas dans la portée de TIF ou de l'application TV de référence.
Au minimum, l'application System TV doit gérer les tâches suivantes:
Configuration et configuration
- Entrées de télévision en détection automatique
- Laissez les entrées TV initier la configuration de la chaîne
- Contrôler les paramètres parentaux
- Modifier les canaux
Affichage
- Accédez et naviguez toutes les chaînes de télévision
- Bar d'information du programme d'accès à la télévision
- Afficher les données du Guide de programmation électronique (EPG)
- Prise en charge de plusieurs pistes audio et sous-titre
- Fournir un défi de broche de contrôle parental
- Autoriser la superposition de l'interface utilisateur des entrées TV pour la norme TV (HBBTV, etc.)
- Remplir les résultats de recherche pour les chaînes et les programmes de télévision
- Afficher les cartes de liaison de l'application
- APIS SUPPORTE
- Gérer la fonctionnalité DVR et prendre en charge les API d'enregistrement TV
Cet ensemble de fonctionnalités augmentera en ligne avec les nouvelles versions Android où les API TIF de plate-forme sont étendues. CTS Verifier offre la couverture du test de compatibilité.
Prise en charge des entrées de télévision tierces
Android TV fournit des API développeurs pour les entrées TV tierces, permettant aux applications installées de fournir des chaînes logicielles dans l'expérience télévisée en direct. Pour assurer une implémentation compatible de périphériques Android, l'application System TV a certaines responsabilités concernant la mise en surface des entrées et des chaînes de télévision tierces à l'utilisateur. L'application de référence en direct TV fournit une implémentation compatible; Si le remplacement de l'application System TV, les fabricants d'appareils doivent s'assurer que leurs propres applications offrent une compatibilité similaire, pour répondre aux attentes des développeurs sur tous les appareils TV Android.
L'application System TV doit faire surface des entrées tierces aux côtés du service de télévision en direct par défaut de l'appareil. La promesse des API du développeur est que les utilisateurs pourront trouver des chaînes (une fois installées) dans leur expérience télévisée standard.
La différenciation visuelle entre les canaux intégrés et les chaînes tierces est autorisée, comme défini dans la section d'application TV de l'Android CDD.
Les sections suivantes montrent comment l'application TV en direct répond aux exigences CDD.
Configuration de la nouvelle chaîne
L'ajout de nouvelles entrées / chaînes tiers commence avec la recherche et l'installation d'une entrée de télévision dans un magasin d'applications, comme Google Play.
Certaines entrées TV tierces ajoutent automatiquement des chaînes à la base de données TVProvider. Cependant, la plupart fourniront une activité de configuration pour permettre à l'utilisateur de configurer leurs canaux, de fournir des détails de connexion et d'autres actions. L'application System TV 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 loin de l'application TV principale.
L'application Reference Live TV fournit le menu Sources de chaîne pour accéder aux entrées.




De plus, une carte de notification est affichée en haut du menu de l'application TV après l'installation d'un nouveau TVInput, pour amener l'utilisateur directement à la configuration:

Si l'utilisateur prend des mesures via la notification, il peut sélectionner pour configurer ses sources comme le montre la figure 10.
Voir Définir votre service de saisie TV pour les attentes des développeurs dans ce domaine.
Personnaliser la liste des canaux
Les fabricants d'appareils peuvent fournir une interface utilisateur pour masquer certains canaux et permettre aux utilisateurs de gérer leurs propres EPG. La télévision en direct comprend cette installation.


EPG
Les développeurs d'entrée tiers doivent avoir confiance que les utilisateurs peuvent facilement accéder à leurs chaînes pendant l'utilisation générale, sur tous les appareils TV Android compatibles.
Les canaux provenant des entrées tiers doivent être présentés dans le cadre de l'expérience TV en direct standard de l'appareil EPG. La séparation visuelle ou les catégories distinctes pour les chaînes tierces peuvent être utilisées (voir la section d'application TV de l'Android CDD) - ce qui est la clé que les utilisateurs peuvent trouver les canaux qu'ils ont installés.
Recherche
Les fabricants doivent implémenter l'application TV pour inclure les résultats de recherche pour les demandes de recherche globales afin d'assurer la meilleure expérience utilisateur. Live TV fournit une implémentation (voir qui fournit les résultats des entrées tierces (requises pour la compatibilité de la plate-forme) ainsi que les entrées intégrées.
Temps change
Pour les appareils sur Android 6.0 et supérieur, l'application TV doit prendre en charge les API de changement de temps Android Framework. De plus, les fabricants doivent implémenter des contrôles de lecture dans l'application TV, qui permettent aux utilisateurs de faire une pause, de reprendre, de rembobiner et de faire avancer rapidement la lecture.
Pour les entrées TV qui prennent en charge le décalage du temps, l'application TV doit afficher les contrôles de lecture.

Enregistreur vidéo numérique
Pour les appareils sur Android 7.0 et plus, l'application TV doit prendre en charge les API d'enregistrement TV Android Framework, pour prendre en charge, répertorier et lire des programmes enregistrés.
Cela permet aux fabricants d'appareils de brancher leurs sous-systèmes DVR dans TIF et de réduire considérablement l'effort d'intégration qu'il faut pour activer ou intégrer les fonctionnalités DVR sur un appareil TV. Il permet également aux tiers de fournir des systèmes DVR de rechange qui peuvent être branchés sur un appareil TV Android.
En plus d'enregistrer du contenu en direct, l'application TV gère également les conflits de ressources. Par exemple, si l'appareil a deux tuners, il peut enregistrer deux programmes en même temps. Si l'utilisateur demande d'enregistrer trois, l'application TV doit gérer le conflit et doit soit faire surface une notification ou demander que l'utilisateur planifie une priorité pour ces demandes.
Les applications TV peuvent également implémenter une logique plus sophistiquée comme demander à un utilisateur s'il souhaite enregistrer tous les futurs épisodes d'une série lorsqu'il demande d'enregistrer un épisode.
Voir le diagramme suivant pour une vue sur une éventuelle implémentation DVR dans Android TV.

- Le service de saisie TV indique à l'application TV combien de tuners sont disponibles afin que l'application télévisée puisse gérer un éventuel conflit de ressources.
- L'application TV reçoit une demande initié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.
- Lorsqu'il est temps d'enregistrer, l'application TV transmet une demande à régler la chaîne associée à l'enregistrement.
- Le service de saisie TV reçoit cette demande, répond s'il existe ou non des ressources appropriées et des morceaux à la chaîne.
- Ensuite, l'application TV transmet une demande pour commencer l'enregistrement au gestionnaire de saisie TV.
- Le service de saisie TV reçoit cette demande et commence à enregistrer.
- Le service de saisie TV stocke les données vidéo réelles dans son stockage, qui peut être un stockage externe ou un stockage cloud.
- Lorsqu'il est temps de terminer l'enregistrement, l'application TV transmet la demande d'enregistrement d'arrêt au gestionnaire de saisie TV.
- Une fois que le service de saisie TV reçoit la demande, il arrête l'enregistrement et ajoute ses métadonnées associées au fournisseur de télévision afin que l'application TV puisse afficher l'enregistrement aux utilisateurs à la demande.
Pour plus d'informations sur la mise en œuvre des fonctionnalités d'enregistrement dans votre service de saisie TV, consultez cet article d'enregistrement TV .
Ressources utiles
- Le CDD Android et les API développeurs documentés sont les références définitives.
- CTS Vérificateur exerce les API dans le cadre du programme de test de compatibilité. L'exécution de cela contre la télévision en direct peut être un moyen utile de voir l'EPG, la recherche, le contrôle parental et d'autres exigences dans le contexte des entrées tierces.
- Voir Définir votre service de saisie TV pour les attentes des développeurs dans ce domaine.
Contrôle parental
Le contrôle parental permet à un bloc d'utilisateur des canaux et des programmes indésirables, mais contourne le bloc en entrant dans un code PIN.
La responsabilité des fonctionnalités de contrôle parental est partagée entre l'application TV, le service de gestionnaire de saisie TV, le fournisseur de télévision et les entrées TV.
Le contrôle parental est obligatoire et est couvert par le vérificateur de CTS.
Un certain nombre de pays ont défini des systèmes de notation que les entrées TV peuvent utiliser via l' API TVContentator . De plus, les entrées TV peuvent enregistrer leurs propres systèmes de notation personnalisés comme démontré par le test CTS Verifier, qui introduit une «fausse» note. Pour les pays où un système de notation standard existe, les fabricants d'appareils sont encouragés à combiner le contrôle parental du cadre des entrées TV avec tout autre mécanisme qu'ils peuvent inclure.
Fournisseur de télévision
Chaque ligne de canal a un champ COLUMN_LOCKED
qui est utilisé pour verrouiller les canaux spécifiques à partir de la visualisation sans entrer un 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ée de télévision
Le gestionnaire de saisie de télévision stocke chaque TvContentRating
bloqué et répond à isRatingBlocked()
pour conseiller si le contenu avec la note donnée doit être bloqué.
Entrée de télévision
L'entrée télévisée vérifie si le contenu actuel doit être bloqué en appelant isRatingBlocked()
sur le gestionnaire d'entrée de télévision lorsque la note du contenu affiché a changé (sur l'émission ou la modification de la chaîne), ou 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 honorer les API de contrôle parental et donc créer une plate-forme compatible, l'application System TV doit fournir aux utilisateurs un moyen de gérer le contrôle parental, y compris pour toutes les notes personnalisées enregistrées par des applications spécifiques.
L'application TV montre une interface utilisateur de code PIN lorsqu'elle est notifiée par une entrée TV que le contenu actuel est bloqué ou lorsque l'utilisateur tente d'afficher un canal bloqué.
L'application TV ne stocke pas directement les paramètres de contrôle parental. Lorsque l'utilisateur modifie les paramètres de contrôle parental, chaque TvContentRating
bloqué est stocké par le gestionnaire d'entrée de télévision et les chaînes bloquées sont stockées par le fournisseur de télévision.
L'application TV doit déclarer l'autorisation android.permission.MODIFY_PARENTAL_CONTROLS
afin de modifier les paramètres de contrôle parental.
Les fabricants d'appareils sont encouragés à:
- Exercez le test des contrôles parentaux du vérificateur CTS contre l'application de télévision en direct de référence pour une démonstration des exigences de compatibilité.
- Utilisez l'application TV en direct comme référence pour leur propre application TV: Voir en particulier ContentRatingsManager et RatingSystemsFragment Source, et comment ils gèrent les notes personnalisées.
HDMI-CEC
HDMI-CEC permet à un appareil d'en contrôler un autre, permettant ainsi à une seule télécommande de contrôler plusieurs appareils dans un théâtre Home. Il est utilisé par Android TV pour accélérer la configuration et permettre un contrôle distant sur diverses entrées TV via l'application Central TV. Par exemple, il peut changer les entrées, les périphériques d'alimentation ou de baisse, etc.
L'Android TIF implémente HDMI-CEC en tant que service de contrôle HDMI afin que les fabricants d'appareils aient simplement besoin de développer des pilotes de bas niveau qui interagissent avec le HAL Android TV léger, sautant une 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 redessinées pour interagir avec Android TIF. Nous recommandons que la plate-forme matérielle contienne un microprocesseur pour recevoir CEC Power On et d'autres commandes.

- Le bus CEC reçoit une commande de la source actuellement active pour passer à une source différente.
- Le conducteur passe la commande au HDMI-CEC HAL.
- Le HAL avise tous
ActiveSourceChangeListeners
. - Le service de contrôle HDMI est informé du changement de source via
ActiveSourceChangeListener
. - Le service TV Entrée Gestionnaire génère une intention pour l'application TV pour changer la source.
- L'application TV crée ensuite une session de gestionnaire de saisie TV pour que l'entrée TV est commutée et appelle
setMain
sur cette session. - La session TV Entrée Manager transmet ces informations sur l'entrée TV HDMI.
- Le HDMI TV d'entrée demande pour définir la surface de la bande latérale.
- Le service TV Inting Manager génère une commande de contrôle de routage correspondante vers le service de contrôle HDMI lorsque la surface est définie.
Lignes directrices d'intégration TV
Application de diffusion
Étant donné que chaque pays a des exigences spécifiques à la diffusion (MHEG, Teletext, HBBTV et plus), les fabricants devraient fournir leurs propres solutions pour l'application de diffusion, par exemple:
- Mheg: pile native
- Télélet: pile native
- HBBTV: solution HBBTV à partir du logiciel VEWD
Dans la version Android L, Android TV s'attend à ce que les fabricants d'appareils utilisent des intégrateurs de systèmes ou les solutions Android pour les piles de télévision régionales, passent la surface aux piles de logiciels de télévision ou passent le code de clé nécessaire pour interagir avec les piles héritées.
Voici comment l'application de diffusion et l'application TV interagissent:
- L'application télévisée est au point, recevant toutes les clés.
- L'application TV transmet les touches (par exemple bouton rouge) sur le périphérique d'entrée TV.
- Le périphérique d'entrée TV s'intègre en interne à la pile TV Legacy.
- Lors de la réception d'un kicode d'activation (bouton rouge par exemple), le périphérique d'entrée TV active les applications de diffusion.
- Une application de diffusion se concentre sur l'application TV et gère les actions des utilisateurs.
Pour la recherche / recommandation vocale, l'application de diffusion peut prendre en charge la recherche dans l'application pour la recherche vocale.