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().
Méthodes
getInputByName(name) → {Promise.<Contact~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.<Contact~InputContactInfo>
-
Une promesse rejetée avec une valeur de type ErrorStatus.
- Type
- Promise.<ErrorStatus>
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 |
Contact~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 | Le masque de bit correspondant aux états de tous les contacts. |
mask |
number | Le 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 |
Contact~InputContactInfo | L'état des contacts d'entrée. |
Cet événement doit être enregistré en utilisant l'API window.addEventListener() définie par la spécification DOM.
Type:
Exemple
window.addEventListener('idal-contact-event', function(e) {
var info = e.detail;
console.log("Input contact name: " + info.name);
for (var i = 0 ; i < info.values.length ; i++) {
console.log("Contact " + i + ": " + info.values[i]);
}
});