Android-Tp4: stockage

11
Institut National des Sciences Appliquées et de Technologie Tunisie Développement Android 2015-2016 TP4- S TOCKAGE Dr. Lilia SFAXI Objectifs du TP : Familiariser les étudiants avec les différentes techniques de stockage dans Android : Shared Preferences, Fichiers et base SQLite.

Transcript of Android-Tp4: stockage

Page 1: Android-Tp4: stockage

Institut National des Sciences Appliquées et de Technologie Tunisie

Développement Android 2015-2016

TP4- STOCKAGE Dr. Lilia SFAXI

Objectifs du TP : Familiariser les étudiants avec les différentes techniques de stockage dans Android : Shared Preferences, Fichiers et base SQLite.

Page 2: Android-Tp4: stockage

TP4 : Stockage

Page 2

I. Stockage dans Android

Il existe plusieurs options de stockage des données persistantes dans Android. Le choix de la

solution idéale dépendra des besoins spécifiques des utilisateurs :

• Les données sont-elles privées ou accessibles à d’autres applications ?

• Combien d’espace disponible est-il requis ?

• Les données doivent-elles être structurées, semi-structurées ou pas structurées ?

Les options de stockage que nous allons montrer dans ce TP sont les suivantes :

1. Shared Preferences :

Framework général qui permet de sauvegarder et extraire des paires clef-valeur persistantes de

type primitif. Il permet de stocker des données de types booléen, réel, entier, long et string.

Typiquement, les Shared Preferences sont utilisées pour sauvegarder les préférences utilisateur,

tel que la sonnerie choisie, par exemple.

2. Stockage interne

Il possible d’utiliser le stockage interne du téléphone pour sauvegarder des fichiers. Par défaut, ces

fichiers sont privés (inaccessibles à partir d’autres applications). Quand l’application est

supprimés, ces fichiers le sont aussi.

3. Stockage externe

Tous les appareils compatibles Android supportent un espace de stockage externe, qui peut être

une SD card, ou un espace interne non-amovible.

Les fichiers sauvegardés dans un espace de stockage externe sont accessibles à toutes les

applications en lecture.

Ils peuvent être modifiés par l’utilisateur si le « USB mass storage » est activé pour transférer les

fichiers sur un ordinateur.

4. Base de données SQLite

Android fournit un support total du SGBD SQLite. SQLite est une bibliothèque logicielle qui

implémente un moteur de base de données SQL avec zéro-configuration, léger et sans

dépendances externes.

Page 3: Android-Tp4: stockage

TP4 : Stockage

Page 3

Toutes les bases de données créées dans une application seront accessibles par nom depuis tout

emplacement de cette application, mais pas de l’extérieur.

La méthode recommandée pour la création d’une base de données SQLite d’utiliser une sous-classe

de SQLiteOpenHelper, une classe d’assistance qui aide l’utilisateur à créer et manipuler sa base de

données de manière simple.

II. Exercice 1 : Shared Preferences

II.1 Objectif

Durée estimée de l’exercice : au plus 15mn

L’objectif de cette première partie est de réaliser une application simple pour stocker quelques

données dans les Shared Preferences. L’interface sera alors comme suit :

II.2 Réalisation

Pour lire un objet SharedPreferences, utiliser l’une de ces méthodes:

• getSharedPreferences: pour utiliser plusieurs fichiers de préférences identifiés par nom

Page 4: Android-Tp4: stockage

TP4 : Stockage

Page 4

• getPreferences: pour utiliser un seul fichier de préférences, donc sans définir un nom de

fichier

Pour ajouter des valeurs :

• Appeler edit() pour obtenir un objet SharedPreferences.Editor

• Ajouter des valeurs avec des méthodes, tel que putBoolean() et putString()

• Valider les nouvelles valeurs avec commit()

Pour lire des valeurs, utiliser les méthodes de SharedPreferences tel que getBoolean() ou

getString()…

Le code obtenu devra ressembler à ce qui suit :

Activité 1. Créer un projet Android TP4-P1, permettant d’enregistrer et de lire des données dans les

Shared Preferences.

III. Exercice 2 : Support de stockage interne et externe

III.1 Objectif

Durée estimée de l’exercice : au plus 45mn

L’objectif de cette partie est de réaliser une application simple pour stocker quelques données

dans des fichiers internes et externes. L’interface sera alors comme suit :

Page 5: Android-Tp4: stockage

TP4 : Stockage

Page 5

III.2 Stockage en interne

Pour lire et écrire dans un fichier interne à l’application, utiliser les primitives FileInputStream et

FileOutputStream fournies par Java. À l’écriture, il est impératif de spécifier un (ou plusieurs)

mode(s) opératoire(s). Ces modes peuvent être combinés en utilisant ||

• MODE_PRIVATE : Le fichier n’est accessible que par l’application qui l’a créé.

1 2

Page 6: Android-Tp4: stockage

TP4 : Stockage

Page 6

• MODE_WORLD_READABLE : Le fichier est accessible en lecture par les autres applications.

• MODE_WORLD_WRITEABLE : Le fichier est accessible en écriture par les autres applications.

• MODE_APPEND : Si le fichier existe déjà, les données seront ajoutées à la fin

Voici des exemples pour lire et écrire dans un fichier interne.

Pour visualiser les fichiers de votre application, ouvrir le Android Device Monitor ( ) et choisir File

Explorer.

data/data/<app_name>/files

Page 7: Android-Tp4: stockage

TP4 : Stockage

Page 7

III.3 Stockage en externe

Pour lire ou écrire des fichiers sur le stockage externe, l’application doit avoir les permissions

READ_EXTERNAL_STORAGE ou WRITE_EXTERNAL_STORAGE.

Avant de manipuler le support de stockage, il faut d’abord vérifier la disponibilité du support de

stockage grâce à la méthode getExternalStorageState.

Exemple d’écriture :

Exemple de lecture :

Page 8: Android-Tp4: stockage

TP4 : Stockage

Page 8

Activité 2. Créer un projet Android TP4-P2, permettant de lire et d’écrire du texte à partir de fichiers

en interne et en externe.

IV. Exercice 3 : Base de Données SQLite

IV.1 Objectif

Durée estimée de l’exercice : au plus 1h

Réaliser une application simple permettant de manipuler des éléments dans une base de données.

Les opérations que vous allez implémenter sont : l’ajout, l’affichage et la suppression.

1 2

Page 9: Android-Tp4: stockage

TP4 : Stockage

Page 9

IV.2 Création de la base

Pour manipuler une base de données SQLite, les étapes recommandées sont :

1. Créer une classe qui hérite de SQLiteOpenHelper

2. Créer des classes modèles représentant chacune des tables de la base

3. Créer la base de données et les tables nécessaires

4. Implémenter les méthodes suivantes :

a. Le constructeur

b. onCreate: contient les opérations réalisées à la création de la base de

données

c. onUpgrade: opérations réalisées quand la base fait un upgrade L’implémentation de ces deux méthodes se fait toujours de la même manière :

Remarque

Pour implémenter les différents CRUD, il est fortement déconseillé de le faire dans cette même

classe, car cela risque de l’encombrer et de la rendre trop chargée et incompréhensible,

surtout si le nombre de tables augmente. Il faudrait alors créer des classes indépendantes

pour manipuler chacune de ces tables, et les appeler à partir de ce Helper.

Page 10: Android-Tp4: stockage

TP4 : Stockage

Page 10

IV.3 Insertion

Pour insérer un élément dans une table de la base, utiliser l’objet ContentValues, qui va contenir,

pour chaque enregistrement, les valeurs des différentes colonnes. ContentValues values = new ContentValues() ;

values.put(<column1_name>,<column1_value>) ;

values.put(<column2_name>,<column2_value>) ;

Une fois l’enregistrement créé, l’insérer dans la base en utilisant un objet (db) de type

SQLiteDatabase. Cet objet et obtenu en appelant this.getWritableDatabase() à partir de la classe

SQLiteOpenHelper. db.insert(<table_name>,null,values) ;

Il ne faut jamais oublier de fermer la table une fois l’opération terminée. db.close() ;

IV.4 Recherche

Pour chercher et afficher un élément d’une table

1. Créer une chaîne de caractères query contenant votre requête SELECT

2. Créer un curseur pour parcourir le résultat de la chaîne : Cursor cursor = db.rawQuery(query, null) ;

3. Parcourir les éléments avec le curseur. Ne pas oublier de faire les cast nécessaires ! if (cursor.moveToFirst()){

cursor.moveToFirst() ;

int elem1 = Integer.parseInt(cursor.getString(0)) ;

String elem2 = cursor.getString(1) ;

cursor.close() ;

}

db.close() ;

Page 11: Android-Tp4: stockage

TP4 : Stockage

Page 11

IV.5 Suppression

Pour supprimer un ou plusieurs éléments de la base :

1. Créer une chaîne de caractères query contenant votre requête SELECT

2. Créer un curseur pour parcourir les éléments de la requête

3. Utiliser la fonction suivante : db.delete(<table_name>, <id_name> + " = ? ", <id_value>) ;

N’oubliez pas de ferme le curseur et la base !

V. Homework

Toute application consistante ne peut pas de contenter d’un stockage en interne dans le device. Il

faut donc penser à d’autres modes de stockage distants. L’un de ces modes de stockage est le

stockage dans une base de données hébergée sur le cloud.

Les systèmes Android fonctionnent parfaitement avec l’une de ces bases de données, Firebase.

Créer une base de données avec Firebase, et un client Android permettant d’afficher son contenu

dans des Cards (en utilisant le RecyclerView), de supprimer et d’ajouter de nouveaux éléments.

Remarquez la réactivité de ces opérations en lançant à la fois votre émulateur, un appareil Android

et un navigateur montrant le contenu de la base.

Activer également la fonction permettant de manipuler les éléments de la base en Offline.