Google is committed to advancing racial equity for Black communities. See how.
Cette page a été traduite par l'API Cloud Translation.
Switch to English

Cadre d'entrée TV

Icône Android TV HAL

L'Android TV Input Framework (TIF) simplifie la diffusion de contenu en direct sur Android TV. 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 des 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 se conformer plus facilement aux normes de diffusion de télévision numérique régionales sans réimplémentation. La documentation de cette section peut également être utile aux développeurs d'applications tiers 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 de tuner intégrées et 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 cadre d'entrée TV comprend:

  • TV Provider ( com.android.providers.tv.TvProvider ): une base de données de chaînes, programmes et 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
  • Entrée TV: une application représentant des tuners et des ports d'entrée physiques ou virtuels
  • 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 lorsqu'elles sont implémentées
  • Contrôle Parental: la technologie permettant le blocage des chaînes et des programmes
  • HDMI-CEC: la technologie pour permettre le contrôle à distance de divers appareils via HDMI
  • Tuner Framework: un framework pour l'entrée TV Built-in-Tuner
  • MediaCas: un cadre pour l'accès conditionnel
  • Tuner Resource Manager: un service pour gérer la ressource matérielle pour l'entrée TV, MediaCas et l'entrée Built-in-Tuner

Ces composants sont traités en détail ci-dessous. Consultez le diagramme suivant pour une vue détaillée de l'architecture du Framework d'entrée Android TV.

Vue d'ensemble de l'architecture Android TIF
Figure 1. Architecture du framework d'entrée Android TV (TIF)

Couler

Voici comment s'exerce l'architecture:

  1. L'utilisateur voit et interagit avec l'application TV, une application système qui ne peut pas être remplacée par une application tierce.
  2. L'application TV affiche le contenu AV de l'entrée TV.
  3. L'application TV ne peut pas parler directement avec les entrées TV. Le gestionnaire d'entrée TV identifie l'état des entrées TV pour l'application TV. Voir Gestionnaire d'entrée TV 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 peuvent recevoir des KeyEvents.
  • Seules les entrées TV du système peuvent accéder à l'entrée TV HAL via le service TV Input Manager. Les entrées TV sont accessibles de manière individuelle via les sessions TV Input Manager.
  • Les entrées TV tierces ont un accès verrouillé à la base de données du fournisseur TV et peuvent LIRE / ÉCRIRE uniquement sur les lignes de package correspondantes.
  • Les entrées TV tierces peuvent afficher leur propre contenu ou le contenu des entrées TV relais d'un fabricant de périphérique, comme HDMI1. Ils ne peuvent pas afficher le contenu des entrées TV non relais, comme un tuner intégré ou IPTV.
  • TV_INPUT_HARDWARE autorisation TV_INPUT_HARDWARE pour une application d'entrée TV matérielle, signale au service TV Input Manager de notifier le 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 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 TV Provider 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 est interdit d'accéder aux chaînes et programmes des autres entrées TV.

Le fournisseur de télévision associe le «genre de diffusion» au «genre canonique» en interne. Les entrées TV sont chargées de renseigner "genre de diffusion" avec la valeur de 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 le programme avec le genre 0x25 (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 .

Voir le schéma ci-dessous pour une vue détaillée du fournisseur de télévision.

Fournisseur Android TV
Figure 2. Fournisseur Android TV

Seules les applications de la partition système privilégiée peuvent lire l'intégralité de la base de données du fournisseur TV.

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 syntoniseur associé, et peuvent être fournies dans un tampon de protocole ou sous 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 au 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 canal ( android.provider.TvContract.Channels ) et de programme ( android.provider.TvContract.Programs ). Ces tableaux sont remplis et accessibles par les entrées TV et les applications système telles que l'application TV. Ces tableaux 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 le numéro ( COLUMN_DISPLAY_NUMBER ), ou le titre du programme en cours de visualisation.
  • 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, comme COLUMN_INTERNAL_PROVIDER_DATA , sont des champs BLOB personnalisables dans lesquels une entrée TV peut stocker des métadonnées arbitraires sur leur chaîne ou programme.
  • Indicateur: les champs d'indicateur indiquent si une chaîne doit être interdite de recherche, de navigation ou de visualisation. Cela ne peut être réglé qu'au niveau du canal. Tous les programmes se réfèrent au réglage sur la chaîne.
    • COLUMN_SEARCHABLE : restreindre la recherche à partir de certaines chaînes peut être une obligation 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 par les applications système uniquement. Empêcher la navigation sur les chaînes 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 pour les applications système uniquement. Empêcher la chaîne d'être vue par des comptes non valides sans entrer 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 ne voient que la surface de l'application TV, des applications système ou des entrées TV.

  • Chaque ligne a PACKAGE_NAME , le package (application) qui possède cette ligne, vérifié sur Query, Insert, Update via TvProvider.java. Une entrée TV peut accéder uniquement aux informations qu'elle a écrites et est isolée des informations fournies par d'autres entrées TV.
  • LIRE, ÉCRIRE les autorisations via AndroidManifest.xml (nécessite le consentement de l'utilisateur) pour déterminer les canaux disponibles.
  • Seules les applications signatureOrSystem peuvent acquérir l'autorisation ACCESS_ALL_EPG_DATA pour accéder à l'ensemble de la base de données.

Gestionnaire d'entrée TV

Le gestionnaire d'entrée TV fournit une API système centrale à la structure d'entrée globale d'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 écouteurs

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 de télévision, à 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'ensemble de la base de données du fournisseur TV. Cet accès peut être utilisé pour créer des applications pour parcourir et rechercher parmi toutes les chaînes de télévision et programmes disponibles.

Une application peut créer et enregistrer un TvInputCallback avec android.media.tv.TvInputManager pour être rappelé lors du 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 gestionnaire d'entrée TV fait abstraction de 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 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 l'IPTV, le transfert de place 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

Entrée du système Android TV
Figure 3. Entrée du système Android TV

Dans cet exemple, l'entrée TV fournie par le fabricant de l'appareil est approuvée et dispose d'un accès complet au fournisseur de télévision. En tant qu'entrée TV relais, elle n'enregistre aucune chaîne ni aucun 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 de l'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é

Entrée tuner intégrée Android TV
Figure 4. Entrée du tuner intégré Android TV

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

Exemple d'entrée tierce

Entrée tierce Android TV
Figure 5. Entrée tierce Android TV

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.

Via le 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 rend la vidéo.

Exemple d'image dans l'image (PIP)

KeyEvents Android TV
Figure 6. KeyEvents Android TV

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 d'image dans l'image (PIP). Ces pressions sur les boutons sont interprétées par le pilote matériel fourni par le fabricant du périphérique, convertissant les codes d'analyse matériels en codes clés Android et les transmettant aux fonctions de pipeline d'entrée Android standard InputReader et InputDispatcher tant que KeyEvents . Ceux-ci déclenchent à leur tour des événements sur l'application TV si elle est mise au point.

Seules les entrées TV du système sont éligibles pour recevoir des InputEvents , et uniquement si elles disposent de l' RECEIVE_INPUT_EVENT système RECEIVE_INPUT_EVENT . L'entrée TV est chargée de déterminer les événements d'entrée à consommer et doit permettre à l'application TV de gérer les touches qu'elle n'a pas besoin de consommer.

L'application TV est responsable de savoir quelle entrée TV système est active, c'est-à-dire sélectionnée par l'utilisateur, et de KeyEvents l' KeyEvents des KeyEvents entrants et de les acheminer vers la session appropriée du gestionnaire d'entrée TV, 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 façon dont les KeyEvents sont acheminés via le TIF Android.

Exemple de bouton rouge Android TV
Figure 7. Exemple de bouton rouge d'Android TV

Il décrit le flux d'une application bouton rouge, courante en Europe pour permettre aux utilisateurs d'accéder à des applications interactives sur leurs téléviseurs. 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.

Voir la section application de diffusion pour savoir comment diffuser applications interagissent avec l'application TV.

Dans cet exemple:

  1. L'application TV est au point et reçoit toutes les clés.
  2. KeyEvents (par exemple le bouton rouge) est transmis à l'entrée TV active en tant InputEvents. entrée InputEvents.
  3. L'entrée TV du système s'intègre à la pile MHEG-5 et dispose de l' RECEIVE_INPUT_EVENT système RECEIVE_INPUT_EVENT .
  4. Lors de la réception du code d'activation (par exemple, bouton rouge), l'entrée TV active l'application de diffusion.
  5. L'entrée TV consomme des KeyEvents comme InputEvents et l'application de diffusion est le focus et gère les InputEvents jusqu'à ce InputEvents soit rejetée.

Remarque : les entrées TV tierces ne reçoivent jamais de clés.

Entrée TV HAL

L'entrée TV HAL facilite le développement d'entrées TV pour accéder au matériel TV spécifique. Comme pour les autres HAL Android, le HAL d'entrée TV ( tv_input ) est disponible dans l'arborescence des sources AOSP et le fournisseur développe son implémentation.

Application TV

L'application TV système présente le 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 Open Source Android et vous pouvez vous en servir dans l'article de l' application Reference TV .

Les fabricants d'appareils peuvent étendre leurs applications TV pour implémenter des fonctionnalités spécifiques au fabricant ou au 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 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

Visualisation

  • 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)
  • Prise en charge de plusieurs pistes audio et de sous-titres
  • Fournir un défi PIN de contrôle parental
  • Autoriser la superposition de l'interface utilisateur d'entrée TV pour la norme TV (HbbTV, etc.)
  • Remplir les résultats de recherche pour les chaînes de télévision et les programmes
  • Afficher les cartes d'association d'applications
  • Prise en charge des API de décalage du temps
  • Gérer la fonctionnalité DVR et prendre en charge les API d'enregistrement TV

Cet ensemble de fonctionnalités augmentera en fonction des nouvelles versions d'Android où les API TIF de la plate-forme sont é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éveloppeur pour les entrées TV tierces, permettant aux applications installées de fournir des chaînes logicielles dans l'expérience de télévision en direct. Pour garantir une implémentation d'appareil Android compatible, l'application TV du système a certaines responsabilités concernant la mise à disposition d'entrées et de chaînes TV tierces à l'utilisateur. L'application de référence Live TV fournit une implémentation compatible; en cas de remplacement de l'application TV 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 système doit afficher des entrées tierces à côté 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 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 Application TV du CDD Android.

Les sections suivantes montrent comment l'application Live TV répond aux exigences CDD.

Nouvelle configuration de chaîne

L'ajout de nouvelles entrées / canaux tiers commence par la recherche et l'installation d'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 fourniront une activité de configuration pour permettre à l'utilisateur de configurer ses canaux, de fournir des informations de connexion et 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 nécessite des entrées tierces comme des actions de navigation minimales loin de l'application TV principale.

L'application de référence TV en direct fournit le menu Sources des chaînes pour accéder aux entrées.

Aller aux paramètres
Figure 8. Allez dans Paramètres .

Accédez à la source de la chaîne dans les paramètres
Figure 9. Accédez à Sources de chaînes dans Paramètres.

Sélectionnez votre source dans la liste.
Figure 10. Sélectionnez votre source dans la liste.

Ajouter des chaînes de votre source
Figure 11. Ajoutez des chaînes à partir de votre source.

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

Une notification indiquant de nouvelles sources de chaînes est disponible.
Figure 12. Une notification indiquant que de nouvelles sources de canaux sont disponibles.

Si l'utilisateur agit via la notification, il peut choisir de configurer ses sources comme illustré à la figure 10.

Voir Définir votre service d'entrée TV pour les attentes des développeurs dans ce domaine.

Personnalisez la liste des chaînes

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.

Ouvrez la liste des chaînes dans Paramètres.
Figure 13. Ouvrez la liste des chaînes dans Paramètres .

Personnalisez votre liste de chaînes.
Figure 14. Personnalisez votre liste de chaînes.

EPG

Les développeurs d'entrées 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 canaux provenant d'entrées tierces doivent être présentés dans le cadre de l'EPG standard de l'expérience de télévision en direct 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). La clé est que les utilisateurs puissent trouver les chaînes qu'ils ont installées.

Les fabricants doivent mettre en œuvre l'application TV pour inclure les résultats de recherche pour les demandes de recherche globale afin de garantir la meilleure expérience utilisateur. Live TV fournit une implémentation (voir com.android.tv.search.TvProviderSearch ) 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.

Changement de temps

Pour les appareils équipés d'Android 6.0 et versions ultérieures, l'application TV doit prendre en charge les API de décalage horaire du cadre Android. En outre, les fabricants doivent implémenter des commandes de lecture dans l'application TV, qui permettent aux utilisateurs de mettre en pause, reprendre, rembobiner et avancer rapidement la lecture.

Pour les entrées TV prenant en charge le décalage horaire, l'application TV doit afficher les commandes de lecture.

Commandes de lecture
Figure 15. Commandes de lecture

DVR

Pour les appareils sous Android 7.0 et supérieur, l'application TV doit prendre en charge les API d'enregistrement TV du framework Android, pour prendre en charge, répertorier et lire les 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 nécessaire 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 connectés à 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 d'en enregistrer trois, l'application TV doit gérer le conflit et doit soit afficher une notification, soit demander à l'utilisateur de programmer 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 d'enregistrer un épisode.

Consultez le schéma suivant pour une vue d'une implémentation possible du DVR dans Android TV.

Enregistrement vidéo numérique sur Android TV
Figure 16. Enregistrement vidéo numérique sur Android TV

  1. Le service d'entrée TV indique à l'application TV le nombre de tuners disponibles afin que l'application TV puisse gérer un éventuel conflit de ressources.
  2. L'application TV reçoit une demande initiée par l'utilisateur pour enregistrer un programme TV.
  3. L'application TV stocke le programme d'enregistrement dans sa base de données interne.
  4. Lorsqu'il est temps d'enregistrer, l'application TV transmet une demande de syntonisation sur la chaîne associée à l'enregistrement.
  5. Le service d'entrée TV reçoit cette demande, répond s'il existe ou non des ressources appropriées et syntonise la chaîne.
  6. Ensuite, l'application TV transmet une demande de démarrage de l'enregistrement au gestionnaire d'entrée TV.
  7. Le service d'entrée TV reçoit cette demande et commence l'enregistrement.
  8. 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.
  9. Lorsqu'il est temps de terminer l'enregistrement, l'application TV transmet la demande d'arrêt d'enregistrement au gestionnaire d'entrée TV.
  10. 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 de télévision 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 d' enregistrement TV .

Des 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 test 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 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 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 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 démontre le test CTS Verifier, qui introduit une évaluation «fausse». Pour les pays où un système de classification standard existe, 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 canal a un champ COLUMN_LOCKED qui est utilisé pour COLUMN_LOCKED affichage de canaux spécifiques sans entrer de code PIN. Le champ de programme COLUMN_CONTENT_RATING est destiné à être affiché et n'est pas utilisé pour appliquer le contrôle parental.

Gestionnaire d'entrée TV

Le gestionnaire d'entrée TV 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 avertit 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 notifie à 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 système doit fournir aux utilisateurs un moyen de gérer le contrôle parental, y compris pour les évaluations personnalisées enregistrées par des applications spécifiques.

L'application TV affiche 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 de voir 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 le gestionnaire d'entrée TV 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: en particulier, consultez la source 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 cinéma maison. Il est utilisé par Android TV pour accélérer la configuration et permettre le contrôle à distance de diverses entrées TV via l'application TV centrale. Par exemple, il peut commuter des entrées, mettre sous tension ou hors tension des appareils, etc.

Le TIF Android implémente HDMI-CEC en tant que service de contrôle HDMI afin que les fabricants de périphériques aient simplement besoin de développer des pilotes de bas niveau qui interagissent avec le léger Android TV HAL, en ignorant une logique commerciale 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 recommandons que la plate-forme matérielle contienne un microprocesseur pour recevoir la mise sous tension CEC et d'autres commandes.

Intégration CEC sur Android TV
Figure 17. Intégration CEC sur Android TV

  1. Le bus CEC reçoit une commande de la source actuellement active pour passer à une autre source.
  2. Le pilote transmet la commande au HDMI-CEC HAL.
  3. Le HAL notifie tous les ActiveSourceChangeListeners .
  4. Le service de contrôle HDMI est informé du changement de source via ActiveSourceChangeListener .
  5. Le service TV Input Manager génère une intention pour l'application TV de changer de source.
  6. L'application TV crée ensuite une session de gestionnaire d'entrée TV pour l'entrée TV sur laquelle basculer et appelle setMain sur cette session.
  7. La session du gestionnaire d'entrée TV transmet ces informations à l'entrée TV HDMI.
  8. L'entrée TV HDMI demande de définir la surface de la bande latérale.
  9. Le service de gestion des entrées TV 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 à la 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 de télévision régionales, transmettent la surface aux piles de logiciels 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:

  1. L'application TV est au point, recevant toutes les clés.
  2. L'application TV transmet les clés (par exemple, le bouton rouge) au périphérique d'entrée TV.
  3. Le périphérique d'entrée TV s'intègre en interne avec la pile TV héritée.
  4. Lors de la réception d'un code d'activation (par exemple, bouton rouge), le périphérique d'entrée TV active les applications de diffusion.
  5. Une application de diffusion se concentre sur 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.