Contact

Contact

L'interface de contrôle Contact permet de modifier l'état des contacts de sortie (VP330 / EVP380) et d'obtenir l'état des contacts d'entrée.

Cette API est asynchrone et utilise Promise.
Pour utiliser cette API, vous devez dans un premier temps obtenir l'interface de contrôle Contact à l'aide de IDAL.getControlInterfaces() ou IDAL.getRemoteControlInterfaces().

Méthodes

addListener(listener): Promise.<boolean>

Attacher un gestionnaire d'événements à l'interface de contrôle Contact.

Depuis :
  • micrologiciel v1.08 / SDK version 1.1.0

Cette methode est apparue avec le micrologiciel v1.08 pour rendre possible l'execution d'un même code aussi bien sur le lecteur vidéo que sur un navigateur distant par l'utilisation de IDAL.getRemoteControlInterfaces().
Lorsque l'exécution se fait sur le lecteur vidéo, cette méthode equivaut à l'appel window.addEventListener('idal-contact-event', function(e) {}).

Exemple
var contact = ... // Récurpération de l'interface Contact
contact.addListener(function(event) {
    // Ici la valeur de event.type est toujours 'idal-contact-event'
    var info = event.detail;
    if (info.type == 'input-change' || !info.type) { // Test de !info.type pour compatibilité sur micrologiciel < v1.08
        console.log("Input contact name: " + info.name);
        for (var i = 0 ; i < info.values.length ; i++) {
            console.log("Contact " + i + ": " + info.values[i]);
        }
    }
});
Paramètres
Nom Type Description
listener Listener

Fonction à exécuter lorsqu'un événement de contact survient.

Valeur de retour

Une promesse résolue avec une valeur de type boolean.

Type
Promise.<boolean>

getInputByName(name): Promise.<InputContactInfo> | Promise.<ErrorStatus>

Obtenir l'état actuel des contacts d'entrée.

Les contacts d'entrée sont identifiés par un nom:

  • "standalone" pour le contact unique disponible sur tous les lecteurs vidéo.
  • "combined" pour les 8 contacts d'entrée disponibles sur les VP330 et EVP380.

Vous pouvez également récupérer l'état des contacts en temps réel grâce aux événements InputContactEvent.

Paramètres
Nom Type Description
name string

Le nom des contacts d'entrée ("standalone" ou "combined").

Valeur de retour

removeListener(listener): Promise.<boolean>

Détacher un gestionnaire d'événements précédemment attaché à l'interface Contact.

Depuis :
  • micrologiciel v1.08 / SDK version 1.1.0
Paramètres
Nom Type Description
listener Listener

Fonction précédemment attachée avec addListener()

Valeur de retour

Une promesse résolue avec une valeur de type boolean.

Type
Promise.<boolean>

setInputConfiguration(config): Promise.<boolean> | Promise.<ErrorStatus>

Définir la configuration des contacts d'entrée (mode de contrôle).

Les combinaisons des contacts d'entrée sont associées à des actions (par défaut "Lire le dossier") qui sont automatiquement gérées par le moteur de lecture vidéo.
Si vous souhaitez modifier ce comportement et contrôler les contacts d'entrée à partir de la couche HTML / JavaScript, vous devez appeler cette méthode en donnant au paramètre config.controller la valeur 'browser'.

Suivant la valeur du paramètre config.lifetime, la configuration est automatiquement réinitialisée à sa valeur par défaut.

Cette méthode peut également être utilisée pour associer des événements de de type clavier aux contacts d'entrée. Cela permet d'utiliser les contacts d'entrée comme un clavier standard et donc d'utiliser des écouteurs d'événements génériques tels que keyup et keydown.

Exemple

Configuration des contacts d'entrée pour générer des événements de type clavier.

// Dans cet exemple, 'contact' est la variable qui référence l'interface de contrôle des contacts.
// Configuration des contacts d'entrée de sorte qu'ils se comportent en touches de direction, Entrée et Echap.
// La configuration est conservée tant jusqu'au chargement d'une nouvelle page.
var config = {
    controller: "browser",
    lifetime: "url",
    keymaps: {
        combined: [
            "ArrowLeft",
            "ArrowRight",
            "ArrowUp",
            "ArrowDown",
            "Enter",
            "Escape"
        ]
    }
};
contact.setInputConfiguration(config)
    .then(function(e) {
         // Faire quelque chose
     })
    .catch(function(e) {
         // Gérer l'erreur
    });

// Installation d'un écouteur d'événements clavier
window.addEventListener("keydown", function(e) {
    console.log("Key down: key=" + e.key + ", code=" + e.code + ", keyCode=" + e.keyCode);
});
Paramètres
Nom Type Description
config InputContactConfig

Configuration à utiliser pour les contacts d'entrée.

Valeur de retour
  • Une promesse résolue avec une valeur de type boolean.

    Type
    Promise.<boolean>
  • Une promesse rejetée avec une valeur de type ErrorStatus.

    Type
    Promise.<ErrorStatus>

setOutputById(id, value): Promise.<boolean> | Promise.<ErrorStatus>

Positionner l'état d'un contact se sortie.

Paramètres
Nom Type Description
id number

L'identifiant du contact, valeur comprise entre 0 et 7.

value number | boolean

Le nouvel état du contact:

  • 0 ou false pour ouvrir le contact.
  • non zéro ou true pour fermer le contact.
Valeur de retour
  • Une promesse résolue avec une valeur de type boolean.

    Type
    Promise.<boolean>
  • Une promesse rejetée avec une valeur de type ErrorStatus.

    Type
    Promise.<ErrorStatus>

setOutputByMask(value, mask): Promise.<boolean> | Promise.<ErrorStatus>

Positionner simultanément l'état de plusieurs contacts de sortie.

Paramètres
Nom Type Description
value number

Masque de bit correspondant aux états de tous les contacts.
Un bit par contact.
Le bit le moins significatif est le contact numéro 0.

mask number

Masque de bit correspondant aux contacts à positionner.
Un bit par contact.
Le bit le moins significatif est le contact numéro 0.
Ne sont modifiés que les contacts ayant un bit à 1.

Valeur de retour
  • Une promesse résolue avec une valeur de type boolean.

    Type
    Promise.<boolean>
  • Une promesse rejetée avec une valeur de type ErrorStatus.

    Type
    Promise.<ErrorStatus>

Définition des types

InputContactConfig

Configuration à appliquer sur les contacts d'entrée.
Cette configuration définit l'entité responsable de la gestion des contacts d'entrée : le navigateur Web ou le moteur de lecture vidéo.
Il est également possible d'activer la conversion d'événements contacts en événements clavier.

Propriétés
Nom Type Attributs Par défaut Description
controller 'browser' | 'videoplayer'

Le nom de l'entité gérant les contacts d'entrée.
Il doit avoir pour valeur 'browser' pour permettre à la couche HTML de contrôler les entrées ou 'videoplayer' pour laisser la gestion au moteur de lecture.

lifetime 'url' | 'site' | 'session' | 'scenario' <optionnel>
'url'

La durée de vie de la configuration peut être précisée lorsque le contrôleur est le navigateur web.
Ce paramètre définit le moment où la configuration est automatiquement réinitialisée à sa valeur par défaut (contrôle par le moteur de lecture).

ValeurDescription
'url' La configuration est uniquement appliquée à l'URL courante et est réinitialisée lorsque :
  • l'adresse de la page a changé suite à un clic sur un hyperlien ou un changement programmatique tel qu'une modification de window.location.
  • la page a été rechargée suite à un changement programmatique tel qu'un appel à window.location.reload().
  • le moteur de lecture a traité une balise [WEBS x] ou [WEBE x].
  • le navigateur web a été fermé avec une balise [WEBS OFF] ou [WEBE OFF].
'site' La configuration est uniquement appliquée au site courant et est réinitialisée lorsque :
  • le moteur de lecture a traité une balise [WEBS x] ou [WEBE x].
  • le navigateur web a été fermé avec une balise [WEBS OFF] ou [WEBE OFF].
Ici, il est fait référence à un site au sens du moteur de lecture (pas une URL). Ce site est chargé par une balise [WEBS x] ou [WEBE x]...
'session' La configuration est uniquement appliquée à la session du navigateur web.
Une session démarre avec une balise [WEBS x] ou [WEBE x] et se termine avec une balise [WEBS OFF] ou [WEBE OFF].
La configuration est réinitialisée lorsque la session du navigateur web se termine.
'scenario' La configuration est appliquée sur le scénario courant.
Elle reste active au changement de session (lorsque le navigateur est fermé), sites et URLs.
Pour faire simple : la configuration reste active tant qu'une autre configuration n'est pas explicitement donnée.
keymaps Object <optionnel>

Utilisable uniquement lorsque controller a pour valeur 'browser'.
Cet objet contient les noms des touches clavier associées à chaque contact d'entrée.
Cela permet de gérer les événements de contact d'entrée comme des événements clavier standards, en utilisant les gestionnaires keyup et keydown.

Propriétés
Nom Type Attributs Description
combined Array.<string> <optionnel>

Touches à utiliser sur les contacts d'entrée combinés. Ce tableau doit contenir un maximum de 8 noms de touches, un pour chaque contact.

standalone Array.<string> <optionnel>

Touches à utiliser sur le contact d'entrée autonome. Ce tableau doit contenir un seul nom de touche.


Liste des touches disponibles

Passez la curseur de la souris sur les touches pour voir leurs noms.

InputContactInfo

Un InputContactInfo contient l'état d'un ou plusieurs contacts d'entrée.

Propriétés
Nom Type Description
name string

Nom logique du groupe de contacts d'entrée.

values Array.<boolean>

Tableau d'état des contacts d'entrée.

Événements

InputContactEvent

Cet événement est envoyé lorsque l'état des contacts d'entrée est modifié.

Propriétés
Nom Type Description
type 'idal-contact-event'

Type correspondant à aux événements relatifs aux contacts d'entrée.

detail Object
Propriétés
Nom Type Description
type 'input-change'

Le type correspondant au changement d'état des contacts d'entrée.
Note: cette propriété est disponible depuis la version v1.08 du micrologiciel.

name string

Nom logique du groupe de contacts d'entrée.

values Array.<boolean>

Tableau des états des contacts d'entrée.

Cet événement doit être enregistré en utilisant Contact.addListener().
Il peut aussi être enregistré via window.addEventListener('idal-contact-event', callback) définie par la spécification DOM.
Si vous prévoyez d'utiliser une interface de contrôle à distance, cette dernière méthode doit absolument être évitée.

Type
Exemple
// Methode préférée: utilisation de Contact.addListener()
var contact = ... // Obtention de l'interface Contact
contact.addListener(function(e) {
    var info = e.detail;
    if (info.type == 'input-change' || !info.type) { // Test de !info.type pour compatibilité sur micrologiciel < v1.08
        console.log("Input contact name: " + info.name);
        for (var i = 0 ; i < info.values.length ; i++) {
            console.log("Contact " + i + ": " + info.values[i]);
        }
    }
});