Outils pour utilisateurs

Outils du site


cours:plim:projet16_17:gr1:gr1

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
cours:plim:projet16_17:gr1:gr1 [2017/01/28 11:01]
gchapon [Application mobile SmartContactList sous Android]
cours:plim:projet16_17:gr1:gr1 [2017/02/17 15:00] (Version actuelle)
gchapon [Code source]
Ligne 11: Ligne 11:
 ===== Un scénario d'​illustration du Projet ===== ===== Un scénario d'​illustration du Projet =====
  
-L’idée de ce projet est de réaliser une application capable de trouver et de proposer à un utilisateur les contacts les plus probables qu’il souhaite appeler à un instant donné. Par exemple, en tant que Bob, commercial ayant beaucoup de contact ​et énormément d'​appels à passer dans la journée, je veux que mon téléphone me propose une liste de contact favoris au moment où je souhaite passer un appel. Pour cela, l’application aura accès au journal d’appel de Bob et utilisera un algorithme d'​apprentissage supervisé. De même, Bob pourra effectuer un appel depuis l’application. ​+L’idée de ce projet est de réaliser une application capable de trouver et de proposer à un utilisateur les contacts les plus probables qu’il souhaite appeler à un instant donné. Par exemple, en tant que Bob, commercial ayant beaucoup de contacts ​et énormément d'​appels à passer dans la journée, je veux que mon téléphone me propose une liste de contact favoris au moment où je souhaite passer un appel. Pour cela, l’application aura accès au journal d’appel de Bob et utilisera un algorithme d'​apprentissage supervisé. De même, Bob pourra effectuer un appel depuis l’application. ​
  
  
Ligne 18: Ligne 18:
 **Cible Mobile utilisée :** **Cible Mobile utilisée :**
    
-Etant donné, qu'​Android est l'un des leaders du marché des OS pour les applications mobiles, nous allons nous orienter vers une application compatible avec un os de type Android. Nous prendrons comme cible un téléphone Samsung Galaxy S4 mini avec OS Android et une version 5.0.3+Étant ​donné, qu'​Android est l'un des leaders du marché des OS pour les applications mobiles, nous allons nous orienter vers une application compatible avec un os de type Android. Nous prendrons comme cible un téléphone Samsung Galaxy S4 mini avec OS Android et une version 5.0.3
  
   * Référence du SmartPhone : Samsung Galaxy S4 mini   * Référence du SmartPhone : Samsung Galaxy S4 mini
Ligne 48: Ligne 48:
  
  
-====== ​Ressouces ​utilisées dans le Projet ======+====== ​Ressources ​utilisées dans le Projet ======
  
  
Ligne 54: Ligne 54:
   * Le journal d'​appel de l'​utilisateur pour accéder aux informations de chaque appel préalablement réalisés :    * Le journal d'​appel de l'​utilisateur pour accéder aux informations de chaque appel préalablement réalisés : 
           * Date et l'​heure de l'​appel           * Date et l'​heure de l'​appel
-          * Le numéro de l'​appel 
           * La personne appelée ​           * La personne appelée ​
           * Appel reçu ou émis           * Appel reçu ou émis
Ligne 74: Ligne 73:
 **Avec quelles données ?** **Avec quelles données ?**
  
-Le vecteur sera composé de la date, de l'​heure d'​appel,​ de tous les contacts présents sur le téléphone, ​ainsi que le nombre d'​appel par contact ​et le numéro ​de téléphone ​qui constituera notre cible (la classe à reconnaitre).+Le vecteur sera composé de la date, de l'​heure d'​appel,​ de tous les contacts présents sur le téléphone, ​du nombre d'​appel par contact ​ainsi que de l'​identifiant du contact ​qui constituera notre cible (la classe à reconnaître).
  
 Cet algorithme nous parait tout à fait pertinent du fait du nombre de contact que l'on peut avoir sur un téléphone. Les données engendrées seront donc normalement assez importantes pour fournir un résultat cohérent quant à la prédiction de l'​appel que l'on veut passer. ​ Cet algorithme nous parait tout à fait pertinent du fait du nombre de contact que l'on peut avoir sur un téléphone. Les données engendrées seront donc normalement assez importantes pour fournir un résultat cohérent quant à la prédiction de l'​appel que l'on veut passer. ​
Ligne 89: Ligne 88:
 Pour réaliser la phase de test de notre application,​ nous utiliserons le jeu de données de nos téléphones personnelles. ​ Pour réaliser la phase de test de notre application,​ nous utiliserons le jeu de données de nos téléphones personnelles. ​
  
-====== ​Machine "​Serveur" ​======+==========RENDU FINAL========== 
 +====Code source==== 
 +Ci-dessous le lien pour accéder au code source de la partie backend (serveur Python) et  la partie mobile (projet android studio) : 
 +[[https://​github.com/​gatienchapon/​SmartContactList]]
  
-===== Explication générale ​=====+====== Sécurité et vie privée ======
  
-Le serveur fonctionne sous une machine linux ou windows. C'est celui-ci qui se charge de l'​algorithme d'​apprentissage ​qui est Random Forest dans notre cas.+Pour assurer la confidentialité des données échangées entre l'application cliente et le serveur gérant l’algorithme d'​apprentissage, nous avons choisi d'​affecter un identifiant unique à chaque contact
  
-Notre serveur reçoit en entrée plusieurs vecteurs (envoyé par l'​application mobile et de type POST) correspondants aux appels d'un utilisateur (pour une question de "vie privée" ​les numéros de téléphone ​ne sont pas transférés au serveur, seul les noms de contacts ​sont transférés)  ​+De ce fait, **le nom des contacts ou les numéros de téléphones de ceux-ci restent privés** et ne sont pas envoyés et bien sûr non stockés sur le serveur ​distant. Seuls les identifiants des contacts transitent entre l'​application et le serveur, ce qui permet ​de rendre **les contacts ​non identifiables en dehors de l'​application**.
  
-Après un processus ​de traitement réalisé ​par le serveur ​pour augmenter ​la taille des vecteursun appel à une bibliothèque python implémentant Random Forest est réalisé+Nous avons choisi ​de fournir à nos utilisateurs deux versions de l'​application :  
 +  * Une version dite "​Cloud":​ c'est à dire que le traitement ​et l'​algorithme d'​apprentissage est réalisé ​sur un serveur distant dans le "​Cloud"​. De ce fait, l'​utilisateur n'a pas a ce soucier de la partie ​serveur ​et il pourra réaliser de nouvelles synchronisations à n'​importe quel endroit (en ayant une connexion internet active comme la 3Gla 4G ou le WIFI). ​  
 +  * Une version dite "​Local":​ aucune information ne sera envoyée ​à un serveur distant et tous les traitements seront effectués directement sur l'​ordinateur de l'​utilisateur. Cela permet d'​assurer la sécurité et la confidentialité des données échangées,​ puisque aucune donné ne transitera par le réseau "​Internet"​ et tous les traitements s’effectueront en local.
  
-Le serveur renvoi par la suite ces prédictions concernant les contacts que l'​utilisateur souhaitera potentiellement appeler à un instant donné.+====== Fonctionnement de la machine Serveur ======
  
-===== Installation sous Windows =====+Notre serveur reçoit en entrée plusieurs vecteurs (envoyé par l'​application mobile et de type POST) correspondants aux appels d'un utilisateur (pour une question de "vie privée"​ les numéros de téléphone ainsi que le nom des contacts ne sont pas transférés,​ seuls les identifiants des contacts sont transférés) ​ . 
  
-  * Téléchargement à l'​adresse suivante : [[https://​www.dropbox.com/​s/​374cqgz56ggm823/​WindowsServer.7z?​dl=0|WindowsServer]]  +Après un processus ​de traitement ​réalisé ​par le serveur pour augmenter la taille des vecteurs, ​un appel à une bibliothèque implémentant Random Forest est réalisé
-  * Lancement : Décompressez le dossier et lancez "en tant qu'​administrateur"​ WindowsServer.exe (pour cela il suffit ​de réalisé un clic droit sur WindowsServer.exe.+
  
-===== Installation sous Linux =====+Le serveur renvoi par la suite ces prédictions concernant les identifiants des contacts que l'​utilisateur souhaitera potentiellement appeler à un instant donné.
  
-  * Téléchargement à l'​adresse suivante : [[https://​www.dropbox.com/​s/​x89rsz5z73cxeft/​LinuxServer.7z?​dl=0|ServerLinux]] ​ 
-  * Lancement : cd LinuxServer;​./​LinuxServer 
-  * Recommandation : il se peut qu'il y est un probléme de FireWall. Pour régler cela, il suffit d'​entrer la commande suivante : sudo iptables -A INPUT -p tcp --dport 5000 -j ACCEPT 
  
-====== ​Application mobile SmartContactList sous Android ​======+====== ​Produit 1 : Une Version "​Local" ​======
  
-  * Installation : télécharger ​l'APK suivant sur votre téléphone mobile : [[https://www.dropbox.com/s/oq8eg5zlalvt3yz/​app-release.apk?​dl=0|SmartContactListApp]] ​+Dans cette version, nous fournissons la machine serveur et l'application cliente Android.  
 +**//Attention : dans cette version votre ordinateur et votre smartphone doivent être sur le même réseau local.//**
  
 +**1) Installation de la machine serveur sous Windows**
 +  * Télécharger l’exécutable suivant sur votre ordinateur Windows : [[https://​www.dropbox.com/​s/​ewx6tkkgh6rbj7q/​Smart_Contact_List.exe?​dl=0|SmartContactList_Server_For_Windows]]
  
 +**2) Installation de l'​application mobile sur cible Android**
 +  * Télécharger l'APK suivant directement sur votre mobile : [[https://​www.dropbox.com/​s/​9guy316o7ml1l5i/​LocalSmartContactList.apk?​dl=0|SmartContactListApp_Local]]
 +  * Allez dans l'​application "​Téléchargement"​ et cliquez sur le fichier .apk 
 +  * Sélectionnez "​Installer" ​
 +{{:​cours:​plim:​projet16_17:​gr1:​screenshot_2017-01-28-11-38-51.png?​200|}} ​
 +{{:​cours:​plim:​projet16_17:​gr1:​screenshot_2017-01-28-11-40-29.png?​200|}}
 +{{:​cours:​plim:​projet16_17:​gr1:​screenshot_2017-01-28-11-40-35.png?​200|}} ​
 +
 +**3) Utilisation et synchronisation avec votre machine local**
 +  * Vérifiez que votre ordinateur et votre smartphone sont bien connectés au même réseau local (la connection WIFI de votre mobile doit être activée)
 +  * Lancez l'​exécutable préalablement téléchargé sur votre ordinateur Windows
 +  * Lancez l'​application mobile et choisir "Make a Sync"
 +{{:​cours:​plim:​projet16_17:​gr1:​lancerexe.png?​200|}}
 +{{:​cours:​plim:​projet16_17:​gr1:​sychronisation.png?​200|}}
 +
 +{{:​cours:​plim:​projet16_17:​gr1:​screenshot_2017-01-28-11-40-54.png?​200|}}
 +{{:​cours:​plim:​projet16_17:​gr1:​screenshot_2017-01-28-11-41-21.png?​200|}} ​
 +
 +
 +
 +====== Produit 2 : Une Version "​Cloud"​ ======
 +
 +Pour cette version, il suffit d'​installer l'​application mobile sur votre smartphone Android
 +
 +**Installation de l'​application mobile sur cible Android**
 +
 +  * Téléchargement : télécharger l'APK suivant sur votre téléphone mobile : [[https://​www.dropbox.com/​s/​oq8eg5zlalvt3yz/​CloudSmartContactList.apk?​dl=0|SmartContactListApp_Cloud]]
 +  * Choisir "​Téléchargement direct"  ​
 +  * Allez dans l'​application "​Téléchargement"​ et cliquez sur le fichier .apk 
 +  * Sélectionnez "​Installer" ​
 +  * Ouvrir l'​application ​
 +  * Cliquez sur "Make a Sync", attention vous devez avoir un accès à internet 3G, 4G ou WIFI
 +
 +{{:​cours:​plim:​projet16_17:​gr1:​screenshot_2017-01-28-11-38-51.png?​200|}} ​
 +{{:​cours:​plim:​projet16_17:​gr1:​screenshot_2017-01-28-11-40-29.png?​200|}}
 +{{:​cours:​plim:​projet16_17:​gr1:​screenshot_2017-01-28-11-40-35.png?​200|}} ​
 +{{:​cours:​plim:​projet16_17:​gr1:​screenshot_2017-01-28-11-40-54.png?​200|}}
 +{{:​cours:​plim:​projet16_17:​gr1:​screenshot_2017-01-28-11-41-21.png?​200|}} ​
 +
 +===== Utilisation de l'​application mobile Android =====
 +{{:​cours:​plim:​projet16_17:​gr1:​screenshot_2017-01-28-10-51-03.png?​200|}}
 +{{:​cours:​plim:​projet16_17:​gr1:​screenshot_2017-01-28-10-51-29.png?​200|}}
 +{{:​cours:​plim:​projet16_17:​gr1:​screenshot_2017-01-28-10-52-40.png?​200|}}{{:​cours:​plim:​projet16_17:​gr1:​screenshot_2017-01-28-10-51-43.png?​200|}}
 +{{:​cours:​plim:​projet16_17:​gr1:​screenshot_2017-01-28-10-53-47.png?​200|}}
cours/plim/projet16_17/gr1/gr1.1485597679.txt.gz · Dernière modification: 2017/01/28 11:01 par gchapon