Le JavaScript sur ZiBASE Multi - Opérations sur Android

Le JavaScript sur ZiBASE Multi - Retour aux généralités

Le JavaScript sur ZiBASE Multi - Mise en oeuvre

Le JavaScript sur ZiBASE Multi - Opérations sur Android

Le JavaScript sur ZiBASE Multi - Opérations sur les périphériques

Le JavaScript sur ZiBASE Multi - Opérations sur les fichiers

Le JavaScript sur ZiBASE Multi - Opérations sur le réseau IP

Le JavaScript sur ZiBASE Multi - Opérations sur ZiBASE

Le JavaScript sur ZiBASE Multi - Opérations sur l'enregistreur

 

OBJET : android

 

ROLE : Cet objet comporte les fonctions liées spécifiquement à Android.

void wakeUp ()
Met au 1er plan le Dashboard de l'application ZIBASE Multi sur l'écran de l'appareil Android (valable dans certaines situations).

void toast(String line)
Afficher un message fugitif à l’écran constitué par la chaine de caractère 'line'.

void toastInt(int val)
Afficher un message fugitif à l’écran constitué par la valeur entière de 'val'.

void toastFloat(float val)
Afficher un message fugitif à l’écran constitué par la valeur flottante de 'val'.

void trace(String line)
Afficher un message dans le suivi d’activité de ZiBASE Multi (String)
Le premier message sera également affiché sous forme de « Toast ».
PS : Il est très aisé de faire un programme qui génère rapidement des dizaines, des centaines... voir des millions de messages dans le suivi d'activité. En pratique, ceux-ci seront vite  limités en quantité par unité de temps. Si ces messages sont trop nombreux, des "trous" apparaitront donc dans le listing des messages.

void speaks(String line)
Enoncer une phrase en synthèse vocale. En cas de difficultés d'énonciation, aller vérifier les options dans le menu système de l'appareil Android, les items  "Langue et saisie" et "Recherche vocale". L'option "Bloquer les termes choquants" ne doit pas être cliquée sans quoi certains mots seront altérés (ex. ZiBASE -> ZIBA). 

void speaks(String line, int delayed)
Identique à la fonction précédente mais stipule un délai à l'exécution 'delayed' exprimé en dizièmes de seconde (N*1/10s).

int startVoiceRecognition (String prompt, String JScallback, int maxResult)
Lance la reconnaissance vocale d'une phrase (l'appareil Android doit donc être équipé d'un micro). En cas de difficultés de reconnaissance, aller vérifier les options dans le menu système de l'appareil Android, dans les items  "Langue et saisie" et "Recherche vocale". Toujours garder à l'esprit que la reconnaissance se fait dans une langue donnée par la configuration de l'appareil Android. Le lancement de la reconnaissance vocale se fait toujours sur initiative de l'utilisateur (manuellement ou par scenario/détecteur) et cette reconnaissance n'est pas faite en continu (ce qui aurait des inconvénients comme des déclenchements intempestifs et une consommation d'énergie importante car la reconnaissance vocale est très consommatrice de CPU). La reconnaissance en continu pourrait être proposée prochainement par l'OS Android lui-même sur le même principe de "keyword spotting" que le célèbre  "Ok Google".
Prompt : Texte d'invitation à parler. 
JScallback : Fonction JavaScript callback appelée par injection JavaScript sous la forme
JScallback (String result) avec result contenant un tableau des propositions de traduction.
maxResult : Nombre de propositions retournées au maximum (1...10).
La fonction retourne 1 si la demande est prise en compte et 0 si a demande n'a pas pu être prise en compte.

PS: Ne pas oublier que la reconnaissance vocale a essentiellement pour référence un dictionnaire de mots (qui change selon la langue). Le taux de réussite sur des mots inventés est donc inférieur à celui de mots existants.  Un mix de mots "langue de l'appareil"+ "US" est possible, même si la langue configurée dans l'appareil prédomine.

Exemple évaluant la qualité de la reconnaissance vocale : Saisie vocale puis répétition en synthèse vocale ("Text-to-Speech") avec copie dans le suivi d'activité


int startVoiceRecognition (String prompt, String JScallback)
Identique à la fonction précédente mais avec une demande de 5 propositions.

int startVoiceRecognition (String prompt)
Identique à la fonction précédente mais avec une différence majeure : Les propositions ne sont pas retournées à l'utilisateur mais soumises à interprétation immédiate pour lancer des scénarios ou allumer/éteindre des actionneurs. Consulter le suivi d'activité en cas d'échec, c'est assez formateur sur la manière de nommer judicieusement ses scénarios et détecteurs pour une reconnaissance aisée. A noter que la reconnaissance vocale fonctionne mieux sur un appareil relativement haut de gamme ou adapté à la téléphonie.
Cette fonction effectue la même opération qu'en cliquant sur le micro situé sous le logo Zodianet.
Il suffit de dire un ordre (voir ci-dessous) suivi du label de l'item concerné.
Enoncé d'une aide rapide. Dire : AIDE
Lancer un scénario. Dire : LANCER, START, EXECUTER (ou LANCE, EXECUTE...)
Allumer un périphérique. Dire : ALLUMER, MONTER, OUVRIR, METTRE EN MARCHE ( ou ALLUME, MONTE, OUVRE...)
Eteindre un périphérique. Dire :  FERMER, ETEINDRE, ARRETER, DESCENDRE ( ou FERME, ETEINS, ARRETE, DESCENDS)

Liste exhautive (selon la langue de configuration de l'appareil android:  FR US DE IT) :

LANCER: "LAUNCH:START:STARTEN:RUN:EXECUTE:LANCER:LANCE:EXECUTER:AUSFUHREN:OPERARE",
ALLUMER: "SET:POWER-ON:TURN-ON:SWITCH-ON:LIGHT-UP:TOTO-TITI:METTRE-EN-MARCHE:METTRE-EN-ROUTE:METS-EN-MARCHE:METS-EN-ROUTE:ALLUMER:ALLUME:MONTER:MONTER:OUVRIR:OUVRE:EINSCHALTEN:ATTIVARE:ACCENDERE",
ETEINDRE: "RESET:POWER-OFF:TURN-OFF:SWITCH-OFF:SHUT-OFF:SHUT-DOWN:CLOSE:FERMER:FERME:ETEINDRE:ARRETER:ARRETE:ETEINS:DESCENDRE:DESCENDS:HERAUSGEBEN:AUSSCHALTEN:CLEAR:EFFACER:EFFACE",

En mêlant "s'il vous plait" ou "s'il te plait" à la phrase (sauf à son tout début), il est possible de modifier le principe d'association 'phrase'<->'scenario/actionneur': Il suffit que tous les mots contenus dans le label de 'scénario/actionneur' soient identifiés dans la phrase. En conséquence, la phrase peut contenir plus de mots que nécessaire, ce qui permet un style parlé plus libre. Alors que dans le cas contraire, une stricte égalité en nombre entre mots de la phrase et du label est indispensable. Exemple, soit le label d'actionneur: "lumière salon", il est possible de dire "Allume lumière salon" dans un style strict, ou dans un style plus libre "Allume s'il te plait la lumière disposée dans le salon" ou "Allume la lumière disposée dans le salon s'il te plait" ou même "Allume dans le salon la lumière s'il te plait". Le style libre a cependant un inconvénient :  En reprenant l'exemple, si un autre actionneur s'appelle simplement lumière, il sera activé si le mot salon n'a pas été correctement identifié dans la phrase, il faut donc éviter les labels pouvant être inclus dans d'autres plus longs comme ici lumière et lumière salon. NB : Il est possible d'avoir des labels proches ou identiques pour un scénario et un actionneur puisque les ordres ne sont pas les mêmes.

startVoicedAction (String prompt, int delay, String JScallback)
Variante de la fonction précédente mais avec un delai et une fonction de callback.
delay : délai d'exécution
JScallback : fonction JavaScript appelé après la reconnaissance de forme JScallback (status) avec status égal à "OK" si l'ordre a été reconnu ou "KO" dans le cas contraire.
PS : Cette fonction permet notamment de savoir quand la session de reconnaissance vocale est terminée, ce que ne permet pas startVoiceRecognition (String prompt).


String phoneticSignature  (String str)
Retourne la signature phonétique d'une chaîne de caractère. Cette fonction évite un stripping et un parsing complexes à réaliser sur les phrases retournées par la reconnaissance vocale.

int phoneticCompare  (String str1, String Str2)
Comparaison de 2 chaînes de caractères de manière phonétique.
Retourne 1 si les 2 chaines sont phonétiquement équivalentes. Retourne 0 si elles sont différentes.

Exemple


 

int exitRequested()
Demande impérative de sortie de traitement (par exemple de boucle JavaScript infinie…). 0 : pas de demande. 1 : Demande de sortie.

int battLevel()
Niveau de Batterie de l’appareil Android (0…100%)

int isPowered()
Témoin d’alimentation de l’appareil Android sur connecteur AC/USB/Magnetic. 0 : Non alimenté. 1 : Alimenté.

NOTA : ZIBASE Multi se voit automatiquement notifier les connexions/déconnexions de son alimentation (par panne de secteur par exemple).
Pour cela, des mots clés mis en liste d'IDs de déclenchement permettent de lancer des scénarios (délai max: 5s)
POWEROFF : signale la perte d'alimentation
POWERON : signale la réalimentation de l'appareil Android.
PS :

- Il est possible de spécifier Les 2 mots clés (séparés dans un espace) en liste de déclenchement pour détecter les changements ON/OFF sur l’alimentation.

- POWERON/POWEROFF provoquent des événements asynchrones. Si une action JavaScript est lancée consécutivement, gardez à l'esprit que l'ouverture d'une page HTML5 va effacer tous les scripts en mémoire en attente d'exécution. Il est donc préférable de procéder par injection JavaScript.

 


 

Les variables en JavaScript…
Comme n’importe quel langage informatique, les variables propres au JavaScript ne posent pas de problèmes lorsqu’elles sont gérées par un même programme.
Par contre, entre programmes indépendants (entre inclusions du configurateur, fichiers dans l’appareil Android ou entre fichiers sur serveur), il est nécessaire de stocker ces variables.
Il existe plusieurs solutions gérées par JavaScript/HTML5:


JavaScript de test par un fichier sur serveur (ou dans l'appareil Android) :

Le résultat visuel de ce test doit donner cela en vidéo.


Par simple tableau indexé (voir ci-dessous), il est également possible de partager très rapidement des variables de type int, String ou float,.
Ces variables globales, stockées en RAM, disparaissent à la sortie
de l’application ZiBASE Multi.

void varInt(int index, int val)
Ecrire une variable globale (index: 0…99) de type int

void varStr (int index, String str)
Ecrire une variable globale (index: 0…99) de type String.

void varFloat(int index, float val)
Ecrire une variable globale (index: 0…99) de type flottante.

int varInt(int index)
lire une variable globale (index: 0…99) de type int

String varStr(int index)
lire une variable globale (index: 0…99) de type String

float varFloat(int index)
lire une variable globale (index: 0…99) de type Flottante

 

Fonctions graphiques


Ecrire une ligne de texte

void setDefaultWriteOptions(String percents, String color, String position )
Positionner les options d'écriture par défaut.
- percents : cette chaine de caractères spécifie si les paramètres sont exprimés en pixels ou en pourcentage de la taille de l'écran, selon leur ordre d'apparition. "_%%" signifie que le premier paramètre est exprimé en pixels, les 2ième et 3ième sont exprimés en pourcentage.
- color : couleur de la police de caractères. Les valeurs suivantes sont autorisées : BLACK, BLUE, CYAN, DKGRAY, GRAY, GREEN, LTGRAY, MAGENTA, RED, WHITE, YELLOW. La couleur peut aussi s'exprimer par un code #RVB, exemple : "#16FAC2".
- position : par défaut, (valeur vide "") une justification à gauche est utilisée à partir du point X,Y donné dans la fonction. La valeur "center" centre la chaine de caractère autour de la valeur X.

int writeText(int item, String line, int textSize, int X, int Y )
Ecrire la chaîne de caractère 'line' de taille 'textSize' aux coordonnées 'X','Y' à partir du bord gauche et haut de l'écran. La chaîne de caractère est repérée par un numéro d'item 'item" entre 0 et 100 qui permet de la supprimer ultérieurement en faisant référence à ce numéro d'item. Cette fonction fait référence aux options d'écriture par défaut.
returne 0 en cas d'erreur détectée (1 dans le cas contraire).

int writeText(int item, String line, int textSize, int X, int Y, int delayed )
Identique à la fonction précédente mais stipule un délai à l'exécution 'delayed' exprimé en dizièmes de secondes

int writeText(int item, String line, int textSize, int X, int Y, String percents, String color, String position)
Identique à la fonction précédente mais ne fait pas référence aux options d'écriture part défaut.

int writeText(int item, String line, int textSize, int X, int Y, String percents , String color, String position, int delayed)
Identique à la fonction précédente mais stipule un délai à l'exécution 'delayed' exprimé en dizièmes de secondes.


Effacer une ligne de texte

int clearWriteText(int item)
Effacement de l'item 'item" écrit précédemment par la fonction writeText.

int clearWriteText(int item, String backColor)
Effacement de l'item 'item" écrit précédemment par la fonction writeText en spécifiant un fond de remplacement backColor.
Les valeurs suivantes sont autorisées : BLACK, BLUE, CYAN, DKGRAY, GRAY, GREEN, LTGRAY, MAGENTA, RED, WHITE, YELLOW. La couleur peut aussi s'exprimer par un code #RVB hexadécimal, exemple : "#16FAC2".

int clearWriteText(int item, String backColor, int delayed)
Identique à la fonction précédente mais stipule un délai à l'exécution 'delayed' exprimé en dizièmes de seconde.

 

Fenêtre d'échange

void AskQuestion(String prompt, String callBack)
Pose une question avec demande de réponse binaire OUI/NON.
Prompt  : Question posée en tête de fenêtre de dialogue.
callBack : Fonction JavaScript appelée pour rendre la réponse de la forme callBack(resp) avec resp égal à YES, NO ou CANCEL.



 

 

Afficher une image stockée dans l'appareil

Contrairement au texte, les images ne sont pas référencées par des items. Elles s'empilent donc à l'infini l'une sur l'autre pour créer un bit-map unique sur un plan.

int drawPict(String name, int X, int Y, int width, int height )
Affichage d'une image désignée par 'name' dans la sdcard de l'appareil Android aux coordonnées 'X','Y' de largeur 'width' et de l'hauteur 'height' (en pixels et relativement au bord gauche et au bord haut).
'name' contient le chemin et le nom du fichier .jpg ou .png. et peut être précédé du caractère '$' pour notifier que le chemin par defaut doit être utilisé en préfixe (voir ONGLET SYSTEME du configurateur). Un des deux paramètres 'width' ou 'height' peut être spécifié à 0, auquel cas il est calculé au prorata de la taille d'origine pour éviter une déformation de l'image (étirerement/rétrecissement).
/xx/yy/.../picture.png : chemin absolu dans l'appareil android.
xx/yy/.../picture.png : chemin relatif dans l'appareil android préfixé par le chemin par défaut des images de l'appareil (classiquement /sdcard/Pictures)
$/xx/yy/.../picture.png ou $xx/yy/.../picture.png: chemin relatif dans l'appareil android préfixé par le chemin par défaut (voir ONGLET SYSTEME du configurateur).

int drawPict(String name, int X, int Y, int width, int height, String percents)
Identique à la fonction précédente mais avec la possibilité de specifier des pourcentages de tailles d'écran au lieu de pixels. Par exemple Percents = "%_%_" définit 'X' et 'width' en pourcentages et 'Y' et 'height' en pixels.

int drawPict(String name, int X, int Y, int width, int height, String percents, int delayed)
Identique à la fonction précédente mais stipule un délai à l'exécution 'delayed' exprimé en dizièmes de seconde.


Afficher une image stockée dans l'application ZiBASE Multi

int drawApkPict(String name, int X, int Y, int width, int height )
int drawApkPict(String name, int X, int Y, int width, int height, String percents)
int drawApkPict(String name, int X, int Y, int width, int height, String percents, int delayed )
fonctions identiques à drawPict( ) mais applicable à des images contenues dans l'application ZiBASE Multi. Les icônes dont les noms sont donnés par zibase.realTimeEvent() peuvent être affichées.


Effacer de l'écran une image stockée dans l'appareil

int clearPict(String name, int X, int Y, int width, int height )
Effacement de l'image désignée par 'name' dans la sdcard de l'appareil Android aux coordonnées 'X','Y' de largeur 'width' et de l'hauteur 'height' (en pixels et relativement au bord gauche et au bord haut). Le référencement de l'image est identique à drawPict().

int clearPict(String name, int X, int Y, int width, int height, String percents )
Identique à la fonction précédente mais avec la possibilité de specifier des pourcentages de tailles d'écran au lieu de pixels. Par exemple percents = "%_%_" définit 'X' et 'width' en pourcentages et 'Y' et 'height' en pixels.

int clearPict(String name, int X, int Y, int width, int height, String percents, String Backcolor )
Identique à la fonction précédente mais avec la possibilité de spécifier un fond de remplacement backColor. Les valeurs suivantes sont autorisées : BLACK, BLUE, CYAN, DKGRAY, GRAY, GREEN, LTGRAY, MAGENTA, RED, WHITE, YELLOW. La couleur peut aussi s'exprimer par un code #RVB hexadécimal, exemple : "#16FAC2".

int clearPict(String name, int X, int Y, int width, int height, String percents, String color, int delayed )
Identique à la fonction précédente mais stipule un délai à l'exécution 'delayed' exprimé en dizièmes de seconde.


Effacer de l'écran une image stockée dans l'application

int clearApkPict(String name, int X, int Y, int width, int height )
int clearApkPict(String name, int X, int Y, int width, int height, String percents )
int clearApkPict(String name, int X, int Y, int width, int height, String percents,String color )
int clearApkPict(String name, int X, int Y, int width, int height, String percents,String color,int delayed )
Fonctions identiques à clearPict() mais applicable à des images contenues dans l'application ZiBASE Multi. Les icônes dont les noms sont donnés par zibase.realTimeEvent() peuvent être effacées.

Exemple d'application des fonctions graphiques

PS: Préférer l'usage de la fonction zibase.addMatchingFunction() dont l'exécution du callBack est immédiate et synchrone plutôt qu'un timer comme ci-dessous.

Voir le résultat

en vidéo

 

La détection et la reconnaissance faciale

La détection et la reconnaissance faciale sont deux fonctions distinctes. La première consiste en la localisation de visages d'une photo ou flux vidéo. La deuxième consiste en la reconnaissance de ces visages en les comparant à une banque de visages préalablement stockés.

La détection ne nécessite pas d'avoir à disposition en mémoire des photos de visages à reconnaitre. Son utilisation est donc être immédiate pour les scénarios et JavaScript. Par contre la reconnaissance faciale demande une phase d'apprentissage des visages.  Cette phase n'est pas pilotable par JavaScript et une page a été conçue spécialement à cette fin. Il suffit de cliquer sur l'icône "visage" dans les options de ZIBASE Multi comme indiqué ci contre.

Les visages de 5 personnes appelées "utilisateurs" peuvent ainsi être "appris" par ZiBASE Multi. Pour cela, la prise de photos est effectuée sur la caméra frontale ou arrière de l'appareil Android et cela par petites séries. Les séries servent à faire varier les conditions de lumière. Au total, 36 photos peuvent être mémorisées par utilisateur.

NB : Un humain n'a aucune difficulté pour reconnaître des visages : Il a développé son cerveau dès son plus jeune âge pour cela.  Cette opération est par contre d'une très grande difficulté pour une machine... qui comparerait tout aussi bien des extra-terrestres.  Différencier "deux chiots d'une même portée" ou "deux visages humains" est d'équivalente difficulté pour la machine. Mais notez que différencier ces deux chiots sera également d'une grande difficulté pour un humain. La machine évalue des distances mathématiques entre des photos (la photo de la personne à reconnaitre et celles d'une banque de visages préalablement enregistrés). Le résultat n'est donc pas binaire mais il est possible de tirer une probabilité que la personne soit reconnue. ZiBASE Multi utilise les meilleurs algorithmes de la littérature scientifique pour mesurer ces distances. Ils sont très efficaces et remplissent leur objectif. Par contre, les résultats dépendent de la qualité des photos comparées (et cette qualité dépendra de la lumière d'éclairage des photos). Ainsi, le problème n'est pas reconnaitre, mais photographier dans de bonnes conditions et en tous cas, avec le maximum de similitude dans l'éclairage entre "personne à reconnaitre" dans l'instant et celles utilisées dans la " banque de visages". Pour cette raison, il est vivement conseillé de prendre des séries de photos dans des conditions de lumière réelles et sur le champ quand la reconnaissance faciale est en situation d'échec.

Un ou plusieurs visages peuvent être reconnus simultanément. Le nom des personnes reconnues s'inscrit alors au dessus du carré vert qui entoure le visage avec la probabilité que cette reconnaissance soit juste. Les carrés se déplacent si les visages se déplacent. Un carré bleu signifie une personne non reconnue. Un carré gris signifie l'indisponibilité de la reconnaissance faciale (qui arrive au démarrage ou pendant l'ajout de nouvelles photos). La distance maximale de reconnaissance dépend du capteur de votre appareil Android (V4.4) et sera sans doute supérieure avec la caméra arrière qui possède généralement d'une résolution supérieure à la caméra avant. En outre votre appareil peut disposer d'un accélérateur de détection faciale qui augmente grandement la portée tout en apportant un gain de rapidité. A noter que les situations de contre-jour comme ci-dessous ont généralement un effet négatif sur les performances.

Pour rappel, la technique de callback demande une version Android >= 4.4.

int startFaceScanner (String typeCam)
Lancement du scanner facial avec l'ouverture de la caméra. (identique à la sollicitation de l'icône visage das les options). Le premier lancement du scanner facial  charge la banque de visages et un délai est nécessaire pour que la reconnaissance faciale soit opérationnelle. Par la suite, si le scanner est fermé puis relancé, la reconnaissance est opérationnelle instantanément. PS: Il peut être nécessaire de fermer temporairement le scanner pour lancer des opérations qui peuvent rentrer en conflit sur le partage de l'écran, par exemple l'appel de fonction de reconnaissance vocale.
typeCam : spécifier ici s'il s'agit de la caméra frontale ("front")  ou arrière ("back").
Retourne le statut de l'appel : 1 : Ok, 0 : Erreur.

int stopFaceScanner ()
Arrêt du scanner facial avec la fermeture de la caméra.
Retourne le statut de l'appel : 1 : Ok, 0 : Erreur.

int armFaceRecognition (String user, String threshold , String JScallBack, int delay)
Armement pour déclencher l'exécution de la fonction JavaScript JScallBack si l'utilisateur de label 'user' est reconnu. Si le déclenchement est forcément consécutif au démarrage du scanner par  startFaceScanner (...), l'armement peut s'opérer avant ou après ce démarrage et à n'importe quel moment. Sitôt le déclenché réalisé et JScallBack appelé, l'armement devient inactif et doit être éventuellement renouvellé pour réaliser un nouveau déclenchement.
user : Label du l'utilisateur à reconnaitre. Un déclenchement séparé peut être fait pour chaque utilisateur. Le métacaractère "*" signifie que n'importe quel utilisateur est à reconnaitre.
threshold : conditions supplémentaires de déclenchement. Syntaxe N°1 : "x" avec x le niveau de reconnaissance minimal ("note") entre 1 et 5. Syntaxe N°2 : "x-y" avec en sus y qui est le pourcentage (1..100) en hauteur de l'écran de la fenêtre entourant le visage, ce qui permet d'avoir un déclenchement de près et non de loin. Exemple  : "2-30" : déclenchement si la note est >= 2 et la fenêtre >= 30% de la hauteur de l'écran.
JScallBack : Fonction JavaScript appelée en cas de déclenchement,  de la forme  JScallBack (user)  avec user le label de la personne reconnue.
delay : délai de prise en compte de l'armement en 1/10ièmes de seconde.
Retourne le statut de l'appel : 1 : Ok, 0 : Erreur.

int armFaceRecognition (String user, String threshold , String JScallBack)
Identique à la fonction précédente mais sans délai.

Exemple ci dessous : Lorsque Georges va s'approcher de l'appareil Android, le scanner va s'interrompre pour que Georges donne un ordre vocal, c'est à dire lancer un scénario ou allumer/éteindre un équipement,  sans même devoir toucher à l'appareil. Ensuite, le scénario qui contient ce script sera relancé après 20 secondes...


int disarmFaceRecognition (String user, int delay)
Désarmement et fonction duelle de la fonction précédente  armFaceRecognition (...)  pour un utilisateur donné.
delay : délai de prise en compte du désarmement en 1/10ièmes de seconde.
Retourne le statut de l'appel : 1 : Ok, 0 : Erreur.

int disarmFaceRecognition (String user)
Identique à la fonction précédente mais sans délai.

int armFaceDetection (  int windowSizePercent, String JScallBack, int delay)
Armement pour déclencher l'exécution de la fonction JavaScript JScallBack si un visage est détecté (ou plusieurs). Si le déclenchement est forcément consécutif au démarrage du scanner par  startFaceScanner (...), l'armement peut s'opérer avant ou après ce démarrage et à n'importe quel moment. Sitôt le déclenché réalisé et JScallBack appelé, l'armement devient inactif et doit être éventuellement renouvellé pour réaliser un nouveau déclenchement.
windowSize : Condition supplémentaire de déclenchement. Taille minimale (1..100) en pourcentage de la hauteur de l'écran de la fenêtre entourant le visage, ce qui permet d'avoir un déclenchement de près et non de loin. Exemple  : 30 : déclenchement la fenêtre >= 30% de la hauteur de l'écran.
JScallBack : Fonction JavaScript appelée en cas de déclenchement,  de la forme  JScallBack (faceNumber)  avec faceNumber le nombre de visages détectés.
delay : délai de prise en compte de l'armement en 1/10ièmes de seconde.
Retourne le statut de l'appel : 1 : Ok, 0 : Erreur.

int armFaceDetection (  int windowSizePercent, String JScallBack)
Identique à la fonction précédente mais sans délai.


int disarmFacedetection (int delay)
Désarmement et fonction duelle de la fonction précédente  armFaceDetection (...).
delay : délai de prise en compte du désarmement en 1/10ièmes de seconde.
Retourne le statut de l'appel : 1 : Ok, 0 : Erreur.

int disarmFaceDetection ()
Identique à la fonction précédente mais sans délai.

int setScannerOptions( String options)
Positionnement d'options sur le scanner. Les options sont des mots clés séparés par une virgule. Exemple : setScannerOptions("disableAccelerator,disableRecognizedUser") ;
Options possibles : disableAccelerator, disableUsersBar, disableBackCamInMenu, disableFrontCamInMenu, disableScore, disableRecognizedUser, smallerRecognition, strongerRecognition, smallestRecognition, strongestRecognition.
disableAccelerator dévalide l'accélérateur de détection faciale (si l'appareil en dispose d'un), cette option doit être positionnée avant le lancement du scanner. disableUsersBar dévalide la liste des utilisateurs en bas de l'écran, à positionner avant le lancement du scanner. Les options suivantes sont prises en compte en temps-réel : disableBackCamInMenu et disableFrontCamInMenu dévalident les caméras respectivement arrière et avant dans le menu options. disableScore dévalide la note (x/5) jointe à un utilisateur reconnu. disableRecognizedUser dévalide l'affichage le nom de l'utilisateur reconnu ainsi que sa note. smallerRecognition diminue les conditions pour reconnaitre un utilisateur, strongerRecognition l'augmente. smallestRecognition et strongestRecognition ont le même effet avec plus d'intensité. La consignation conjuguée de strongerRecognition et strongestRecognition augmente encore les effets. Idem mais à l'inverse pour smallerRecognition et smallestRecognition.

 

La prise de Photos

int takeCamPict (String typeCam,  String pathName, String callback)
Prise de photo sur appareil photo intégré dans l'appareil Android.
typeCam : Appareil photo avant ("front") ou arrière ("back").
pathName : Chemin/nom de la photo prise. En cas d'absence de chemin, la photo est rangée dans le répertoire par défaut des photos de l'appareil.
callBack : Fonction appelée après la prise de photo avec pour argument le chemin/nom de la photo prise.
La fonction retourne 0 si la lecture des paramètres d'entrée était incorrecte, et retourne 1 dans le cas contraire.

La combinaison avec la fonction emailDir permet d'envoyer sur le champ par email la photo qui vient d'être prise, comme indiqué ci-dessous.

int takeCamPict (String pathName, String callback)
Prise de photo sur appareil photo avant.

int takeCamPict (String pathName)
Prise de photo sur appareil photo avant sans fonction callBack.