Sommaire - WordPress.com

Transcription

Sommaire - WordPress.com
Sommaire
Choix des outils de travail....................................................................................................................2
Outil de développement...................................................................................................................2
Outil de gestion de la base de données............................................................................................2
Android et les bases de données...........................................................................................................3
Avec SQLite.....................................................................................................................................3
Avec des scripts en PHP..................................................................................................................3
Avec MySQL Connector/J...............................................................................................................4
Tâches asynchrones (AsyncTask).........................................................................................................5
Présentation......................................................................................................................................5
Structure...........................................................................................................................................5
Utilisation dans le projet..................................................................................................................6
Les interfaces graphiques.....................................................................................................................7
Présentation......................................................................................................................................7
Structure...........................................................................................................................................7
Les activités..........................................................................................................................................8
Présentation......................................................................................................................................8
Cycle de vie.....................................................................................................................................8
Schéma du cycle de vie....................................................................................................................9
Android Manifest................................................................................................................................10
Présentation....................................................................................................................................10
Structure.........................................................................................................................................10
Page 1 sur 10
Choix des outils de travail
Outil de développement
En ce qui concerne l'outil de développement, deux choix s'offraient à moi, Eclipse et Android
Studio. J'ai choisi Android Studio pour les raisons suivantes :
•
Ecplise doit être couplé avec des ADT (Android Developer Tools) qui ne sont plus mis à
jour depuis la sortie d'Android Studio. Il est donc limité au développement d'applications sur
des versions antérieures d'Android.
•
Android Studio intègre directement tous les outils dont on a besoin et permet le
développement sur les dernières versions d'Android en date.
Outil de gestion de la base de données
Pour la gestion de la base de données je me suis orienté vers MySql Control Center que j'ai eu
l'occasion de découvrir pendant mon stage de première année. Ce logiciel convient à mes besoins,
son interface est simple et rapide d'utilisation.
Page 2 sur 10
Android et les bases de données
Avec un système Android il existe trois différentes façons de communiquer avec une base de
données.
Avec SQLite
SQLite est un système de gestion de base de données intégré dans chaque appareil Android. Il ne
nécessite pas de serveur pour fonctionner, car son exécution se fait dans le même processus que
celui de l'application (la base de données est créée en interne). De ce fait, si une opération trop
lourde est lancée sur la base de données, l'application serait victime de ralentissement.
Pour ce projet l'utilisation de SQLite est impossible pour deux raisons :
•
La base de données est hebergée sur un serveur auquel il faut être connecté.
•
Certaines opérations efféctuées sur l'application sont lourdes, car la base de données est
volumineuse.
Avec des scripts en PHP
Pour l'utilisation de cette méthode nous avons besoin de scripts PHP (fichiers .php) et d'un serveur
de base de données. Les scripts PHP doivent se situer sur le serveur qui contient notre base de
données.
Le fonctionnement de cette méthode est le suivant :
•
Le client Android envoie les commandes HttpClient au serveur en indiquant le chemin du
script PHP à interroger pour obtenir le résultat voulu.
•
Le script PHP se connecte à la base de données et exécute les requêtes SQL qu'il contient.
•
Il récupère le résultat des requêtes et l'encode en JSON (format léger d'échange de données)
avant de le retourner au client Android.
•
Le client récupère le résultat sous format JSON et le décode.
Une fois les données décodées on peut les manipuler à notre guise dans notre application.
Page 3 sur 10
Ce système de communication entre le client et la base de données est le plus utilisé. Mais il ne
convient pas à mon projet, car le code des requêtes SQL se trouve dans des fichiers PHP stockés sur
le serveur de la base de données. Or, dans les contraintes de mon cahier des charges, il est précisé
que les requêtes SQL doivent se trouver dans le code de l'application.
Avec MySQL Connector/J
MySQL Connector/J est un driver JDBC (Java DataBase Connectivity) pour MySQL. Pour l'utiliser
il faut télécharger l'archive sur le site de MySQL, en extraire le fichier "mysql-connector-java-xxxbin.jar" et l'ajouter dans le répertoire "/lib" de notre projet.
Ce driver va nous permettre de manipuler les requêtes SQL et leurs résultats directement dans le
code de l'application. J'ai donc opté pour cette méthode, car elle correspondait aux contraintes de
mon cahier des charges.
Nous verrons dans une partie suivante comment se connecter à la base de données et manipuler des
requêtes SQL à l'aide de ce driver.
Page 4 sur 10
Tâches asynchrones (AsyncTask)
Présentation
Les AsyncTask permettent de réaliser des opérations de manière asynchrones donc quand on lance
une AsyncTask, elle execute du code en arrière plant.
De ce fait, ont utilise les AsyncTask pour exécuter des opérations qui consomment beaucoup de
ressources (requêtes SQL, calculs, etc.).
Example :
Si on a un calcul lourd à effectuer et qu'on l'exécute dans notre Thread1 principal, il va bloquer notre
application le temps que l'opération se termine. Si l'application reste bloquée trop longtemps, le
système va la fermer et nous afficher un message d'erreur.
Ainsi, en utilisant une AsyncTask, on effectue notre calcul qui est consommateur de ressources dans
un Thread séparé et on fait évoluer le Thread principal en fonction de l'avancement du calcul.
Structure
Une AsyncTask dispose de plusieurs méthodes, voici les principales :
•
onPreExecute : appelée avant le traitement.
•
onProgressUpdate : appelée lorsqu'on souhaite afficher sa progression (example : barre de
chargement de 0% à 100%).
•
doInBackground : réalise le traitement de manière asynchrone dans un Thread séparé.
•
onPostExecute : rppelée après le traitement.
La méthode doInBackground est la seule qui doit obligatoirement être implémentée pour
l'utilisation d'une AsyncTask.
1
Un thread est une unité d'exécution faisant partie d'un programme.
Page 5 sur 10
Utilisation dans le projet
Dans ce projet, j'utilise des AsyncTask pour créer une connexion à la base de données et pour
exécuter mes requêtes SQL.
J'utilise les trois méthodes suivantes :
•
onPostExecute : pour afficher un "ProgressDialog". C'est un chargement circulaire, qui
tourne en boucle (on ne voit pas la progression du traitement en cours), c'est pour cela que je
n'utilise pas la méthode onProgressUpdate.
Example de chargement "PregressDialog" :
•
doInBackground : pour me connecter à la base de données ou exécuter une ou plusieures
reqêtes SQL.
•
onPostExecute : pour désactiver (éteindre) ma fenêtre de chargement et faire réagir
l'application si le résultat du traitement est positif ou au contraire afficher un message
d'erreur.
Page 6 sur 10
Les interfaces graphiques
Présentation
Sur Android les interfaces graphiques sont créées à l'aide de fichiers XML appelés des "layouts".
Chaque fenêtre est ainsi constituée d'un ou plusieurs layouts. Ils sont tous stockés dans le répertoire
"res/layout" de notre projet.
(Quelques layouts du projet)
Structure
Un layout contient le code qui définit le type du layout (linéaire, relatif, ...), la création des
différends composants, leur emplacement sur la fenêtre, leur taille, ...
Exemple : (En vert les commentaires)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">
<--!On définit le type du layout (ici relatif), sa hauteur et sa largeur qui correspondent à la totalité l'écran du
smartphone.-->
<TextView <!--Ici on a créé une zone qui va contenir du texte.-->
android:layout_width="fill_parent" <!--La largeur de cette zone correspond à la largeur de l'écran.-->
android:layout_height="wrap_content" <!--La hauteur va s'adapter à la hauteur de son contenu.-->
android:text="Bonjour" <!--La zone de texte va contenir le mot "Bonjour".-->
android:id="@+id/textView_bonjour" <!--Le nom de la variable (l'identifiant) sera
"textView_bonjour".-->
android:textSize="20dp" <!--La taille du texte sera de 20dp.-->
android:textAlignment="center" <!--Le texte sera au centre.-->
android:layout_centerVertical="true" /> <!--La zone de texte sera placée au centre de l'écran.-->
</RelativeLayout> <!--Ici on referme le layout relatif.-->
Page 7 sur 10
Les activités
Présentation
Sur Android on appelle les fenêtres des activités. C'est la composante principale d'une application
Android, c'est elle qui gère les interactions avec l'utilisateur et implémente notre interface.
Cycle de vie
Une application Android est soumise à un cycle de vie, voici les différentes méthodes appelées lors
des différents états de l'application :
•
onCreate : Elle est appelée au lancement de l'activité. Cette méthode nous permet
d'initialiser toutes les données nécessaires au fonctionnement de notre activité.
•
onStart : Elle est appelée directement après la méthode "onCreate", elle correspond au
début de l'exécution de l'activité (quand elle devient visible à l'écran).
•
onResume : Elle est appelée lorsque notre activité passe au premier plan.
Exemple : si l'application est en pause parce qu'on en a lancé une autre, au moment où on
revient sur notre application (elle repasse au premier plan) la méthode "onResume" est
appelée. On peut donc de nouveau interagir avec.
•
onPause : Elle est appelée lorsqu'une autre activité passe au premier plan. Dans cette
méthode on doit sauvegarder toutes les données saisies par l'utilisateur sur l'activité
courante, car le système peut par la suite décider de mettre fin à l'activité s'il manque de
ressources.
Dans ce cas, le système appelle la méthode "onStop". Dans le cas contraire, si l'application
revient au premier plan, c'est la méthode "onResume" qui sera appelée.
Dans cet état, on peut néanmoins continuer à exécuter des traitements nécessaires tant qu'ils
n'utilisent pas trop de ressources.
•
onStop : Elle est appelée lorsque l'activité n'est plus du tout visible. L'application va être
endormie et les ressources libérées.
Dans cet état, l'utilisateur peut revenir sur l'activité, la méthode "onRestart" sera appelée
pour réveiller l'activité. Ou alors, l'activité n'a plus lieu d'être et la méthode "onDestroy" sera
appelée.
•
onRestart : Elle lance la méthode "onStart".
•
onDestroy : Elle met fin au cycle de vie de l'activité, elle est donc totalement fermée et les
données non sauvegardées sont perdues.
Page 8 sur 10
Schéma du cycle de vie
Voilà le schéma qui décrit le cycle de vie vu précédemment :
Source : https://openclassrooms.com/courses/creez-des-applications-pour-android/votre-premiereapplication-1
Page 9 sur 10
Android Manifest
Présentation
L'AndroidManifest est un fichier "XML", il contient :
•
Une description de l'application (nom, icône, ...).
•
Ses différentes caractéristiques (activité principale, version de l'application, version
minimale nécessaire pour utiliser l'application, ...).
•
Les différentes permissions d'accès au ressources du smartphone (Wi-Fi, internet, capteur
photo, ...).
Structure
Voici un exemple simplifié (en vert les commentaires) d'une partie de mon fichier
"AndroidManifest.xml" :
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.gwen.vfacture"> <!--Chemin du package qui contient toutes nos activités, ressources, ...-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!--On demande la
permission d'accéder au réseau internet.-->
<uses-permission android:name="android.permission.INTERNET" /> <!--On demande la permission d'aller sur
internet.-->
<application
android:icon="@mipmap/ic_launcher" <!--On renseigne le chemin de la ressource où se trouve l'icône de
l'application.-->
android:label="@string/app_name" <!--On renseigne le chemin de la ressource où se trouve le nom de
l'application.-->
android:theme="@style/MyMaterialTheme"> <!--On renseigne le chemin de la ressource où se trouve le thème à
utiliser.-->
<activity <!--On déclare une activité.-->
android:name=".LoginActivity" <!--Le nom du fichier qui lui correspond.-->
android:label="@string/title_activity_login" <!--Chemin où se trouve le nom de l'activité.-->
android:screenOrientation="portrait"> <!--L'orientation de l'écran pour cette activité.-->
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <!--C'est notre activité d'entrée (activité
principale).-->
<category android:name="android.intent.category.LAUNCHER" /> <!--C'est cette activité qui va s'afficher
dans notre lanceur d'application.-->
</intent-filter>
</activity>
<activity <!--On déclare une autre activité avec le même procédé que la précédente.-->
android:name=".MenuTriActivity"
android:label="@string/title_activity_menu_tri"
android:screenOrientation="portrait" />
</application>
</manifest>
Page 10 sur 10

Documents pareils