1.1 Prise en main de l`émulateur

Transcription

1.1 Prise en main de l`émulateur
CHAPITRE 1
TP 1
16/11/2012
Le SDK Android est installé dans /usr/local/eclipse-4.2/android-sdks/ (<sdk>
dans la suite du TP). Les binaires que vous serez amenés à utiliser pendant ce TP (et les suivants)
sont dans <sdk>/tools/ et <sdk>/platform-tools/.
Quelques références :
– Documentation des outils : http ://developer.android.com/tools/help/index.html
– Guides de l’API : http ://developer.android.com/guide/components/index.html
– API JavaDoc : http ://developer.android.com/reference/packages.html
1.1 Prise en main de l’émulateur
L’émulateur Android présente des caractéristiques très similaires aux périphériques physiques disponibles sur le marché et fournit un environnement de développement de très bonne facture.
Vous utiliserez un émulateur Android pour déployer et tester vos applications.
Dans un terminal,
1. Lancer l’Android SDK Manager (gestionnaire du SDK) :
$ <sdk>/tools/android &
2. La fenêtre principale présente une liste de toutes les versions d’Android (et du SDK) pouvant
être utilisées pendant le développement d’une application.
(a) Quelles sont les versions d’Android installées sur les machines de TP ?
(b) Quelle version la plus récente du SDK installée pouvons nous utiliser ?
(c) Quel est l’intérêt d’installer différentes versions du SDK ?
3. Dans le menu “Tools - Manage AVDs”, créer un périphérique virtuel avec les caractéristiques suivantes puis démarrer l’émulateur en cliquant sur “Start” :
i
Name: andy412
Target: Android 4.1.2 - API Level 16
CPU/ABI: intel Atom (x86)
SD Card: 20 MB
Skin: HVGA
Pourquoi installe-t-on la version x86 de l’émulateur plutôt que celle pour architecture ARM ?
1.2 Android Debug Bridge (ADB)
adb, dans <sdk>/platform-tools/, est un outil en ligne de commande qui permet de communiquer avec un émulateur ou un véritable périphérique Android. Pour intéragir avec l’émulateur
andy412, il est nécessaire que ce dernier soit enregistré auprès de la composante serveur d’adb.
1. Quelle commande d’adb permet de lister les périphériques attachés ?
2. Donner le nom de l’instance de l’émulateur en cours d’exécution.
1.3 Hello, world !
Sachant que l’on utilise la version 16 de l’API dans l’émulateur, déterminez, en utilisant la commande android list targets, l’identifiant numérique id correspondant à cette version de
l’API.
Créer un répertoire hello puis utiliser la commande android create project pour créer
la structure de l’application avec les options suivantes :
--target <id de l’API>
--name helloworld
--path hello
--activity HelloActivity
--package tp.android.hello
Le programme ant de la fondation Apache est un outil équivalent à make sous UNIX. Afficher
la liste des targets (cibles) disponibles puis indiquer la commande à utiliser pour compiler l’application en mode debug :
$ ant -p
1. Installer l’application sur l’émulateur. Lancer l’application HelloActivity depuis la
liste des applications installées.
2. Désinstaller l’application depuis l’émulateur puis installez-là à nouveau en utilisant la commande adb.
3. En modifiant les fichiers de ressources XML :
(a) agrandir la taille de la police du texte
(b) mettre le texte en italique
(c) modifier la couleur de fond
(d) centrer le texte horizontalement
(e) ajouter un bouton OK en bas de l’écran
4. Dans HelloActivity.java, définir un handler pour qu’un clic sur le boutton écrive le
message “clicked !” dans les logs (en utilisant la classe android.util.Log). Indiquer la
syntaxe à utiliser avec adb pour visualiser le message loggué depuis le terminal.
1.4 Formulaire
Créer un nouveau projet Android “formulaire”.
1. Développer une interface contenant un formulaire comprenant :
– un titre : “Android”
– une zone de saisie de texte pour le nom
– une zone de saisie de texte pour le prénom
– une question : “Est-ce votre première application Android ?”
– deux boutons de validation : “Oui” et “Non”
2. Développer un deuxième écran permettant, après validation du formulaire, d’afficher les
informations saisies sous l’une des formes :
– “Bienvenue dans votre première première application Android nom, prénom !”
– “Vous allez développer un mini projet intéressant sur Android nom, prénom !”
3. En utilisant les fichiers de ressources, traduire l’application en Anglais.
CHAPITRE 2
TP 2
23/11/2012
Pour rappel, le SDK Android est installé dans /usr/local/eclipse-4.2/android-sdks/
($SDK dans la suite du TP). Les binaires utilisés sont dans $SDK/tools/ et
$SDK/platform-tools/. Si ce n’est pas déjà fait, ajoutez ceci à votre fichier
~/.bash_profile puis fermez votre session :
export SDK=/usr/local/eclipse-4.2/android-sdks
export PATH=$SDK/tools:$SDK/platform-tools:$PATH
Quelques références :
– Documentation des outils : http ://developer.android.com/tools/help/index.html
– Guides de l’API : http ://developer.android.com/guide/components/index.html
– API JavaDoc : http ://developer.android.com/reference/packages.html
L’objet de ce TP est le développement de l’application “TodoManager”, petit gestionnaire permettant la saisie et la sauvegarde de tâches à effectuer.
2.1 Interface utilisateur (UI Design)
1. Créer un nouveau projet todomanager basé sur l’API 4.1.2 (level 16).
2. Modifier l’interface utilisateur pour que cette dernière intègre un TextView occupant l’intégralité de l’espace disponible (toute la surface de l’écran). Le TextView doit contenir le
texte “Pas de tâche”, écrit en blanc, dans une police de grande taille et doit être centré dans
les deux directions.
3. Intégrer également un widget ListView qui permettra d’afficher la liste des tâches saisies
dans l’application avec la contrainte suivante : s’il n’existe pas de tâches, cacher la liste et
afficher uniquement le texte “Pas de tâche”. Dans le cas contraire, n’afficher que la liste.
4. Définir un menu XML avec les éléments (items) suivants :
– “Nouveau” avec une icône “+” associée (en utilisant
android.R.drawable. comme chemin d’accès à la ressource)
– “Trier”
– “À propos”
le
préfixe
v
5. Concevoir une deuxième activité qui permettra la saisie de la tâche. Prévoir :
– la possibilité de choisir une date pour la tâche. Par défaut, afficher la date du jour
– un champ titre
– un champ description
– un bouton affichant une couleur par défaut. L’utisateur pourra affecter une couleur à une
tâche
– un bouton de validation pour confirmer la création de la tâche
Cette activité pourra être testée en la déclarant comme activité principale dans le fichier
AndroidManifest.xml.
2.2 Implémentation
Rendre l’interface fonctionnelle de manière à ce que :
1. l’option “Nouveau” du menu lance la deuxième activité permettant la saisie des informations
2. l’option “Trier” ouvre un menu contextuel permettant de choisir le critère de tri sur le champ
titre des tâches de la liste, par ordre alphabétique ou chronologique (ascendant et descendant)
3. l’option “À propos” affiche le nom, la version et l’auteur de l’application (utiliser la classe
AlertDialog.Builder)
4. la validation de la saisie de la tâche ajoute un élément dans la liste de l’activité principale
(utiliser la classe ArrayAdapter)
5. chaque élément de la liste ait une couleur de fond correspondant à la couleur sélectionnée
lors de la création de la tâche, ainsi que le titre et la date de la tâche
6. un appui long sur une tâche de la liste ouvre un menu contextuel permettant d’éditer ou de
supprimer la tâche
7. le contenu textuel d’une tâche puisse être partagé avec d’autres Applications Android. L’option de partage peut être ajoutée au menu contextuel précédent
2.3 Persistence des données
A ce stade, l’application est fonctionnelle mais ne permet pas encore de sauvegarder les données.
Nous choisissons de les enregistrer dans une base de données SQLite.
Ajouter le support SQLite à l’application en utilisant la classe SQLiteOpenHelper pour accéder à la base et la classe SimpleCursorAdapter pour coupler la base avec la liste des tâches.
CHAPITRE 3
TP 3
07/12/2012
Pour rappel, le SDK Android est installé dans /usr/local/eclipse-4.2/android-sdks/
($SDK dans la suite du TP). Les binaires utilisés sont dans $SDK/tools/ et
$SDK/platform-tools/. Si ce n’est pas déjà fait, ajoutez ceci à votre fichier
~/.bash_profile puis fermez votre session :
export SDK=/usr/local/eclipse-4.2/android-sdks
export PATH=$SDK/tools:$SDK/platform-tools:$PATH
Quelques références :
– Documentation des outils : http ://developer.android.com/tools/help/index.html
– Guides de l’API : http ://developer.android.com/guide/components/index.html
– API JavaDoc : http ://developer.android.com/reference/packages.html
L’objet de ce TP est le développement de “SMSmonitor”, petit service permettant d’intercepter
les SMS (Short Message Service) reçus sur un terminal Android.
3.1 Simulation de l’envoi d’un SMS
0. Démarrer l’émulateur Android.
1. Lancer l’outil ddms (Dalvik Debug Monitor Server), soit depuis un terminal :
$ $SDK/tools/ddms &
soit directement depuis l’IDE Eclipse.
2. Dans ddms, sur la partie gauche, sélectionner (en cliquant sur son nom) l’instance de l’émulateur en cours d’éxécution. Cela permet de définir l’instance à analyser avec les outils fournis par ddms.
3. Sélectionner l’onglet “Emulator Control” sur la partie droite, puis, dans la section “Telephony Actions”, choisir l’option “SMS”, saisir un numéro de téléphone fictif de l’appelant
(Incoming Number), un message, puis cliquer sur “Send”.
4. Contrôler la bonne réception d’une notification dans l’émulateur.
vii
3.2 Création du service
1. Créer un nouveau projet smsmonitor basé sur l’API 4.1.2 (level 16).
2. Créer une activité SMSactivity avec deux boutons “Démarrer” et “Arrêter”, alignés horizontalement, qui permettront respectivement de démarrer et d’arrêter le service
3. Mettre à jour le fichier AndroidManifest.xml en ajoutant des élements
<uses-permission ... /> pour que l’application soit autorisée à écrire, lire et
recevoir des SMS.
4. Créer une classe SMSservice qui hérite de la classe android.app.Service.
5. Dans la classe SMSservice, créer une classe interne privée SMSreceiver qui hérite
de android.content.BroadcastReceiver et implémenter uniquement sa méthode
onReceive() :
@Override
public void onReceive(Context context, Intent intent)
(a) Utiliser les données (.getExtras()) de l’intent fourni en paramètre pour récupérer les messages SMS reçus :
extras.get("pdus")
(b) En
utilisant
la
méthode
createFromPDU(...)
du
package
android.telephony.SmsMessage, récupérer l’adresse de l’expéditeur
ainsi que le corps du message et logguer le tout en utilisant le système de log
android.util.Log.
6. Implémenter les méthodes de la classe SMSservice :
@Override
public void onCreate() {}
@Override
public void onDestroy() {}
de manière à ce que :
(a) La méthode onCreate(...) instancie SMSreceiver et déclare un nouvel IntentFilter dont l’action soit de ne recevoir que les SMS reçus
(SMS_RECEIVED).
(b) Associer le broadcast receiver
registerReceiver(...).
et
l’intent
filter
avec
la
méthode
(c) Désenregistrer le broadcast receiver dans la méthode onDestroy().
7. Permettre le démarrage et l’arrêt du service depuis l’activité principale SMSactivity, en
utilisant la méthode startService(...).
8. Vérifier le bon fonctionnement de l’application.

Documents pareils