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
-
Une promesse résolue avec une valeur de type InputContactInfo.
- Type
- Promise.<InputContactInfo>
-
Une promesse rejetée avec une valeur de type ErrorStatus.
- Type
- Promise.<ErrorStatus>
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:
|
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. |
mask |
number | Masque de bit correspondant aux contacts à positionner. |
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. |
||||||||||||||
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.
|
||||||||||||
keymaps |
Object |
<optionnel> |
Utilisable uniquement lorsque Propriétés
|
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
|
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]);
}
}
});