Présentation du projet

Yann SEREE - Créneau matin – yann.seree@gmail.com
Kaiwen YU - Créneau matin
Nom du projet : Économiseur de batterie

Description et scénario

Le but de l’application est de permettre à l’utilisateur d’économiser sa batterie en fonction de son emplacement et de ses habitudes d’utilisation.
L’application permet de cartographier la consommation de la batterie du smartphone de l’utilisateur.
Trois clusters se dégageront de cette carte : les lieux où on ne consomme pas beaucoup de batterie, les lieux où on en consomme moyennement et ceux où on consomme beaucoup.
Ainsi l’utilisateur pourra consulter cette carte et ainsi déterminer ou non s’il doit recharger son smartphone en fonction de l’endroit qu’il souhaite se rendre.
Ainsi en fonction de la position de l’utilisateur, on lui conseillera de recharger ou non son téléphone.

Matériel disponible

Nom du smartphone : OnePlus 3
Caractéristiques techniques : https://oneplus.net/fr/3/specs
Résumé des fiches techniques en termes de ressource :

OS : Android 6.0.1
Environnement logiciel :

Ressources utilisées dans le projet

Capteurs et data collectés par le mobile :

Liste des SDK et API : cf. Faisabilité du projet

Cible mobile: la cible mobile sera les smartphones tournant sous Android 4.1 (Jelly Bean) ou supérieur couvrant ainsi 97,1 % des terminaux Android.

Algorithme

Avec les données récoltées nous recherchons à faire 3 clusters : les lieux où on ne consomme pas beaucoup de batterie, les lieux où on en consomme moyennement et ceux où on consomme beaucoup.
Un algorithme non supervisé de type Clustering comme K-means sera donc utilisé.

Faisabilité du projet

Le projet est faisable, en effet les données sont facilement récupérables.
Pour la géolocalisation de l'utilisateur, Google recommande d’utiliser l’API Google Play services location
https://developer.android.com/training/location/index.html?hl=fr

L’API Google Maps sera utilisée pour afficher la carte à l’utilisateur
https://developers.google.com/maps/documentation/android-api/?hl=fr

Le SDK d’Android nous permet d’avoir accès au pourcentage de batterie courante
https://developer.android.com/training/monitoring-device-state/battery-monitoring.html.

Rendu final

Version SEREE

Code

apk de l'application Android
serveur (jar)

Code source

Code source du serveur
Code source de l'application Android

Serveur

Lancement du serveur

Pour lancer le serveur télécharger le .zip du serveur ci-dessus (section Code).
Extraire le .zip puis lancer start.bat qui permettra d'exécuter le jar.
Le serveur tourne sur le port 3456, veuillez vous assurer que le port n'est pas pris par un autre processus.
Le fichier values.json contient les données collectées, le kmean est exécuté à partir des données contenues dans ce fichier. Ce fichier json est mis automatiquement à jour lorsque de nouvelles données collectées sont reçues par le serveur.

Application Android

Capture d'écran


Lancement de l'application Android


Notes techniques de l'application


L'application utilise un AlarmManager (https://developer.android.com/reference/android/app/AlarmManager.html) permettant ainsi de lancer la collecte des données toutes les 15 minutes, ce qui évite d'avoir un service ou un asynctask tournant en continu en arrière plan. De ce fait l'application consomme très peu de batterie et n'influence donc pas sur les données collectées de la consommation de batterie.
Les données collectées sont stockés directement dans un fichier interne (doc) sous format JSON afin de pouvoir utiliser l'application en hors-connexion.
Si une connexion internet est présente (le smartphone et le serveur devant être sur le même WiFi), le contenu de ce fichier est envoyé au serveur.
Du côté du serveur, les données reçues sont automatiquement placées dans un fichier JSON (values.json).
Lorsque l'utilisateur actionne le bouton REFRESH KMEAN, une requête est envoyé au serveur :

Une fois le kmean reçu, l'application le stocke dans un fichier interne. Ainsi les différents clusters du kmean sont également accessibles hors-connexion.

Version YU