
Bon Appetit
L'appli de cuisine pour smartphone
Présentation: Le projet proposé consiste à concevoir une application mobile Android destinée à consulter des recettes de cuisine soit de manière tactile avec affichage sur l’écran, soit de manière vocale avec lecture parlée des informations et commande vocale.
Problématique: La plupart des gens consultent des recettes de cuisine sur leur ordinateur ou leur smartphone, nous souhaiton répondre au problème de l’interface, car un smartphone est fragile, et utilisé dans la cuisine pose un problème de salissure de l’écran, des mains mouillées. Aussi, nous souhaitons que l’utilisateur puisse effectuer une tache mauelle, sans avoir de contact physique avec le smartphone.
...
...
...
Choix méthodologiques : méthode UML. Architecture technique : Dans le cadre du développement de ce projet, j’ai choisi d’utiliser le langage Java et une base MySQL sur un serveur Apache. L’hébergement est fourni par AlwaysData .
Choix graphiques : L’interface graphique est simple et ergonomique. Nous avons souhaité doubler toutes les commandes vocales par des boutons. Sous Android, une vue est dédiée à la partie graphique, dans un langage XML.
UML (Unified Modeling Langage) est un langage de modélisation objet permettant de représenter les 5 de Ph. Kruchten ainsi que leurs interactions. Ce langage fournit un ensemble de symboles nécessaires pour conduire un projet S.I. et répondre aux cahiers des charges du client.
Pour l’analyse et la conception, nous avons utilisé MagicDraw. Il permet de manipuler l’ensemble des diagrammes UML.
Pour les diagrammes plus simples, nous avons choisi DrawIo, un utilitaire de type SAS.
Pour le codage, nous avons utilisé AndroidStudio. Développé par google, il est devenu incontournable pour utiliser les dernières
versions de l'API.
De nombreuses API sont nécéssaires au projet. Voici les connexions qui se font par l’intermédiaire
de la classe "VoiceCommandService" :
-Text to Speech tts
-Speech Recognizer SpeechRecognizer
Egalement, pour la base SQL, la classe "RecettesDataBase" appele la librairie :
-com.mysql.jdbc.Driver
L’objectif de cette application est de permmettre un accès plus facile à des recettes de cuisine, sans interaction physique
avec le smartphone. Tout utilisateur doit pouvoir consulter l’ensemble d’une recette et naviguer librement, de manière vocale.
Nous souhaitons répondre aussi directement à des personnes déficientes visuelles, aux illetrés, qui ont eu aussi besoin de faire
à manger.
Besoins principaux du point de vue des utilisateurs :
-Accéder au menu des recettes
-Choisir une recette
-Consulter les ingrédients et les étapes
-Consulter une photo de la recette en cours
-Conserver l'écran allumé à tout moment
-Obtenir de l’aide à tout moment
-Verifier la disponibilité des sevices de lecture et reconnaissance vocale.
-Pouvoir quitter l'application par une commande vocale
Contraintes techniques :
Une base mySQL est la solution choisie pour héberger les données, chaque recette sera hébergée en ligne. Cette solution permet
de rendre les données accessible à tous les utilisateurs, mais aussi de pouvoir enrichir facilement un contenu centralisé.
Ce diagramme représente les fonctions du système du point de vue des utilisateurs. L’internaute pourra consulter le contenu d’un livre de recettes virtuel, en naviguant soit par commande vocale, soit par les touches dédiées.

Un diagramme de sequence représente pas à pas le mécanisme, sous la forme, d’un déroulement d’étapes. Cette méthode va permettre de modéliser la navigation entre chaque classe de notre application en fonction des acteurs et des cas d’utilisations présentées plus haut.
Pour attirer de nouveaux clients et les fidéliser, il est important de répondre aux exigences de qualité suivantes :
- Une ergonomie simple et efficace :
L’objectif est de faire découvrir aux utilisateurs une manière plus simple et conviviale de faire la cuisine en leur proposant
une manière ludique de consulter un livre de recettes.
-Cibler une population de type assez âgé et peu à l’aise avec l’outil informatique.
-Proposer des contenus riches et variés.
Nous avons pensé ce projet avec des ordres de commande des plus naturels et intuitifs, tels que suivant, précédent, ingrédients,
menu ou encore étapes. L’utilisateur ne doit pas avoir besoin de notice pour utiliser notre application.
- Budget :
Le site et l’hébergement sont gratuits. Les couts doivent être maitrisés en raison de la petite
structure de notre équipe.
L’objectif de cette étape est de produire le diagramme de classes qui servira pour l’implémentation.
Afin de documenter les deux API indispensables à l'application, vous trouverez ci après des liens vers leurs documentations
techniques.
Cliquez pour agrandir
L’architecture MVC est un design pattern. Son objectif est de découpler au maximum l’interface utilisateur, sa logique de
construction et les traitements sous-jacents, afin de permettre la réutilisation de la logique métier et ainsi une meilleure
évolution de l’application.
L’architecture MVC se décompose en 3 couches :
1) Le modèle : Représente le comportement de l’application comme le traitement des données, les interactions avec la base de
données.... Il décrit les données manipulées par l’application et définit les méthodes d’accès.
2) La vue : Représente l’interface sur laquelle l’utilisateur va agir. Cette dernière n’effectue aucun traitement, elle se contente
de mettre en forme les données et traitements transmis par le modèle.
3) Le contrôleur : Gère les évènements de synchronisation pour mettre à jour la vue ou le modèle. Il n’effectue aucun
traitement, ne modifie aucune donnée. Il analyse la requête du client et se contente d’appeler le modèle adéquat et de
renvoyer la vue correspondant à la demande.
Lorsqu’un client envoie une requête à l’application, celle-ci est analysée par le contrôleur, qui demande au modèle approprié
d’effectuer les traitements, puis renvoie la vue adaptée au navigateur, si le modèle ne l’a pas déjà fait.
Architecture de l’application :
« MainActivity.java » qui sera le contrôleur de l’application.
« Modèles » : Le modèle englobe à la fois la logique métier et les données, nous avons créé la classe "RecettesDatabase.java"
En ce qui concerne la gestion de la parole, nous avons regroupé la synthèse vocale et la reconnaissance vocale dans la classe "VoiceCommandService".
« Vue » : La vue permet l’affichage des données issues du modèle.
Dans ce projet, nous avons créé manuellement le fichier "ActivityMain.xml".
La réalisation de cette application nous a permis de se familiariser avec des techniques sur java avec android studio
et des méthodes UML .
Nous comprenons de fait l’intérêt de ces méthodes qui assurent un travail structuré et
permettent d’anticiper parfois des problèmes que nous n’avions pas soupçonné au départ.
Ce projet a été l’occasion de découvrir le travail en équipe, sa répartition et le problème du suivi et de l’avancement
entre nous. A l’avenir, nous envisageons d’utiliser l’outil Github qui permet de suivre un avancement et permet de
travailler à distance sur un projet commun.
Nous n'avons volontairement pas créé de manuel utilisateur car nous avons cherché à créer un outil tellement simple qu'un manuel d'utilisation est inutile.
Afin de vous permettre d'évaluer cette application, nous fournissons les éléments suivants:
Ici téléchargez le zip de l'application à compiler sur AndroidStudio.
Aucune manipulation n'est à effectuer sur la base de données, car elle est déja hébergée en ligne.
Cependant, si vous souhaitez installer votre propre base de données, téléchargez le scrip SQL Ici
Un bon accès internet est nécessaire (utilisez le wifi de préférence).
Attention, si votre téléphone est en version 5 ou ultérieure, veuillez autoriser les permissions suivantes:
-ACCESS_NETWORK_STATE
-INTERNET
-RECORD_AUDIO