Atelier d’Introduction au numérique
Le programme décrit ci-dessous propose
· une initiation au numérique et au développement d’applications mobiles, avec 5 séances d’une heure :
o introduction aux algorithmes sous forme de jeu (blockly maze)
o
réalisation d’une application ‘Hello world’ qui
affiche un texte et le dit à haute voix,
puis qui écoute l’utilisateur pour traduire ce qu’il dit dans une autre langue
o réalisation d’une application qui lit le code barre d’un produit alimentaire, va chercher ses caractéristiques sur le Web et affiche son nutriscore,
o réalisation d’une application qui affiche une carte avec la position de l’utilisateur, puis la position d’autres objets
o réalisation ou modification d’une application de type "chasse aux pokemons"
· un atelier de 2 heures sur le son (physique)
Pour l’initiation au numérique et au développement d’applications mobiles, il
faut :
Un PC et un
smartphone ou une tablette (plutôt Android) pour 2 élèves avec accès à
Internet.
Pour le PC on utilise un navigateur (Firefox ou Chrome).
Pour les tablettes ou smartphones, on
utilise l’application "AI2
companion" installée depuis le playstore. Prévoir l’accès à Internet
par Wifi, et de préférence sur même réseau local que les PC.
La configuration est décrite
ici. Le bon fonctionnement est à vérifier à l’avance.
Les autres ressources sont en accès libre sur Internet :.
· blockly maze pour l’apprentissage des premières notions d’algorithmie.
· App Inventor pour réaliser des applications mobiles, en exploitant les capteurs des smartphones, Internet et le Web. Comme Scratch, App Inventor vient du MIT, c’est son équivalent pour 12 ans et plus. App Inventor est utilisable de façon anonyme ou avec un compte Gmail comme indiqué ici
Pour l’atelier sur le son il faut :
Un PC avec Libre
office, un smartphone avec une appli sonomètre,
une enceinte BT et en option des petits matériels (bougie et entonnoir). Récupérez
les planches de présentation et les sons dans le fichier compressé à cette adresse.
Décompressez (unzip) ce fichier et vérifiez que la présentation fonctionne en
cliquant sur les liens qui jouent les sons.
Si vous voulez faire des analyses en live, installer le logiciel audacity sur le PC et si vous voulez que les élèves expérimentent eux-mêmes,
prévoyez un smartphone par groupe de 3 ou 4 avec l’application birdnet
et spectrum
analyser ou équivalent (voir descriptif dans les videos)
Principe :
·
le son est abordé comme une vibration qui se
propage à une vitesse qui dépend du milieu,
puis on expérimente la notion de fréquence, de graves et d‘aigus, d’infra et
ultra-sons
puis la notion de niveau sonore mesuré en décibels, avec les risques pour la
santé,
· on voit ensuite à la représentation du son en fonction du temps, puis en fonction du temps et de la fréquence avec le spectrogramme (on évite la notion de spectre),
· enfin on applique ces notions à des cas concrets : reconnaissance des oiseaux par leur chant (birdNet), mesure d’une distance par l’écho, ou de la réverbération dans une salle.
Déroulé :
· voir planches et media (dans atelierson.zip) en support et résumés : vidéoSon1 et vidéoSon2
Moyens utilisés :
· l’enseignant dispose des planches avec les liens vers les sons à jouer,
· il mesure le niveau sonore avec l’appli sonomètre sur son smartphone (renvoyé à l’écran),
· une enceinte, un entonnoir et une bougie pour illustrer les dangers du niveau sonore,
·
les outils utilisés sur le PC sont en ligne ou
téléchargeables (audacity),
les outils utilisés sur smartphone sont sur le playstore (sound meter, birdnet
ou merlin bird), ou en ligne (sound spectrum analyzer),
·
o mesure du niveau sonore avec sound meter
o reconnaissance des oiseaux par leur chant avec Birdnet ou Merlin bird
o affichage avec audacity (PC), également utilisable pour mesurer la vitesse du son et du temps de réverbération.
o en option pour des expériences mobiles avec un smartphone :
§ function generator ou frequency sound generator
Le principe est d’utiliser le smartphone comme un pendule, de
mesurer sa vitesse angulaire avec le gyroscope, d’en déduire sa vitesse
linéaire, puis de mettre en correspondance les énergies cinétique et
potentielle :
½ v2 = gh ou ½ v2
– gh = constante.
A ce stade, la faisabilité n’est pas démontrée : le
principe est simple, mais les sources de bruit
ou d’erreur sont multiples. Pour l’instant, on a donc abandonné l’idée
de cet atelier.
Sujet |
temps |
Activité |
Points abordés |
supports |
Qu’est-ce qu’un |
5 |
introduction |
Ce qu’on va faire dans cette 1° séance et les suivantes |
|
|
25 |
Blockly, niveaux 1 à 7 ou 9 |
Apprentissage par la pratique (analyse, codage, tests, séquences, itérations,
conditions) |
|
|
10 |
Revue : analyser, pseudo-code, traçage, … |
Analyser/décomposer, |
|
|
10 |
Définition d’un algorithme |
Définition d’un algorithme : comme solution à un problème Structuré par les séquences, boucles et branchements conditionnels |
|
|
? |
Quiz |
Quiz sur les algorithmes et la lecture (traçage) de code |
|
Présentation |
10 |
·
rappels et démarche (avec le Quiz ?) ·
présentation de ce que l’on va faire |
Quiz sur les algorithmes et la lecture (traçage) de code |
|
Hello World |
15 |
Hello world 1 ·
au démarrage, affichage d’un texte |
·
lancement App Inventor ·
design, choix composants (ress.) ·
transfert smartphone, test |
|
|
15 |
Hello world 2 : ·
quand clic sur le bouton : le smartphone
dit le texte à haute voix |
Design ·
Interface / IHM : bouton ·
Media : composant texte à parole ·
nommage des composants Blocs/programmation o quand clic sur
bouton : appeler la fonction qui lit le texte Notions abordées ·
identification des types de blocs en fonction de o leur couleur :
évènements, propriétés, procédures (ou fonctions) o leur forme : obtenir
ou écrire (get/set) ·
procédures et fonctions : certaines ne renvoient pas le résultat
tout de suite ·
évènements ·
un algorithme ou un script par évènement. L’application c’est
l’ensemble des scripts ou programmes exécutés en réponse à des évènements |
|
|
|
Hello world 3 (traduction) ·
quand on clique sur le bouton : demander la
traduction du texte en anglais ·
puis quand la traduction arrive : afficher la
traduction et la dire à haute voix |
Design ·
media : traducteur /translator ·
Interface : zone de texte Blocs/programmation ·
initialisation d’une variable pour la langue (langueOut) ·
quand clic sur bouton : appel de la procédure qui traduit avec 2
paramètres la langue dans
laquelle traduire, et le texte à traduire ·
quand la traduction revient afficher le
résultat de la traduction dans la zone du texte traduit ne pas oublier
de modifier la langue du locuteur (texte à parole) Notions abordées ·
variables (couleur orange) et blocs pour les lire et les mettre à
jour (get/set) ·
chaines de caractères (couleur grenat) : get ·
modification par programme des propriétés d‘un composant ·
procédures ou foncions asynchrones : le programme n’attend pas
le résultat. L’arrivée du résultat donne lieu à un nouvel évènement (quand
traduction reçue) ·
programmation évènementielle :
le programme comme série de scripts qui définissent la réaction à
des évènements |
|
|
|
Hello world 4 (reconnaissance de la parole) ·
quand on clique sur le bouton Ecouter demander au
smartphone d’écouter ce que dit
l’utilisateur ·
quand l’application reçoit le texte reconnu afficher le texte reconnu dans la zone de texte et reprendre
le programme précédent pour traduire et dire. |
Design ·
renommer le bouton : BoutonEcouter ·
ajouter media : reconnaissance vocale Blocs/programmation ·
quand clic sur BoutonEcouter : o lancer la reconnaissance
vocale ·
quand texte reconnu : o si c’est le texte complet
(partial= faux) o puis (reprise du programme
précédent) : Attention Dans la
reconnaissance vocale (nouvelle version), il ne faut pas traiter les résultats
partiels, donc vérifier que le paramètre partial est faux. |
|
|
|
Hello world 5 (choisir la langue en sortie) ·
choix de la langue de traduction avec un spinner (curseur animé) |
Design ·
Interface : o ajout spinner (ou curseur
animé) : "SpinnerLangueOutput" Blocs/programmation ·
pour l’évènement « après sélection du spinner » : o mettre à jour la variable langue avec la
sélection du spinner ·
Au démarrage de l’application, évènement "quand screen initialize"
o mettre à jour la sélection
du spinner avec la variable langue, pour que la valeur affichée par le
spinner soit – dès le départ - la même que la variable langue |
|
|
|
Hello world 6 (choisir la langue en entrée) ·
choisir la langue en entrée avec un spinner (curseur animé) ·
ajouter une image |
Design ·
Interface : o ajouter un spinner (ou curseur
animé) : SpinnerLangueInput o ajouter une image Blocs/programmation ·
initialiser la variable langueInput : "fr" ·
au démarrage : quand screen1 Initialize o copier la liste des langues (propriété Elements)
de spinnerOutput o mettre à jour la propriété sélection de spinnerInput avec
langueInput ·
pour l’évènement « après sélection du spinnerIput » : o mettre à jour la variable langueInput avec
la sélection du spinner ·
Dans le script de l’évènement
"quand clic sur bouton Ecouter" : o mettre à jour la propriété langue du
composant de reconnaissance vocale avec la variable langueInput |
|
|
|
Hello world 7 (traduction
bidirectionnelle) ·
quand on clique sur le bouton demander au
smartphone d’écouter ce que dit
l’utilisateur et le traduire en texte ·
quand l’application reçoit le texte reconnu affichage du
texte reconnu dans la zone de texte et reprise du
programme précédent (traduction et vocalisation) |
Design ·
interface : o renommer
"BoutonEcouter" en "BoutonDirectEcouter", mettre couleur
en gris o créer un bouton
"BoutonReverseEcouter" et mettre couleur en rouge o créer un arrangement
horizontal et mettre les 2 boutons à
l’intérieur o ajouter un label entre les
deux, avec un texte vide en largeur 25% Blocs/programmation ·
Dans l’évènement quand clic sur "boutonDirectEcouter", ajouter o mettre la couleur de fond
de screen1 à gris o mettre" langueInput"
à SpinnerInput.Selection o mettre"
langueOutput" à SpinnerOutput.Selection ·
dupliquer le script quand clic sur "boutonDirectEcouter" et
le recommmer en quand clic sur "boutonReverseEcouter", et modifier
son contenu (couleur et inversion input/output) o mettre la couleur de fond
de screen1 à rouge o mettre"
langueOutput" à SpinnerInput.Selection o mettre"
langueInput" à SpinnerOutput.Selection |
|
|
|
|
|
|
Open food
facts |
|
Conception et réalisation d’une application Qu’est-ce qu’Internet ? |
Web et Internet (URL) Capteurs |
|
Géolocalisation
et cartographie |
|
Exercices sur la géolocalisation avec un smartphone Présentation des types de géolocalisation (GPS, Wifi, …) Réalisation d’une application qui affiche sa position sur une carte |
Géolocalisation (GPS, Wifi, …) Serveurs de cartes (open street map) |
|
Application géolocalisée Pokemons |
|
|
|
|
cliquer sur
l’image pour lancer
· notions abordées :
o algorithmes, décomposition, diagramme fonctionnel ou pseudo-code
· objectifs pédagogiques :
o
comprendre la notion d’algorithme comme méthode
de résolution de problème,
et comprendre sa structure en séquences d’actions, boucles
et conditions.
o appréhender les étapes d’un développement : décomposition, passage du langage naturel au langage informatique (pseudo code), développement et test progressifs
· Déroulé : cf. supports
o 35 mn : jeu blockly maze : labyrinthe
§ séquences (niveaux 1-2), boucles (niveaux 3-5), conditions (niveaux 6-8)
(pour info : ce
jeu similaire est plus difficile, mais basé sur la géométrie)
o
10 mn revue de définition d’un algorithme :
planches (1a et1b planches 3 à 34)
o 10 mn écrire un algorithme / décomposition, pseudo code, codage, traçage
§ écrire – en classe entière - le pseudo code du niveau 9 (ou 8 selon le niveau)
§
exercice de lecture/traçage de code :
https://docs.google.com/forms/d/e/1FAIpQLSfqwk17gyssRa-ztWGRXQb_K8Jh48ZjgqkkvvrDujmVO4MqYw/viewform
o 5 mn debrief
§ qu’est-ce qu’un algorithme ?
§ comment écrire un algorithme : décomposer, écrire, tester
§
exercices à préparer le cours suivant : niveaux 9 et 10 ou
niveau 10
https://blockly.games/maze?lang=fr&level=9&&skin=0
o quiz sur les algorithmes (peut être fait au début du cours suivant
§
Quiz Google forms sur les
algorithmes :
https://docs.google.com/forms/d/e/1FAIpQLSf6v7jlArX32jfIS26okCdFk9tGQRMxlt8MH3J8SS5F1SYQhg/viewform
§
exercice de lecture/traçage de code :
https://docs.google.com/forms/d/e/1FAIpQLSfqwk17gyssRa-ztWGRXQb_K8Jh48ZjgqkkvvrDujmVO4MqYw/viewform
Dans cette séance on commence par concevoir et réaliser ensemble une première application très simple qui consiste à afficher, "bonjour le monde", puis avec le nom de l’utilisateur, puis avec une couleur de fond aléatoire, puis en rafraichissant l’affichage en fonction d’un capteur. Elle permet parcourir des notions diverses.
· notions abordées :
o l’environnement de développement App Inventor
o les étapes de design et de programmation,
o les blocs : forme, couleur et catégorie
o les évènements, scripts, variables et procédures
· objectifs pédagogiques :
o savoir réaliser une application mobile simple
o comprendre
§ les étapes : design avec le choix des ressources, puis programmation et tests
§ la nature des blocs : get/set ou obtenir/mettre (correspondant à leur forme)
§ la structure évènementielle d’une application (event driven)
§ les catégories de blocs : variables, propriétés, procédures et fonctions, évènements, texte, booléens (associées à leur couleur)
§ la notion de variable
§ la notion de procédure
§ la notion de capteur (moyen de perception de l’environnement)
· déroulé sommaire
o
SMS game : réalisation d’une loterie, faite
et expliquée par l’enseignant.
Les élèves jouent à la fin en envoyant un SMS, le gagnant tiré au sort reçoit
un SMS
cf. vidéo de développement
de cette appli
o "bonjour le monde" réalisation d’une première application par les élèves
§
§ V2 : Bonjour + nom utilisateur
§
+ fond d’écran de couleur aléatoire
§ V4 : ajout du rafraichissement d’écran quand on secoue l’appareil
o
déroulé détaillé : voir chapitre
Rédaction en cours
Rédaction en cours
· séance 2 – "bonjour le monde"
Dans cette séance les élèves réalisent une application qui va écouter ce que dit l’utilisateur, le traduire dans une autre langue et le redire dans cette langue. L’application fait appel à des fonctions de reconnaissance vocale, de traduction et de diction (texte à parole).
· notions abordées :
o décomposition fonctionnelle : services et procédures asynchrones (on n’attend pas la réponse, son arrivée donne lieu à un évènement traité dans un autre script)
o utilisations de services externes et/ou en ligne : reconnaissance de la parole, traduction, …
o fonctions dites "asynchrones" : dans un script, le programme n’attend pas la réponse à une demande. L’arrivée de la réponse donnant lieu à un évènement traité par un nouveau script (programmation évènementielle).
· objectifs pédagogiques :
o décomposer ce que doit faire l’application et trouver les composants pour le faire
§ 1. Convertir parole en texte, 2. Traduire texte, 3. dire le texte traduit
o voir la différence entre une fonction qui donne la réponse tout de suite et une fonction (ou procédure) asynchrone où on n’attend pas la réponse.
o utiliser une fonction avec des paramètres en entrée
o modifier les propriétés d’une fonction
o utiliser les données ou paramètres transmis par un évènement
o utiliser une liste déroulante (spinner) pour choisir la langue
· déroulé sommaire (voir déroulé détaillé en annexe)
o
V1 : version initiale (un bouton par
étape)
o Design
§ 1 bouton pour écouter et convertir en texte ce que dit l‘utilisateur
§ 1 bouton pour traduire le texte dans une autre langue
§ 1 bouton pour lire à haute voix le texte traduit
§ 2 zones de texte pour afficher les textes reconnus et traduits
§ 3 composants : reconnaissance vocale, traduction et ‘texte à parole’
o Codage/programmation : 5 scripts
§ Quand clic sur 1° bouton : lancer la reconnaissance vocale
§ Quand le texte a été reconnu : l’afficher
§ Quand clic sur 2° bouton : lancer la traduction
§ Quand le texte a été traduit : afficher ce texte traduit
§ Quand clic sur 3° bouton : convertir le texte traduit en parole
o
V2 : enchainement des opérations sur un
bouton
§ Codage/programmation : 3 scripts
· Quand clic sur 1° bouton : lancer la reconnaissance vocale
· Quand le texte a été reconnu : l’afficher et lancer la traduction
· Quand texte a été traduit : afficher traduction et convertir en parole
o
V3 : choisir les langues en entrée et en
sortie
§ Design
· Ajout de 2 spinners (curseurs animés) pour choisir chaque langue dans une liste. On définit la liste dans les propriétés et la langue sélectionnée au départ.
§ Codage
· Quand l’utilisateur a sélectionné une nouvelle langue, mise à jour de la variable qui porte cette langue : langueInput ou langueOutput
o
V4 : traduction bidirectionnelle, selon
l’orientation du smartphone
§ Design
· ajout d’un bouton pour dicter dans l’autre sens
· accéléromètre pour détecter la position du smartphone
§ Codage
· Quand clic sur bouton1 Dicter
o langueInput ¬ langue sélectionnée par le curseur 1
o langueOutput ¬langue sélectionnée par le curseur 2
o appeler la procédure dicter
· Quand clic sur bouton1 Dicter
o langueInput ¬ langue sélectionnée par le curseur 2
o langueOutput ¬langue sélectionnée par le curseur 1
o appeler la procédure dicter
Bonus avec l’accéléromètre
· Quand téléphone secoué
o si (acc z >7.5)
appeler la procédure dicter (direct)
o sinon sii (acc z <2.5)
appeler la procédure dicter (inverse)
Rédaction en cours
Rédaction en cours
L’animateur réalise une application qui attend et enregistre les SMS, puis - quand on clique sur un bouton – tire un numéro au hasard et lui envoie un SMS "vous avez gagné".
étape |
Description |
Notions |
Design conception |
Design /
décomposition: ·
Dessiner l’interface et écrire
une phrase qui décrit l’application ·
Identifier o les ressources
nécessaires : o les évènements o et données manipulées
(liste numéros) |
maquette évènements composants visibles (bouton) et cachés : SMS variable de type liste |
Design réalisation |
|
Ajout et paramétrage des composants, Mise en page |
Pseudo code |
·
déclarer et initialiser la liste des numéros ·
quand application démarre o
activer SMS ·
quand SMS reçu o
ajouter numéro à liste numéros ·
quand bouton cliqué o
choisir un numéro au hasard o
envoyer un sms à ce numéro |
Pseudo code de chaque évènement |
codage |
|
codage vérification, traitement des erreurs |
Création exécutable |
·
Installation d’AI2 companion depuis le playstore ·
Construire l’exécutable ·
Télécharger l’application sur le smartphone |
création de l’exécutable (.apk)
essais |
étape |
Description |
Notions vues |
version 1 |
Préparation :
installer l’appli AI2 companion sur le smartphone Description :
au démarrage, l’application affiche
‘bonjour le monde’ Design :
Ajout d’un composant label
: label texte Centrage verticale et
horizontal de Screen1 Réglage de la taille et de la couleur des caractères de
labelTexte Evènements à
traiter: quand l’application démarre
(screen.initialize) Pseudo
code : quand
Screen1. Initialize mettre
le texte de labelTexte à "bonjour le monde" Codage : Construire
l’exécutable : Télécharger
sur le smartphone : Tester |
Réalisation d’une application complète minimale Design : ·
Choix et ajout d’un composant label pour afficher un texte Mise en page : · modification des propriétés de Screen1 : centrage horizontal et vertical, choix de la couleur de fond · modification des propriétés de labelTexte, taille et couleur des caractères compilation du code,
transfert smartphone, |
Version 2 |
Description :
au démarrage, afficher ‘bonjour’ + le
nom de l’utilisateur Design :
sans changement Evènements :
sans changement Pseudo
code : Initialiser
la variable nom avec une valeur quand
screen1. Initialize mettre le texte de labelTexte à
"bonjour le monde" + nom Codage : Construire
l’exécutable : Télécharger
sur le smartphone : Tester |
Variable de type texte Bloc de jointure de textes |
Version 3 |
Description : comme précédent + choisir une couleur aléatoire pour le fond d’écran couleur du fond d’écran de façon Design : sans changement Evènements : sans changement Pseudo code : Initialiser la variable couleur quand screen1. Initialize mettre le texte de labelTexte à "bonjour le monde" + nom mettre dans la variable couleur, une dose
aléatoire de rouge, vert et bleu Codage : Construire l’exécutable, Télécharger sur le smartphone, Tester |
Définition d’une couleur depuis une liste de base Définition d’une couleur par ses composantes RVB entre 0 et 255 Fonction qui renvoie un entier aléatoire Modification d’une propriété de Screen1 |
Version 4 |
Description : idem + rafraichir quand on secoue
l’appareil Design : Ajouter un composant non visible
accéléromètre Evènements : Nouvel évènement quand accéléromètre secoué Pseudo code : Initialiser
la variable couleur quand
screen1. Initialize appeler la
fonction rafraichir quand
accéléromètre. secoué appeler la
fonction rafraichir procédure rafraichir mettre labelTexte.texte à "bonjour le
monde" + nom mettre
dans la variable couleur, une couleur
qui contient une dose aléatoire de rouge, de vert et de bleu Codage : Construire l’exécutable,
Télécharger sur le smartphone, Tester |
Utilisation d’un composant accéléromètre Utilisation d’une procédure pour : 1. éviter les doublons
|
étape |
Description |
Notions |
Description |
l’application doit permettre d’écouter ce que dit l’utilisateur, le traduire dans une autre langue et le redire dans cette langue |
|
Décomposition |
·
"dicter"
et convertir en texte à afficher (reconnaissance vocale) ·
"traduire"
et afficher traduction qui est affichée ·
"lire »
le texte traduit à haute voix |
Analyse, décomposition fonctionnelle |
Design réalisation |
Composants visibles ·
3
boutons : "écouter",
"traduire", "lire" ·
une zone de
texte pour le texte reconnu ·
une zone de
texte pour le texte écouté traduit Composants invisibles ·
reconnaissance
vocale, translator, texte à parole
Propriétés ·
ajouter une
image au format png (transparent) en fond d’écran ·
choisir le nom
et la taille des boutons |
Ajout et paramétrage des composants, Mise en page |
Données et variables |
Données et variables de l’application ·
langueInput :
la langue à écouter en entrée ·
langueOutput :
la langue de traduction en sortie ·
texte écouté
(propriété du composant texte) ·
texte
traduit (propriété du composant texte) |
|
Pseudo code |
·
définir/initialiser
langueInput et langueOutput ·
quand clic sur
bouton dicter o
mettre la
propriété langue à écouter à langueInput o
appeler la
fonction de reconnaissance vocale ·
quand texte reconnu o
afficher le
texte dans la zone de texte ecoute ·
quand clic sur
traduction o
appeler la
fonction de traduction avec en paramètres, le texte à traduire et la langue
(langueOutput) ·
quand traduction
obtenue o
afficher la
traduction dans la zone de texte trad. ·
quand clic sur
lire o
mettre la
propriété langue à lire à langueOutput o
appeler la
fonction texte à parole avec le texte traduit |
|
codage |
|
|
étape |
Description |
Notions |
Description |
Dans cette
version, on va enchainer les actions après avoir déclenché la reconnaissance
vocale avec le bouton dicter, donc
lancer la traduction dès que le texte est reconnu et lancer la lecture
dès que la traduction est disponible. Les boutons traduire et lire deviennent inutiles. |
Analyse, décomposition fonctionnelle |
Description |
·
Quand l’utilisateur clique sur le bouton « écouter » ·
quand le texte est reconnu afficher le résultat et
demander la traduction ·
quand la traduction arrive, l’afficher et demander la lecture à haute
voix |
Analyse, décomposition fonctionnelle |
Design |
·
Ajouter un composant ‘son’ pour pouvoir faire vibrer ·
On n’utilisera plus les boutons traduire et lire, |
|
Pseudo code |
· Quand l’utilisateur clique sur le bouton "dicter" o faire vibrer o et demander la reconnaissance vocale ·
quand le texte est reconnu o afficher le résultat o demander la traduction ·
quand la traduction arrive, o afficher la traduction o demander la lecture à haute
voix |
|
codage |
|
|
o
étape |
Description |
Notions |
Description |
Dans cette version, l’utilisateur peut
choisir la langue en entrée et la langue en sortie |
|
Décomposition |
On va utiliser un curseur animé (spinner ou liste déroulante) pour choisir chacune des langues. La liste des langues sera définie dans les propriétés des 2 curseurs animés (on peut aussi les définir dans le programme, quand Screen1.initialize) |
|
Design/ composants |
·
Composants visibles : ajouts o un
arrangement horizontal (largeur remplir parent) o avec 2
curseurs animés (spinner) In et Out § sélection
‘fr’ pour in, ‘en’ pour out § element :
fr,ar,de,en,es,it pour les deux o séparés
par un label (largeur fill parent) · invisibles : inchangés |
|
Design |
|
|
Pseudo code |
·
Après sélection dans la liste des langues à écouter
: o Mettre la langue sélectionnée comme langue en
entrée ·
Après sélection dans la liste des langues de
traduction : o Mettre la langue sélectionnée comme langue de traduction |
|
code |
|
|
étape |
Description |
Notions |
Description |
· l’application doit traduire dans un sens quand c’est l’utilisateur qui parle et dans l’autre quand c’est l’interlocuteur qui répond. |
|
Design / analyse |
·
utiliser
l’orientation du smartphone (vertical ou tendu vers l’utilisateur) pour
déterminer qui parle. ·
à
chaque changement changer la couleur de l’écran |
|
Design / composants |
· visibles : sans changement · invisibles : ajout d’un composant accéléromètre |
|
Design |
|
|
Pseudo code |
o
|
|
codage |
|
|
Bonus accéléro |
·
quand smartphone secoué change o
si accélération
z < 2.5 §
appeler
dicterTraduireEtDire(direct) o
sinon
accélération z < 2.5 § appeler dicterTraduireEtDire(inverse) |
|