Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral -...

207

Transcript of Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral -...

Page 1: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Développement mobile sous Android

E. RAMAT

Université du Littoral - Côte d'Opale

7 septembre 2013

E. Ramat (ULCO) Android 7 septembre 2013 1 / 207

Page 2: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Plan1 Introduction

2 Environnement de développement

3 Structure d'un programme Android

4 Activité

5 Ressources

6 Interface utilisateurVues et widgetsInteractions

7 Préférences

8 Stockage de données

9 Graphique

10 Processus et �threads�

11 Service

12 Communication

13 Noti�cation

E. Ramat (ULCO) Android 7 septembre 2013 2 / 207

Page 3: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Introduction

E. Ramat (ULCO) Android 7 septembre 2013 3 / 207

Page 4: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

IntroductionPourquoi le développement d'applications mobiles ?

Les �devices�

Apparition de périphériques mobiles connectés au réseau : ultraportables,smartphones, tablettes, . . .

Le Nokia série 9000

E. Ramat (ULCO) Android 7 septembre 2013 4 / 207

Page 5: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

IntroductionPourquoi le développement d'applications mobiles ?

Qu'est ce qu'un �smartphone� ?

C'est plus qu'un téléphone, il permet :

d'envoyer des e-mails

de prendre des photos

d'écouter de la musique

. . .

Technique

Un smartphone possède :

un système d'exploitation complet

un environnement de développement d'applications

E. Ramat (ULCO) Android 7 septembre 2013 5 / 207

Page 6: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

IntroductionLes faits

L'état actuel

en 2006, 2,75 milliards d'abonnés aux téléphones mobiles (dans le monde)

en 2013, 6,84 milliards !!!

dont 1,1 milliard de smartphones �n 2012 dans le monde

Progression

+300 % de smartphones en 3 ans !

E. Ramat (ULCO) Android 7 septembre 2013 6 / 207

Page 7: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

IntroductionLes chi�res en août 2013

Les smartphones en France et dans le monde

GS Statcounter

Mesure d'audience : répartition des OS mobiles détectés sur un ensemble de sites

E. Ramat (ULCO) Android 7 septembre 2013 7 / 207

Page 8: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

IntroductionLes solutions de développement mobile

Les environnements à base de �Virtual Machines�

Java ME (Java Micro Edition)

BREW (Binary Runtime Environment for Wireless)

Les systèmes d'exploitation minimalistes

Symbian (UIQ - User Interface Quartz - et Nokia S60 User Interface commeinterface utilisateur)

LiMo (basé sur Linux)

Angström distribution (Linux minimaliste pour système embarqué)

OpenMoko (spéci�cations matérielles et logicielles ; basé sur Linux ; libre)

E. Ramat (ULCO) Android 7 septembre 2013 8 / 207

Page 9: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

IntroductionLes solutions de développement mobile

Les systèmes d'exploitation enrichis

Android

iOS (iPhone)

Windows Phone

BlackBerry OS (BlackBerry)

Palm OS (Garnet OS, Cobalt OS)

HP/Palm WebOS (Mojo)

Les autres

OVI (ensemble de services par Nokia)

Adobe Flash Lite (version légère de Flash pour mobile)

E. Ramat (ULCO) Android 7 septembre 2013 9 / 207

Page 10: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

IntroductionProblématiques

Distribution des applications

dépôt centralisé ou décentralisé

depuis un PC

Hardware

hétérogénéité du matériel

puissance et mémoire limitées

connectivité à Internet (disponibilité, rapidité, . . . )

dispositif d'a�chage divers (et réduit dans le cas des téléphones)

di�culté de pointage (touch ou stylet) et de saisie (clavier physique ouvirtuel)

E. Ramat (ULCO) Android 7 septembre 2013 10 / 207

Page 11: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

IntroductionProblématiques

Système d'exploitation

Quel système d'exploitation ?

iOS d'Apple

Android de Google

BlackBerry OS sur Blackberry

Windows Phone de Microsoft

Développement

quel langage ?

quel IDE / environnement de développement ?

émulation ou/et non pour le �debugging� des applications ?

E. Ramat (ULCO) Android 7 septembre 2013 11 / 207

Page 12: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

IntroductionQu'est-ce qu'Android ?

Dé�nition

android est la première plateforme ouverte, gratuite et compléte pour des�devices� mobiles

développé par �Open Hanset Alliance�

sous licence �Apache Software License 2.0�

Dé�nition

Android est un ensemble de logiciels incluant :

un système d'exploitation basé sur Linux

un �middleware�

des applications clés (téléphone, contacts, navigateur, . . . )

et un ensemble d'API avancées

E. Ramat (ULCO) Android 7 septembre 2013 12 / 207

Page 13: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

IntroductionQu'est-ce qu'Android ?

SDK

Le SDK (�Software Development Kit�) est :

un ensemble d'outils

un ensemble d'API spécialisées

basé sur un sous-ensemble du langage Java

SDK en C/C++

il existe aussi un SDK en C/C++ : le NDK (�Native Development Kit�)

utilisé pour les applications critiques

E. Ramat (ULCO) Android 7 septembre 2013 13 / 207

Page 14: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

IntroductionQu'est-ce qu'Android ?

Android n'est pas Linux !

Android est basé sur un noyau Linux MAIS ce n'est pas GNU/Linux !

pas de système de fenêtres

pas de glibc

pas d'utilitaire GNU/Linux

E. Ramat (ULCO) Android 7 septembre 2013 14 / 207

Page 15: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

IntroductionQu'est-ce qu'Android ?

Android n'est pas Java !

Android n'est pas une implémentation de tout le langage Java !

utilise le langage Java

implémente une partie de la spéci�cation de Java5 SE

s'éxecute sur une machine virtuelle dalvik au lieu de la JVM

Machine à piles / Machine à registres

La JVM est basée sur une machine à piles alors que la machine virtuelle dalvik estbasée sur une machine à registres

E. Ramat (ULCO) Android 7 septembre 2013 15 / 207

Page 16: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

IntroductionQu'est-ce qu'Android ?

Le noyau Linux d'Android

Android est basé sur le noyau 2.6 de Linux et fournit :

la couche sécurité

la gestion de la mémoire et des processus

la pile réseau

le modèle de driver

et la couche d'abstraction

Les sources du noyau

source.android.com

E. Ramat (ULCO) Android 7 septembre 2013 16 / 207

Page 17: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

IntroductionQu'est-ce qu'Android ?

L'architecture d'Android

E. Ramat (ULCO) Android 7 septembre 2013 17 / 207

Page 18: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

IntroductionQu'est-ce qu'Android ?

Améliorations

Android a ajouté plusieurs patchs au noyau :

alarm : ajout de �timers� pour réveiller le système

ashmen : mémoire partagée entre processus

pmen : allocation mémoire des processus

binder : mécanisme de communication inter-processus (n'utilise pas SysVIPC) et d'invocation de méthodes distantes

power management : gestion de l'énergie

low memory killer (pas d'espace de swap disponible) : �tueur� de processus encas de mémoire insu�sante

logger : gestion des logs ("main", "events", "radio" - sms/voix - et "system")

E. Ramat (ULCO) Android 7 septembre 2013 18 / 207

Page 19: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

IntroductionQu'est-ce qu'Android ?

Autres caractéristiques

nagivateur web intégré basé sur le moteur �WebKit OSS� (utilisé danschrome et safari)

graphique 3D basé sur OpenGL ES (�Open Graphics Library for EmbeddedSystem�)

SQLite pour le stockage des données en base de données (utilisation de SQL)

prise en charge des formats courants multimédia : audio, video et image

prise en charge de camera, GPS, compas et accéleromètre

E. Ramat (ULCO) Android 7 septembre 2013 19 / 207

Page 20: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

IntroductionQu'est-ce qu'Android ?

Les versions

E. Ramat (ULCO) Android 7 septembre 2013 20 / 207

Page 21: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

IntroductionQu'est-ce qu'Android ?

La suivante 4.4 : Kit Kat

E. Ramat (ULCO) Android 7 septembre 2013 21 / 207

Page 22: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

IntroductionQu'est-ce qu'Android ?

Les versions

1.0 : Apple Pie (septembre 2008)

1.1 : Banana Bread (février 2009)

1.5 : Cupcake (avril 2009) - API 3

1.6 : Donut (septembre 2009) - API 4

2.0/2.1 : Eclair (octobre 2009) - API 7

2.2 : FroYo (mai 2010) - API 8

2.3 : Gingerbread (décembre 2010) - API 9-10

3.0 : Honeycomb (février 2011) - API 11-13

4.0 : Ice Cream Sandwich (ICS) (octobre 2011) - API 14-15

4.1/4.2/4.3 : Jelly Bean (juillet 2012 au juillet 2013) - API 16-18

Sortie des versions très rapides → problème de déploiement !

E. Ramat (ULCO) Android 7 septembre 2013 22 / 207

Page 23: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

IntroductionQu'est-ce qu'Android ?

Déploiement - juin 2013

Répartition

Eclair (2.1) et versions antérieures : 1,3 %

FroYo (2.2) : 2,5 %

Gingerbread (2.3) : 33,1 %

Honeycomb (3.x) : 0,1 %

Ice Cream Sandwich (4.0.x) : 22,5 %

Jelly Bean (4.1/4.2) : 40,5 %

E. Ramat (ULCO) Android 7 septembre 2013 23 / 207

Page 24: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

IntroductionQu'est-ce qu'Android ?

version 1.0 : Apple Pie

création d'Android Market (le modèle de di�usion des applications)

navigateur Web (HTML/XHTML)

accès aux services POP3, IMAP4 et SMTP

synchronisation avec les services Google (mail, agenda, contact, chat)

localisation avec GPS et Google Maps

support des SMS et MMS

support des appareils photo

lecture multimédia

support du Wi� et du Bluetooth

noti�cations (barre de status, personnalisation des sonneries, vibreur et LED)

Youtube et quelques applications

E. Ramat (ULCO) Android 7 septembre 2013 24 / 207

Page 25: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

IntroductionQu'est-ce qu'Android ?

version 1.1 : Banana Bread

améliorations de Maps

pièce attachée au MMS

support des �marquee� dans les layouts

version 1.5 : Cupcake

basé sur le noyau Linux 2.6.27

support pour les claviers virtuels + prédiction des mots

support pour les Widgets (miniatures sur le bureau)

enregistrement vidéo (format MPEG-4 et 3GP)

support du Bluetooth A2DP et AVRCP

ajout de la fonction copier/coller dans le navigateur

ajout de photos pour les contacts enregistrés comme favoris

ajout de date/heure des appels / ajout accès rapide aux contacts

animations lors d'un changement d'écran

E. Ramat (ULCO) Android 7 septembre 2013 25 / 207

Page 26: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

IntroductionQu'est-ce qu'Android ?

version 1.6 : Donut

basé sur le noyau Linux 2.6.29

possibilité de recherche dans les favoris, l'historique, les contacts et Internetdepuis l'écran d'accueil

mise à jour de la recherche vocale et meilleure intégration avec lesapplications natives

interface de l'Android Market améliorée

interface native pour l'appareil photo, la camera et la galerie ;

mise à jour du support pour CDMA/EVDO, 802.1x, VPNs et une synthèsevocale

support des écrans avec une résolution WVGA

framework de reconnaissance de gestes (GestureBuilder)

Google Navigation (GPS Gratuit)

E. Ramat (ULCO) Android 7 septembre 2013 26 / 207

Page 27: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

IntroductionQu'est-ce qu'Android ?

version 2.0/2.1 : Eclair

vitesse hardware optimisée

support de plus de taille d'écran et résolutions

réorganisation de l'interface utilisateur

nouvelle interface du navigateur et support de l'HTML5

nouvelle liste de contact

amélioration de Google Maps 3.1.2

support de Microsoft Exchange Server par Exchange ActiveSync 2.5

support de nouvelles fonctions pour l'appareil photo (�ash, zoom digital,balance de blancs, e�ets de couleurs et focus macro)

meilleure gestion des évènements multipoints

amélioration du clavier virtuel

Bluetooth 2.1

fonds d'écran animés

E. Ramat (ULCO) Android 7 septembre 2013 27 / 207

Page 28: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

IntroductionQu'est-ce qu'Android ?

version 2.2 : Froyo

basé sur le noyau Linux 2.6.32

optimisations générales de la vitesse, de la mémoire et des performances del'OS

intégration du JIT

intégration du moteur JavaScript V8 de Chrome

Hotspot Wi-Fi et USB Tethering

possibilité de désactiver l'accès aux données sur réseau mobile

amélioration et renommage de l'Android Market (Google Play)

support de l'installation d'applications sur la mémoire extensible

support d'Adobe Flash Player 10.1

support des écrans à haute densité de pixels (320 dpi)

E. Ramat (ULCO) Android 7 septembre 2013 28 / 207

Page 29: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

IntroductionQu'est-ce qu'Android ?

version 2.3 : Gingerbread

basé sur le noyau Linux 2.6.35

passage au système de �chiers ext4

support des grands écrans à résolutions extra-larges (WXGA et plus)

support du NFC

support de la VoIP et SIP

refonte du clavier virtuel (multi-touch) et de l'autocomplétion

�garbage collector� pour de meilleures performances

support de nouveaux capteurs (gyroscope et baromètre)

support natif de plusieurs caméras (dont frontale) ;

support du chat vocal et vidéo sur Google Talk ;

E. Ramat (ULCO) Android 7 septembre 2013 29 / 207

Page 30: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

IntroductionQu'est-ce qu'Android ?

version 3 : Honeycomb

basé sur le noyau Linux 2.6.36

interface entièrement retravaillée et optimisée pour les tablettes tactiles

bureau tridimensionnel avec widgets améliorés

support des processeurs multi-coeur

USB Host et Accessories Developer Kit

support des proxys HTTP pour les points d'accès Wi-Fi

support des tablettes tactiles de 7 pouces

support des processeurs Qualcomm

E. Ramat (ULCO) Android 7 septembre 2013 30 / 207

Page 31: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

IntroductionQu'est-ce qu'Android ?

version 4.0 : Ice Cream Sandwich

basé sur le noyau Linux 3.0.1

boutons virtuels intégrés à l'interface, en remplacement des boutonsphysiques

capture d'écran native ;

déverrouillage par reconnaissance faciale

Wi-Fi Direct

enregistrement vidéo en 1080p

nouveau menu Power

E. Ramat (ULCO) Android 7 septembre 2013 31 / 207

Page 32: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

IntroductionQu'est-ce qu'Android ?

version 4.1 : Jelly Bean

Google Now

Google Chrome, navigateur par défaut

amélioration de la synchronisation

amélioration de la rapidité et de la �uidité de l'interface

support de nouvelles langues

widgets �intelligents� : redimensionnement automatiquement

système audio multi-canal

transfert de données Bluetooth pour Android Beam

amélioration de l'appareil photo

photo des contacts en haute résolution

amélioration de la barre de noti�cations

recherche vocale améliorée à la façon de Siri sur iOS

E. Ramat (ULCO) Android 7 septembre 2013 32 / 207

Page 33: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

IntroductionQu'est-ce qu'Android ?

version 4.2 : Jelly Bean - suite

améliorations diverses

support du multi-utilisateur sur les tablettes

nouvelle application et widget horloge

résolution de problèmes Bluetooth

E. Ramat (ULCO) Android 7 septembre 2013 33 / 207

Page 34: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

IntroductionQu'est-ce qu'Android ?

version 4.3 : Jelly Bean - suite et �n

son : Virtual Surround Sound

autocomplétion (Téléphone)

amélioration de la saisie du texte et du clavier Google

support du Bluetooth Smart (Low Energy) et du Bluetooth AVRCP 1.3

ajout de l'OpenGL ES 3.0

simpli�cation de l'assistant d'installation

ajout de nouvelles langues

E. Ramat (ULCO) Android 7 septembre 2013 34 / 207

Page 35: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

IntroductionAndroid Market / Google Play

Dé�nition

système standard de téléchargement des applications

renommé en Google Play

pas de véri�cation des applications

navigation laborieuse : par catégorie / payant/gratuit / par mot clé

gestion des autorisations avant téléchargement / installation

des centaines de milliers d'applications

existence de �markets� alternatifs

Développeur

25$ pour s'inscrire en tant que développeur (à payer une seule fois)

modèle économique :I 70% pour le développeurI 30% pour Google

gestion des revenus via Google Checkout

57% des applications sont gratuitesE. Ramat (ULCO) Android 7 septembre 2013 35 / 207

Page 36: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Environnement de développement

E. Ramat (ULCO) Android 7 septembre 2013 36 / 207

Page 37: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Environnement de développementL'environnement idéal

Le système d'exploitation

Ubuntu est un excellent choix :

pris en charge et testé par Google

tous les outils sont disponibles

l'installation en 32 bits est vivement recommandée

L'EDI

Eclipse est une plateforme de développement extensible :

Eclipse est plus qu'un IDE

un plugin ADT (Android Development Tools) pour Android est disponible

E. Ramat (ULCO) Android 7 septembre 2013 37 / 207

Page 38: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Environnement de développementInstallation

Processus d'installation sous Ubuntu

installer Eclipse :→ sudo apt-get install eclipse ou via le site web d'Eclipse(http://www.eclipse.org/downloads

openjdk-6 / openjdk-7 est installé en même temps que le paquet Eclipse

installer le sdk d'Android :→ aller sur la page http://developer.android.com/sdk/index.html→ télécharger la version Linux (i386)→ décompresser le �chier tgz dans /opt (sudo tar zxvf

android-sdk_r22.0.5-linux.tgz puis sudo mv

android-sdk-linux_x86 android-sdk)

E. Ramat (ULCO) Android 7 septembre 2013 38 / 207

Page 39: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Environnement de développementInstallation

Processus d'installation sous Ubuntu - suite

installer le plugin ADT :→ lancer Eclipse→ puis sélectionner �Help� puis �Intall New Software ...�→ cliquer sur le bouton �Add...� en haut à droite de la fenêtre→ entrer �ADT Plugin� comme nom ethttps://dl-ssl.google.com/android/eclipse comme �Location� puisvalider

En cas de problème réseau

Il est probablement qu'il faille utiliser l'url en mode http au lieu de https.

E. Ramat (ULCO) Android 7 septembre 2013 39 / 207

Page 40: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Environnement de développementInstallation

Processus d'installation sous Ubuntu - suite

Dans la boîte de dialogue �Available Softwares�,

cocher �Developer Tools� puis cliquer sur �Next�

la liste des �softwares� apparait, cliquer sur �Next�

lire la licence Apache et accepter la licence puis cliquer sur ��nish�

pour �nir l'installation, redémarrer Eclipse

E. Ramat (ULCO) Android 7 septembre 2013 40 / 207

Page 41: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Environnement de développementInstallation

Processus d'installation sous Ubuntu - �n

Il reste à lier Eclipse au SDK d'Android

sélectionner �Window� puis �Preferences�

choisir �Android� puis dé�nir le chemin du SDK ( /opt/android-sdk)

Statistiques Google

Lors de la sélection d'Android, une fenêtre s'est ouverte et vous pouvez valider lefait que vous envoyez vos statistiques d'utilisation des outils Android.

E. Ramat (ULCO) Android 7 septembre 2013 41 / 207

Page 42: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Environnement de développementInstallation

Les nouveautés

Plusieurs éléments sont maintenant accessibles :

dans le menu �Window�, un accès aux outils du SDK d'Android

dans le menu �File� puis �New Project�, un wizard Android qui donne lapossibilité de créer un projet Android ou un projet de tests d'une applicationAndroid

Installation des API et des émulations

Il faut maintenant installer les API Android et dé�nir une émulation d'unemachine Android via AVD Manager.

E. Ramat (ULCO) Android 7 septembre 2013 42 / 207

Page 43: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Environnement de développementInstallation

Installation des API

dans le menu �Window�, sélectionner �Android SDK and AVD Manager�

sélectionner �Available packages� puis ouvrir la branche �Android Repository�(la liste des packages Android est téléchargée)

si vous voulez développer pour Android 3.2 :I cocher �SDK Platform Android 3.2, API 13, revision 1�I cocher �Samples for SDK API 13, revision 1� (si vous désirez les exemples)I cocher �Documentation for Android SDK, API 13, revision 1� (si vous désirez

installer la documentation)

cliquer sur �Install Selected� et véri�er que tous les packages sont �Accept�puis cliquer sur �Install�

E. Ramat (ULCO) Android 7 septembre 2013 43 / 207

Page 44: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Environnement de développementInstallation

Droits

Si vous n'avez pas les droits sur /opt :

soit exécutez en console l'utilitaire android en mode sudo :$ sudo /opt/android-sdk/tools/android

soit donner les droits à l'utilisateur d'Eclipse sur le répertoire/opt/android-sdk :$ sudo chown -R toto:toto /opt/android-sdk

La deuxième solution est à privilégier car la dé�nition des émulations va poser lesmêmes problèmes de droits.

E. Ramat (ULCO) Android 7 septembre 2013 44 / 207

Page 45: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Environnement de développementInstallation

Mise au point du code

La mise au point du code peut être réalisée selon deux méthodes :

l'exécution sur un matériel sous Android

l'exécution via une émulation

Exécution sur un matériel sous Android

Lors de l'exécution de l'application depuis Eclipse, une fenêtre propose desélectionner un matériel connecté via USB (s'il est reconnu) ou une émulation.

E. Ramat (ULCO) Android 7 septembre 2013 45 / 207

Page 46: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Environnement de développementInstallation

Dé�nition d'une émulation

lancer l'application �android� du répertoire /opt/android-sdk/tools ousélectionner �Android SDK and AVD Manager� du menu �Window� sousEclipse

sélectionner �Virtual devices� puis cliquer sur �New...�

saisir un nom de �Virtual Device�

choisir une cible (target) parmi la liste des API que vous avez installés

le �CPU/ABI� est automatiquement �xé à ARM qui est l'architecture -processeur standard

E. Ramat (ULCO) Android 7 septembre 2013 46 / 207

Page 47: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Environnement de développementInstallation

Autres paramètres

on peut dé�nir une carte SD en spé�ciant la taille

on peut changer le skin de l'émulateur ; on peut installer des skins demachines existantes (Samsung, HTC, Sony Ericson, . . . ) pour obtenir lemême rendu que sur la machine réelle

il est possible de dé�nir des paramètres au matériel (par exemple, la taille dela RAM)

E. Ramat (ULCO) Android 7 septembre 2013 47 / 207

Page 48: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Structure d'un programme Android

E. Ramat (ULCO) Android 7 septembre 2013 48 / 207

Page 49: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Structure d'un programme AndroidCréation d'un projet Android sous Eclipse

Nouveau projet

sélectionner �New� dans le menu �File� puis �Project...�

ouvrir la branche �Android� et sélectionner �Android Project�

cliquer sur �Next >� et saisir un nom de projet (par défaut, l'applicationpossédera le même nom)

sélectionner l'API cible

saisir un nom de package (toutes les classes doivent appartenir à un package)

par défaut, une activité sera créée avec pour nom le nom du projet auquel estconcaténé le mot �Activity� (on peut désactiver cette option)

E. Ramat (ULCO) Android 7 septembre 2013 49 / 207

Page 50: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Structure d'un programme AndroidCréation d'un projet Android sous Eclipse

Nouveau projet - suite

la version minimale du SDK est mise automatiquement en fonction de l'APIcible (si vous n'utilisez pas d'éléments spéci�ques à l'API cible, vous pouvezspéci�er une version inférieure)

cliquer sur �Finish�

Localisation

Par défaut, le projet va se créér dans le workspace ouvert au démarrage d'Eclipse.On peut aussi �cloner� un exemple ou réutiliser un code existant.

E. Ramat (ULCO) Android 7 septembre 2013 50 / 207

Page 51: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Structure d'un programme AndroidCréation d'un projet Android

Création sans Eclipse

Il est possible de créér un projet Android sans Eclipse via l'outil android durépertoire tools :android create project �target <target_ID> �name

<your_project_name> �path path/to/your/project �activity

<your_activity_name> �package <your_package_namespace>

E. Ramat (ULCO) Android 7 septembre 2013 51 / 207

Page 52: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Structure d'un programme AndroidStructure d'un projet Android

Arborescence

Cinq répertoires sont générés :

assets : des �chiers chargés sur le périphérique comme des �chiers audio,vidéo, texte (par exemple, la licence)

bin : les résultats de la compilation (les �chiers .class) et de la génération del'application (.dex, .apk et resources)

gen : les �chiers générés par Android (en particulier, le �chier R.java)

res : toutes les ressources nécessaires à l'application (icones, chaînes decaractères constantes, layout, . . . )

src : les �chiers sources Java du projet placés dans un sous-répertoireconforme au nom de package déclaré

E. Ramat (ULCO) Android 7 septembre 2013 52 / 207

Page 53: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Structure d'un programme AndroidStructure d'un projet Android

Les �chiers .dex

La compilation des �chiers Java produit des �chiers .dex (Dalvik Executable).

Les �chiers .apk

Les �chiers .apk sont des �chiers compressés contenant les éléments d'uneapplication Android : les �chiers .dex, les ressources, les assets , le �chier�manifest�, . . .

E. Ramat (ULCO) Android 7 septembre 2013 53 / 207

Page 54: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Structure d'un programme AndroidStructure d'un projet Android

Le �chier R.java

il contient en fait l'ensemble des références vers les ressources du projet (lienentre un attribut statique d'une classe statique et un nombre en hexadécimal)

par exemple, l'accès à l'icone de l'application est possible grâce à l'attributicon de la classe drawable de la classe R

Le �chier main.xml

L'interface principale est dé�nie dans un �layout� principal stocké dans un �chierxml (main.xml). Par défaut, l'application démarre avec cette interface(R.layout.main).

E. Ramat (ULCO) Android 7 septembre 2013 54 / 207

Page 55: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Structure d'un programme AndroidStructure d'un projet Android

Le �chier strings.xml

au lieu d'utiliser des chaînes de caractères constantes dans le code, il fautdéporter ces chaînes dans le �chier strings.xml qui fait le lien entre unidenti�ant et une chaîne de caractères

ces ressources de type String sont alors utilisés dans les messages

le mécanisme multilangue se base sur une arborescence de �chiersstrings.xml

E. Ramat (ULCO) Android 7 septembre 2013 55 / 207

Page 56: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Structure d'un programme AndroidStructure d'un projet Android

Le �chier AndroidManifest.xml

Toutes les applications Android disposent d'un �chier de description(AndroidManifest.xml) contenant :

le nom du package de l'application (ce nom doit être unique dans le mondeAndroid)

le niveau minimal d'API

la liste des librairies nécessaires à l'application

la description des composants de l'application (activités, services, récepteurde �ux, fournisseur de contenu, . . . )

les permissions nécessaires pour interagir avec l'application

. . .

E. Ramat (ULCO) Android 7 septembre 2013 56 / 207

Page 57: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Structure d'un programme AndroidArchitecture d'une application Android

�Sandbox�

Une application Android s'exécute son �sandbox� (bac à sable). Elle possède :

son propre �ID user� pour isoler en terme de droit d'accès les �chiers utiliséspar l'application

sa propre machine virtuelle (dans un processus Linux) a�n d'isoler lesapplications entre elles

son propre processus Linux, un processus est lancé dès qu'un des composantsd'une application est lancée et arrêté dès que l'application est arrêtée oulorque le système a besoin de libérer de la mémoire

E. Ramat (ULCO) Android 7 septembre 2013 57 / 207

Page 58: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Structure d'un programme AndroidArchitecture d'une application Android

Une architecture basée sur les composants

les activités : un simple écran avec une interface graphique avec laquell'utilisateur peut interagir

les services : un composant qui permet d'exécuter en tâche de fond untraitement long ou se connecter à un service distant (pas d'interfacegraphique)

les récepteurs de �ux/évenement : un composant à l'écoute d'événements eta�che une noti�cation ou exécute une activité

les fournisseurs de contenu : un composant de gestion des données quidonnent accès à des données

E. Ramat (ULCO) Android 7 septembre 2013 58 / 207

Page 59: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Structure d'un programme AndroidArchitecture d'une application Android

�Intent�

les �intents� (intentions) permet d'envoyer des messages asynchrones à desactivités ou services ou récepteurs, pour les activer

un �intent� peut être implicite (activation d'un type de composants) ouexplicite (activation d'un composant)

�Intent� et les activités/services

une �intent� dé�nit une action à réaliser (�view�, �send�, . . . )

des données peuvent accompagner la demande via une URI

�Intent� et les récepteurs

Les �intents� permettent d'annoncer les événements.

E. Ramat (ULCO) Android 7 septembre 2013 59 / 207

Page 60: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Activité

E. Ramat (ULCO) Android 7 septembre 2013 60 / 207

Page 61: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

ActivitéDé�nitions

Dé�nition - activité

une activité est un composant d'une application qui fournit un écran aveclequel l'utilisateur peut interagir

en général, la zone d'interaction remplie la totalité de l'écran

mais, possibilité de dé�nir des fenêtres ��ottantes�

une application se compose de plusieurs activités

Organisation

les activités sont �empilées� comme un tas de cartes

les nouvelles activités sont placées au sommet du tas (l'application active estmise en pause)

une et une seule activité est visible au même instant

une et une seule activité est active au même instant

lorsque l'utilisateur appuie sur �black� alors l'activité courante est détruite etla précédente est �réactivée� (resume)

E. Ramat (ULCO) Android 7 septembre 2013 61 / 207

Page 62: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

ActivitéCycle de vie

E. Ramat (ULCO) Android 7 septembre 2013 62 / 207

Page 63: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

ActivitéDé�nitions

Dé�nition - vue

l'interface utilisateur d'une activité est fournie par une hiérarchie de vues

chaque partie de l'interface (zone rectangulaire) est gérée par une vue etl'utilisateur peut interagir avec

E. Ramat (ULCO) Android 7 septembre 2013 63 / 207

Page 64: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

ActivitéCycle de vie

E. Ramat (ULCO) Android 7 septembre 2013 64 / 207

Page 65: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

ActivitéCycle de vie - les phases

onCreate

lorsque l'activité est lancée pour la première fois ou après un redémarragetotal du système

lorsque l'activité est relancée après une destruction totale de l'activité ou del'application

lorsque le terminal changé d'état (mode portrait / mode paysage, parexemple) et que l'activité utilise des ressources di�érentes en fonction del'état

E. Ramat (ULCO) Android 7 septembre 2013 65 / 207

Page 66: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

ActivitéCycle de vie - les phases

Redémarrage

lors du redémarrage d'une activité, un objet Bundle est passé en paramètre

cet objet contient la sauvegarde de l'état de l'activité

si votre activité contient des attributs spéci�ques, il est nécessaire desurcharger

I la méthode onSaveInstanceState() pour sauvegarder ces attributsI la méthode onRestoreInstanceState() pour restaurer les attributs lors du

redémarrageI l'objet Bundle est un map

Sauvegarde

Par défaut, la plupart des états des widgets sont sauvegardés ... mais pas tous !Par exemple, si un bouton est actif ou non.

E. Ramat (ULCO) Android 7 septembre 2013 66 / 207

Page 67: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

ActivitéCycle de vie

E. Ramat (ULCO) Android 7 septembre 2013 67 / 207

Page 68: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

ActivitéCycle de vie - les phases

onDestroy

lorsque la méthode finish est appelée (la méthode isFinish permet desavoir s'il s'agit de cette méthode)

lorsque le système a besoin de mémoire

Attention !

Il n'y a pas d'appel à onSaveInstanceState() dans le cas d'une termination par laméthode finish.

E. Ramat (ULCO) Android 7 septembre 2013 68 / 207

Page 69: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

ActivitéCycle de vie - les phases

onPause/onResume

onPause est appelée lorsque l'activité est en train de réaliser un traiement(sauvegarde de données, par exemple, ou tout traitement utilisant le CPU) etune autre activité est activée

onResume fait suite à la réactivation de l'activité mise en pause

Attention !

Si une activité mise en pause ne revient pas au premier plan alors elle est stoppée.

E. Ramat (ULCO) Android 7 septembre 2013 69 / 207

Page 70: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

ActivitéCycle de vie - les phases

onStart/onRestart/onStop

onStart est appelée soit lorsque l'activité est lancée (juste après onCreate)soit lorqu'elle revient au premier plan

onStop est invoquée lorque l'activité n'a pas été visible à l'utilisateur depuistrop longtemps alors qu'elle était en pause (l'activité peut être détruiteensuite - onDestroy)

onRestart fait suite à une réactivation d'une activité dans un état stop

E. Ramat (ULCO) Android 7 septembre 2013 70 / 207

Page 71: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

ActivitéDéclaration des activités

Hormis la déclaration de la classe Java représentant l'activité, elle doit être déclarédans le �chier Manifest de l'application

<manifest ... ><application ... >

<activity android:name=".MyActivity" />...

</application ... >...

</manifest >

E. Ramat (ULCO) Android 7 septembre 2013 71 / 207

Page 72: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

ActivitéDéclaration des activités

Attributs

l'attribut name désigne la classe Java MyActivity comme une activité del'application

il existe d'autres attributs dé�nissant les propriétés de l'activité (le thème oul'orientation de la vue, par exemple)

les attributs permettent aussi de dé�nir les permissions, les événementscapturés (par exemple, si l'écran change d'orientation)

E. Ramat (ULCO) Android 7 septembre 2013 72 / 207

Page 73: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

ActivitéLancement d'une activité

Deux scénarios

une activité lance une autre activité sans se préoccuper du résultat del'activité lancée

on attend un résultat de l'activité lancée

Intention

pour démarrer une activité, il faut dé�nir une intention

une intention est une requête s'adressant à une activité ou une demande àdestination d'un récepteur

pour le lancement d'une activité depuis une activité d'une application, onutilise un nommage direct de l'activité (en oppostion au intention via desURI)

Création d'une intention

new Intent(this , MyActivity.class );

E. Ramat (ULCO) Android 7 septembre 2013 73 / 207

Page 74: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

ActivitéLancement d'une activité

Lancement

Deux méthodes possibles : startActivity et startActivityForResult

startActivity(new Intent(this , MyActivity.class ));startActivityForResult(new Intent(this , MyActivity.class), RETURN_CODE );

Lancement avec résultat

le code de retour (second paramètre de la méthodestartActivityForResult) permet à une activité de savoir quelle activitévient de prendre �ni

la méthode onActivityResult est appelée et les 3 paramètres(requestCode, resultCode et data) permet :

I de savoir quelle activité vient de �nirI si l'activité s'est terminée correctement (Activity.RESULT_OK ou

Activity.RESULT_CANCELED)I de récupérer les données de retour (les données sont sous forme d'un URI)

E. Ramat (ULCO) Android 7 septembre 2013 74 / 207

Page 75: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

ActivitéL'activité principale d'une application

Activité principale

pour le lancement d'une application, une activité doit dé�nir une intention decatégorie LAUNCHER

android.intent.action.MAIN indique que c'est l'activité initiale et qu'elleest lancée sans donnée d'entrée et sans donnée de retour

une icône doit être spéci�ée a�n que l'application apparaisse dans le menuprincipal du système (la taille de l'icône est �xée à 72 x 72 pixels)

<activity android:name=".MyActivity" android:icon="@drawable/app_icon"><intent -filter >

<action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" />

</intent -filter ></activity >

E. Ramat (ULCO) Android 7 septembre 2013 75 / 207

Page 76: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Ressources

E. Ramat (ULCO) Android 7 septembre 2013 76 / 207

Page 77: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

RessourcesDé�nitions

Dé�nition

informations statiques,

stockées en dehors du code Java,

plusieurs types :I des imagesI des valeurs (chaînes, couleurs, tableaux, dimensions) associés à des noms

symboliquesI des �chiers XML statiquesI des objets bruts (�chiers quelconques, par exemple)

Valeurs

Utilisées pour l'internationalisation et la localisation

Il faut ABSOLUMENT éviter les chaînes de caractères constantes dans le codeJava !

E. Ramat (ULCO) Android 7 septembre 2013 77 / 207

Page 78: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Ressources

Structure

la dé�nition des ressources est disponible dans le répertoire res/

les di�érents types de ressources sont regroupés dans des répertoires :I animator pour la dé�nition des animations (succession d'images avec des

délais et des transitions)I anim pour la dé�nition des animations des vuesI color pour les listes de couleurs liées à un étatI drawable pour les images,I layout pour la description XML des éléments d'interfaceI menu pour la description XML des menusI raw pour les �chiers de l'application (�chiers audios, �chiers de données de

type CSV, par exemple)I values pour les messages, les dimensions, les couleurs, les tableaux de

constantes, . . .I xml pour les �chiers XML

E. Ramat (ULCO) Android 7 septembre 2013 78 / 207

Page 79: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

RessourcesUtilisation

Deux besoins

depuis une autre ressource : une ressource a besoin d'une autre ressource

@string/hello

dans le code Java : toutes les ressources sont identi�ées par des entiers etaccessible via des constantes de sous-classe de la classe R

R.string.helloR.layout.main

Il ne faut surtout pas modi�er le �chier R.java à la main ! Les entiers sont générésde manière automatique.

E. Ramat (ULCO) Android 7 septembre 2013 79 / 207

Page 80: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

RessourcesUtilisation - exemples courants

Assignation d'une nouvelle vue à une activité

Un �chier XML main_screen est disponible dans le répertoire layout

setContentView(R.layout.main_screen );

A�ectation d'un texte à une zone de texte

Dans un �chier de type Layout, un élément de type TextView est dé�ni avecl'identi�ant msg (android:id="@+id/msg")

TextView msgTextView = (TextView) findViewById(R.id.msg);msgTextView.setText(R.string.hello_message );

Unicité des identi�ants

La déclaration des id (@+id/...) doit être unique dans l'ensemble du layout.

E. Ramat (ULCO) Android 7 septembre 2013 80 / 207

Page 81: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

RessourcesUtilisation - exemples courants

Dé�nition du texte d'un bouton

Une constante string nommée submit est dé�nie et un bouton est dé�ni dans unlayout

<Button ... android:text="@string/submit" />

E. Ramat (ULCO) Android 7 septembre 2013 81 / 207

Page 82: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

RessourcesLes images

Dé�nition

par défaut, les images sont stockées dans le répertoire res/drawable ;

trois formats d'images sont reconnus : PNG, JPEG et GIF

le format conseillé est PNG et GIF est o�ciellement déconseillé

La ressource de type image (drawable) ic_launcher est dé�nie comme l'icône del'application.

<applicationandroid:icon="@drawable/ic_launcher"...

/>

E. Ramat (ULCO) Android 7 septembre 2013 82 / 207

Page 83: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

RessourcesLes couleurs

Dé�nition

il est possible de dé�nir sous forme de constantes les couleurs utilisées dansune application

les couleurs sont dé�nies res/values/colors.xml

plusieurs formes pour exprimer les couleurs :I #RGB : un seul digit hexadécimal est utilisé pour exprimer chaque

composante de la couleur (#000 désigne le noir, c'est équivalent à #000000) ;I #ARGB : la valeur du canal alpha est ajoutée à la dé�nition de la couleur (le

canal alpha désigne le niveau de transparence par défaut, A = #FF càdtotalement opaque)

I #RRGGBB et #AARRGGBB : formats à deux digits héxadécimaux par couleur

<resources ><color name="textColor">#000</color><color name="btnBackground">#fff</color>

</resources >

E. Ramat (ULCO) Android 7 septembre 2013 83 / 207

Page 84: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

RessourcesLes styles

Dé�nition

un style est un assemblage de plusieurs attributs utilisés plusieurs fois dansl'applications

les style sont dé�nis res/values/styles.xml

Dé�ntion d'un nouveau style

la couleur, la dimension, le style et la police de caractères sont modi�és

la couleur et la dimension font référence à des constantes.

<resources ><style name="GreenText" parent="@android:style/TextAppearance">

<item name="android:textColor">@color/textColor </item><item name="android:textSize">@dimen/textSize </item><item name="android:textStyle">italic </item><item name="android:typeface">serif</item>

</style ></resources >

E. Ramat (ULCO) Android 7 septembre 2013 84 / 207

Page 85: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

RessourcesRessources alternatives

Dé�nition des alternatives

les alternatives sont utilisées pour répondre aux problèmes d'hétérogéniété dumatériel, à l'orientation de l'écran, à la langue, du mode jour/nuit, . . .

par exemple :I plusieurs versions d'une même image peut être proposées en fonction de la

résolution de l'écranI plusieurs répertoires drawable sont alors disponibles : drawable (pour la taille

par défaut), drawable-hdpi (pour les grandes résolutions), . . . (ldpi, mdpi, hdpi,xhdpi, nodpi et tvdpi)

Orientation de l'écran

Pour les éléments d'interface, deux répertoires sont nécessaires :

layout-port pour le mode portrait (vertical)

layout-land pour le mode paysage (horizontal)

Tous les éléments d'interface ne nécessitent pas obligatoirement une doubledé�nition.

E. Ramat (ULCO) Android 7 septembre 2013 85 / 207

Page 86: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateur

E. Ramat (ULCO) Android 7 septembre 2013 86 / 207

Page 87: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurIntroduction générale

Ergonomie

concevoir votre application pour un périphérique mobile avec toutes sescontraintes

la référence pour Android :http://developer.android.com/design/index.html

Ce qu'il ne faut pas faire !

un simple portage de votre application développée sous un autre système(multifenêtré, saisie clavier et souris, . . . )

ne pas abuser des fenêtres modales et des boites de con�rmation

ne créer pas d'interface �xe et ne positionner pas les élements de manière �xe

ne pas utiliser les dimensions px mais dpi (ou sp pour le texte)

ne pas utiliser les polices de caractères trop petites

E. Ramat (ULCO) Android 7 septembre 2013 87 / 207

Page 88: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurIntroduction générale

Ce qu'il faut faire !

créer des versions pour les écrans de grande densité

mettre des éléments grands et évidents (boutons, . . . )

suivre le guide Android pour les icônes(http://developer.android.com/design/index.html)

gérer proprement la pile d'activités

gérer le changement d'orientation

utiliser les thèmes, les couleurs, . . . , dé�nis sous forme de ressources a�n delimiter les recondances

Il est important de suivre les di�érents guides de conception d'Androidpour obtenir une applications �conformes� aux attentes des utilisateurs

E. Ramat (ULCO) Android 7 septembre 2013 88 / 207

Page 89: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurIntroduction générale

Préceptes

beauté : même l'icône de l'application est importante

simplicité : l'utilisation doit être intuitiveI introduiser des dessins explicites, intégrer des actions de navigation simple

(balayage du doigt, par exemple)I faites des messages les plus courts possiblesI les choses importantes doivent être rapide d'accèsI décomposer les tâches complexes en petites étapesI informer l'utilisateur lors des actions (même sous forme �ash)

E. Ramat (ULCO) Android 7 septembre 2013 89 / 207

Page 90: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurIntroduction générale

Organisation

un écran de démarrage (ou écran principal) :I l'identité de votre applicationI doit contenir une grande partie de la navigationI à adapter à la taille des écransI l'écran principal peut être divisé en plusieurs écrans pour les di�érentes

fonctionnalités de l'application

des écrans de détail ou d'édition de données

Organisation - barre d'actions

chaque écran doit possèder une barre d'actions

pour la navigation et les actions de premier niveau

attention, disponible qu'à partir de Android 3.0

E. Ramat (ULCO) Android 7 septembre 2013 90 / 207

Page 91: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurVues et widgets

Dé�nitions - Vue

chaque activité possède une fenêtre graphique pour interagir avec elle

il existe 2 stratégies de construction :I totalement en Java par instantation des widgetsI à l'aide de �chiers XML de dé�nition des widgets composants l'interface

l'interface graphique d'une activité est construite à partir de View (classeandroid.view.View) et de ViewGroup

la vue est le concept de base ; les composants utilisables sont les �widgets�

de même, le groupe de vues est un concept de base dérivé en �layout� quipermet d'agencer les widgets

L'utilisation des �chiers de dé�nition XML est fortement conseillé.

E. Ramat (ULCO) Android 7 septembre 2013 91 / 207

Page 92: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurLayout XML

Dé�nitions

un layout XML est une réprésentation XML de l'organisation des widgetsd'une interface graphique

les éléments de l'interface sont agencés selon di�érents modèles (Linear, Grid,Absolute, Relative, . . . )

il est possible de dé�nir des hiérarchies de layouts

Eclipse

Eclipse o�re des outils de dé�nition graphique.

E. Ramat (ULCO) Android 7 septembre 2013 92 / 207

Page 93: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurLinearLayout

Dé�nition d'un layout

Deux widgets (une zone de texte et un bouton) placés l'un en dessous de l'autre(en mode portrait/vertical)

<?xml version="1.0" encoding="utf -8"?><LinearLayout xmlns:android="http: // schemas.android.com/apk/res/android"

android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" >

<TextView android:id="@+id/text"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello , I am a TextView" />

<Button android:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello , I am a Button" />

</LinearLayout >

les 2 widgets sont identi�és via la création de 2 identi�ants (@+id/...)

en revanche, les textes ne sont pas génériques (dé�ni directement)

E. Ramat (ULCO) Android 7 septembre 2013 93 / 207

Page 94: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurLinearLayout - paramètres

Paramètres

à chaque niveau de la hiérarchie d'un layout, des paramètres sont applicables

il existe des paramètres communs à tous les éléments et des paramètresspéci�ques

les paramètres qui s'appliquent sont ceux du layout dans lequel l'élément estdé�ni et ceux de l'élément

E. Ramat (ULCO) Android 7 septembre 2013 94 / 207

Page 95: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurLinearLayout - paramètres

layout_width et layout_height

ces deux paramètres permettent de �xer la largeur et la hauteur d'uncomposant

ils sont nécessaires pour tous les composants (Vue et groupe de vues)

il est possible de les dé�nir avec des mesures exactes (exprimées en dp, sp,pt, px, mm ou in) ou de manière relative par rapport au contenu ou au parent(préconisé)

E. Ramat (ULCO) Android 7 septembre 2013 95 / 207

Page 96: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurLinearLayout - paramètres

Mesures

px : pixel de l'écran (déconseillé car attention à la densité)

dip : pixel indépendant de la densité (1dip pour un écran à 160 dpicorrespond à 1 pixel) ; s'adapte à la densité

sp : mesure dépendant de la police de caractères choisie

basé sur la taille physique :I mm : millimètreI in : pouceI pt : 1/72 de pouce

layout_width et layout_height

Relativement au contenu ou au parent

wrap_content : la taille s'adapte au contenu

fill_parent (renommé match_parent dans l'API Level 8) : le composantoccupe tout l'espace disponible après le placement des autres widgets

E. Ramat (ULCO) Android 7 septembre 2013 96 / 207

Page 97: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurLinearLayout - paramètres

Position

dans la plupart des cas, c'est automatique (calculé)

dans les autres (AbsoluteLayout ou FrameLayout), la position des widgetsdoit être dé�nie en coordonées (x,y)

les coordonées sont exprimées par rapport au coin supérieur gauche

Marges et taille

dé�nition de marges (haut, bas, gauche et droite) par rapport au parent(android:layout_marginBottom, par exemple)

tout composant possède une taille automatique ou non que l'on peut obtenirà l'aide des méthodes getMeasuredWidth() et getMeasuredHeight().

E. Ramat (ULCO) Android 7 septembre 2013 97 / 207

Page 98: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurLinearLayout - paramètres

Poids - layout_weight

le poids permet de spéci�er le partage de l'espace disponible pour lescomposants du layout

si layout_width et layout_height sont �xés à �ll_parent, les composants separtageront l'espace en fonction de leur poids

si les poids sont identiques (1 pour tous les composants) alors la taille dechaque composant sera égale

si layout_width et layout_height sont nuls pour l'ensemble des composantsdu layout alors layout_weight est un pourcentage

Gravité - layout_gravity

par défaut, les composants d'un layout s'aligne à gauche pour une orientationverticale

la gravité permet de modi�er cet alignement avec les valeurs :I left, center_horizontal, right pour une oriantation horizontal ;I top, center_vertical, bottom pour une orientation verticale

E. Ramat (ULCO) Android 7 septembre 2013 98 / 207

Page 99: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurLinearLayout - paramètres

Modi�cation des paramètres depuis le code Java

Tous les paramètres sont modi�ables via des méthodes Java.

Exemple

Au préalable, il faut avoir dé�ni un identi�ant sur le composant sur lequel on veutagir.

<LinearLayout xmlns:android="http: // schemas.android.com/apk/res/android"android:id="@+id/my_layout"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical" >

...</LinearLayout >

Exemple

myLayout = (LinearLayout)findViewById(R.id.my_layout );...myLayout.setOrientation(LinearLayout.HORIZONTAL );

E. Ramat (ULCO) Android 7 septembre 2013 99 / 207

Page 100: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurLayout - les autres

Types

RelativeLayout : le positionnement des composants est relatif aux autrescomposants et au layout parent ;

TableLayout : les composants sont rangés selon un tabeau

ScrollView : le composant englobé dans un ScrollView possède la faculté dedé�ler

E. Ramat (ULCO) Android 7 septembre 2013 100 / 207

Page 101: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurWidgets - introduction

Dé�nition

comme toute interface graphique moderne, Android propose des élémentsgraphiques pour les interactions et l'a�chage : les widgets

des widgets simples : boutons, champs de saisie, cases à cocher, boutonsradios, listes déroulantes, . . .

des widgets complexes : date picker, horloge, barre de progression, . . .

Java / XML

Tout widget possède à la fois :

une classe Java qui implémente le comportement du composant graphique etdonne accès à son état

une description XML avec des paramètres pour le dé�nir graphiquement etpour paramètrer son comportement

Tous les éléments de paramétrage via XML existent sous forme de méthode Java.

E. Ramat (ULCO) Android 7 septembre 2013 101 / 207

Page 102: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurWidgets - introduction

E. Ramat (ULCO) Android 7 septembre 2013 102 / 207

Page 103: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurWidgets - Label

Dé�nition

le �Label� (la classe TextView) est le plus simple des widgets

a�chage d'un texte (modi�able via la classe TextView)

attributs XML spéci�ques :I android:text : texte associéI android:textSize : taille de la police de caractèresI android:textStyle : gras (bold), italique (italic) ou les deux (bold_italic)I android:textColor : couleur du texte au format RGBI android:textface : police d'a�chage (normal, sans, serif, monospace)

Pensez à utiliser des ressources pour la dé�nition des chaînes de caractères et descouleurs

E. Ramat (ULCO) Android 7 septembre 2013 103 / 207

Page 104: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurWidgets - Label

Exemple

<TextView android:id="@+id/text"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="Hello , I am a TextView" />

E. Ramat (ULCO) Android 7 septembre 2013 104 / 207

Page 105: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurWidgets - Bouton

Dé�nition

la classe Button permet de représenter un bouton sur lequel on peut appuyeret cliquer

attributs identiques à ceux de TextView

possibilité de �customiser� le rendu des états du bouton via StateList

Exemple

<Buttonandroid:layout_height="wrap_content"android:layout_width="wrap_content"android:text="@string/button_text" />

E. Ramat (ULCO) Android 7 septembre 2013 105 / 207

Page 106: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurWidgets - Bouton

Customisation

par défaut, les boutons possèdent le rendu standard d'Android

la classe StateListDrawable permet de dé�nir une liste d'objets graphiquesutilisant plusieurs images di�érentes

chaque image est dé�nie en relation avec un état

Dé�nition d'un selector

Trois images pour quatre états (�chier res/drawable/state_list_drawable.xml)

<selector xmlns:android="http: // schemas.android.com/apk/res/android"><item android:state_pressed="true"

android:drawable="@drawable/button_pressed" /><item android:state_focused="true"

android:drawable="@drawable/button_focused" /><item android:state_hovered="true"

android:drawable="@drawable/button_focused" /><item android:drawable="@drawable/button_normal" />

</selector >

E. Ramat (ULCO) Android 7 septembre 2013 106 / 207

Page 107: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurWidgets - Bouton

Dé�nition du bouton customisé

Modi�cation de l'attribut background

<Buttonandroid:layout_height="wrap_content"android:layout_width="wrap_content"android:background="@drawable/state_list_drawable" />

Bouton à états

La classe ToggleButton a�che un bouton à 2 états (ON/OFF)

E. Ramat (ULCO) Android 7 septembre 2013 107 / 207

Page 108: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurWidgets - Champ de saisie

Dé�nition

la saisie est possible à l'aide du widget EditText ;

les propriétés de l'EditText sont identiques aux propriétés de TextView +quelques unes de plus :

I android:autoText : active la correction automatique de l'orthographeI android:capitalize : mets automatiquement la première lettre en majusculeI android:digits : n'accepte que des chi�resI android:singleLine : autorise la saisie sur plusieurs lignes (si vrai alors entrée

fait passer au champ de saisie suivant)

Auto completion

La classe AutoCompleteTextView propose un champ de saisie activantl'autocompletion d'Android.

E. Ramat (ULCO) Android 7 septembre 2013 108 / 207

Page 109: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurWidgets - Cases à cocher

Dé�nition

le widget CheckBox permet d'obtenir un composant à deux états répresentéspar une boîte à cocher

les propriétés sont les mêmes que le widget TextView

en Java,I on accède à l'état : isChecked() ;I on peut modi�er l'état : setChecked() ;I on peut inverser l'état : toggle()

E. Ramat (ULCO) Android 7 septembre 2013 109 / 207

Page 110: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurWidgets - Bouton radio

Dé�nition

le widget RadioButton et le conteneur RadioGroup o�rent la possibilité dedé�nir une liste de boutons dont un et un seul peut être coché

une fois encore, les propriétés sont les mêmes que le widget TextView

en Java,I on accède à l'état : check() ou check(id) depuis le groupe ;I on peut déchocher : clearCheck() ;I on obtient l'identi�ant du bouton radio coché : getCheckedRadioButtonId() à

partir du groupe

E. Ramat (ULCO) Android 7 septembre 2013 110 / 207

Page 111: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurWidgets - Bouton radio

Exemple

Un groupe de deux boutons radio avec le bouton radioFemale coché par défaut

<RadioGroupandroid:id="@+id/radioSex"android:layout_width="wrap_content"android:layout_height="wrap_content" >

<RadioButtonandroid:id="@+id/radioMale"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/radio_male"android:checked="true" />

<RadioButtonandroid:id="@+id/radioFemale"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/radio_female" />

</RadioGroup >

E. Ramat (ULCO) Android 7 septembre 2013 111 / 207

Page 112: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurWidgets - Image

Dé�nition

deux widgets peuvent prendre en charge l'intégration d'images dans unécran : ImageView et ImageButton

le widget ImageButton est une sous-classe de ImageView ajoutant lapossibilité à une image de réagir comme un bouton (clics et autres)

un attribut android:src spéci�e la ressource de type drawable

Exemple

<ImageViewandroid:id="@+id/imageView1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/android" />

E. Ramat (ULCO) Android 7 septembre 2013 112 / 207

Page 113: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurWidgets de sélection

Dé�nition

le principe général des widgets de sélection est d'o�rir à l'utilisateur lapossibilité de choisir quelque chose dans une liste

la liste peut être composée de texte, de bouton à cocher, d'images, . . .

les données à a�cher sont adaptées au format du widget de sélection via des�adapters�

Exemple

String [] semaine = {"Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi","Samedi", "Dimanche"};

new ArrayAdapter <String >(this , android.R.layout.simple_list_item_1 , semaine );

this est une référence sur le contexte (l'activité courante)

simple_list_item_1 est l'identi�ant de la ressource de type list qui seradestinataire de la liste de string

semaine est le tableauE. Ramat (ULCO) Android 7 septembre 2013 113 / 207

Page 114: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurWidgets de sélection

Dé�nition

le widget classique d'Android pour les listes se nomme ListView ;

pour remplir la vue, il est nécessaire de fournir les données à la vue vial'adapter ;

si la vue de votre activité se limite à une liste (et c'est souvent le cas), alors ilest préférable d'utiliser la classe ListActivity

Exemple

<LinearLayout xmlns:android="http: // schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent">

<TextViewandroid:id="@+id/selection"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="@string/choice_message"/>

<ListViewandroid:id="@android:id/list"android:layout_width="fill_parent"android:layout_height="fill_parent" />

</LinearLayout >

L'identi�ant de la liste est dé�ni par une variable automatique d'Android(@android:id/list).

E. Ramat (ULCO) Android 7 septembre 2013 114 / 207

Page 115: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurWidgets de sélection

Exemple

private String [] semaine = {"Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi","Samedi", "Dimanche"};

@Overridepublic void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState );setContentView(R.layout.main);setListAdapter(new ArrayAdapter <String >(this ,

android.R.layout.simple_list_item_1 , semaine ));}

Si l'activité est �lle de ListActivity alors il su�t de faire appel à setListAdapter.

E. Ramat (ULCO) Android 7 septembre 2013 115 / 207

Page 116: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurInteractions

Dé�nitions

le modèle d'interaction est basé sur une boucle événementielle

les listeners capturent les événements

chaque interaction donne lieu à un appel d'une méthode dite callback(onClick lorsque l'on �clique� sur un élément) d'un listener

il existe 2 stratégies de dévelopement :I par implémentation d'interfaces (au sens Java) par l'activité, le listener est

alors l'activité et les méthodes callback sont développées dans l'activitéI par création d'un objet implémentant une interface (OnClickListener, par

exemple) et on lie cet objet au widget

La deuxième forme peut être plus compact en se passant de la création explicitede l'objet.

E. Ramat (ULCO) Android 7 septembre 2013 116 / 207

Page 117: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurInteractions

Types d'interaction

Les interactions sont essentiellement centrées sur le tactile ;

Le son est aussi une entrée possible via l'analyse vocale, par exemple

Certains périphériques embarquent des gyroscopes qui peuvent aussipermettre certaines interactions.

E. Ramat (ULCO) Android 7 septembre 2013 117 / 207

Page 118: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurInteractions

Types d'interaction

touch : appuyer et relâcher → désigner, sélectionner quelque chose

long press : appuyer, attendre et relâcher → sélectionner quelque chose,accéder au menu contexte

swipe : appuyer, déplacer et relâcher → faire dé�ler un contenu, accéder àune autre vue de même niveau

drag : appuyer �longuement�, déplacer et relâcher → déplacer quelque chosedans un container

double touch : appuyer deux fois rapidement → zoomer, sélectionner

pinch open : appuyer avec 2 doigts, écarter les doigts et relâcher → zoomer

pinch close : appuyer avec 2 doigts, rapprocher les doigts et relâcher →dezoomer

E. Ramat (ULCO) Android 7 septembre 2013 118 / 207

Page 119: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurInteractions

Dé�nition

il existe di�érents façons d'intercepter les interactions de l'utilisateur

dans le contexte de l'interface graphique, capture des événements par l'objetde type View

on parle d� 'event listener� : écouteur d'événements

par exemple :I l'utilisateur clique sur un boutonI le widget bouton capture l'événementI l'événement est envoyé au �listener�I une méthode du listener est invoquée

E. Ramat (ULCO) Android 7 septembre 2013 119 / 207

Page 120: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurInteractions

Stratégies de codage

utilisation d'un paramètre XML pour nommer la méthode à invoquer del'activité en charge du widget

implémentation d'une interface Listener par l'activité

dé�nition d'un attribut de type Listener via une classe anonyme oudirectement par instantiation d'une classe anonyme

Utilisation d'un paramètre XML

Lors de l'événement �clic� sur un bouton, la méthode �click� de l'activité estappelée (public void click(View view))

<Buttonandroid:layout_height="wrap_content"android:layout_width="wrap_content"android:text="@string/my_button"android:onClick="click" />

E. Ramat (ULCO) Android 7 septembre 2013 120 / 207

Page 121: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurInteractions

Implémentation d'un Listener

L'activité implémente un Listener et la méthode de traitement de l'événementet le widget envoie les événements à l'activité

public class ExampleActivity extends Activity implements OnClickListener {protected void onCreate(Bundle state) {

...Button button = (Button)findViewById(R.id.mybutton );button.setOnClickListener(this);

}

public void onClick(View v) {...

}...

}

E. Ramat (ULCO) Android 7 septembre 2013 121 / 207

Page 122: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurInteractions

Implémentation d'une classe anonyme

Lors de l'a�ectation du Listener, il y a création d'un objet à partir d'une classeanonyme (sans nom) implémentant une interface Listener

public class MyActivity extends Activity {protected void onCreate(Bundle status) {

...Button button = (Button) findViewById(R.id.mybutton );button.setOnClickListener(new View.OnClickListener () {

public void onClick(View v) {...

}});

}}

E. Ramat (ULCO) Android 7 septembre 2013 122 / 207

Page 123: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurInteractions

Attribut

On peut aussi passer un attribut a�ecté à la déclaration par une instance d'uneclasse anonyme

private OnClickListener mMyButtonListener = new OnClickListener () {public void onClick(View v) {

...}

};

E. Ramat (ULCO) Android 7 septembre 2013 123 / 207

Page 124: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurInteractions

Interactions possibles

Toutes les interactions ne s'appliquent pas à tous les composants. Le composantrépondant à l'événement possède le focus.

OnClick : appui (en touch ou dispositif de pointage)

OnLongClick : appui et de �relachement�

OnTouch : appui de type touch sur l'écran

OnDrag : appui puis déplacement

OnHover : survol

OnKey : appui sur une touche

OnCreateContextMenu : appui sur la touche Menu

Paramètres

toutes les méthodes de traitement des événements ont pour premierparamètre une référence sur l'objet View concerné par l'interaction

des paramètres supplémentaires sont disponibles en fonction de l'interactionsauf pour OnClick et OnLongClick

E. Ramat (ULCO) Android 7 septembre 2013 124 / 207

Page 125: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurInteractions

OnTouch

private OnTouchListener mMyListener = new OnTouchListener () {public boolean onTouch(View v, TouchEvent event) {

...}

};

OnTouch

Le paramètre de type MotionEvent dé�nit les informations de déplacement(spéci�ques au système de pointage - doigt, souris, stylet, . . . )

les coordonnées : getX et getY

E. Ramat (ULCO) Android 7 septembre 2013 125 / 207

Page 126: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurInteractions

OnDrag

private OnDragListener mMyListener = new OnDragListener () {public boolean onDrag(View v, DragEvent event) {

...}

};

OnDrag

Le paramètre de type DragEvent dé�nit les phases du �drag&drop�

ACTION_DRAG_STARTED : le �drag&drop� commence

ACTION_DRAG_ENTERED : la zone déplacée par le �drag� vient d'entrerdans la zone graphique du composant

ACTION_DRAG_LOCATION : la zone déplacée par le �drag� se déplacetoujours dans la zone graphique du composant

E. Ramat (ULCO) Android 7 septembre 2013 126 / 207

Page 127: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Interface utilisateurInteractions

OnDrag

ACTION_DRAG_ENDED : le �drag&drop� se termine

ACTION_DRAG_EXITED : la zone déplacée par le �drag� vient de sortir dela zone graphique du composant

ACTION_DROP : le �drag&drop� se termine dans la zone graphique ducomposant

Position

Deux méthodes permet de savoir où se trouve le pointeur (getX et getY).

E. Ramat (ULCO) Android 7 septembre 2013 127 / 207

Page 128: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Pop-ups

Messages surgissants

il ne faut pas laisser l'utilisateur sans nouvelle des actions cachées

par exemple, on réalise une tâche comme la mise à jour d'une information surun serveur (et cela prend un peu de temps)

Android o�re le mécanisme de toast

un toast a�che un message pendant quelques secondes et disparaît sansintervention de l'utilisateur

Toast.makeText(getApplicationContext (),"Information saved!",Toast.LENGTH_LONG ).show ();

Durée d'a�chage

La durée d'a�chage est dé�nie à l'aide du troisième paramètre de la méthodemakeText (LENGTH_LONG ou LENGTH_SHORT).

E. Ramat (ULCO) Android 7 septembre 2013 128 / 207

Page 129: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Préférences

E. Ramat (ULCO) Android 7 septembre 2013 129 / 207

Page 130: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

PréférencesIntroduction

Dé�nitions

Android o�re plusieurs techniques de stockage (base de données, �chier,. . . et les préférences)

préférences = stockage persistant de paires clés / valeurs

la clé est une chaîne de caractères (String) et la valeur est de type primitif

stockage d'information liée à une activité ou à plusieurs activités d'uneapplication

Accès

Trois modes d'accès :

préférences spéci�ques à une activité (getPreferences())

préférences de l'application (getSharedPreferences())

préférences de l'application accompagnées d'outils standards du systèmeAndroid comme l'activité PreferenceActivity(getDefaultSharedPreferences())

E. Ramat (ULCO) Android 7 septembre 2013 130 / 207

Page 131: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

PréférencesIntroduction

Sécurité

Les préférences peuvent être :

privées (MODE_PRIVATE),

accessible en lecture par toutes les applications(MODE_WORLD_READABLE)

accessible en écriture par toutes les applications(MODE_WORLD_WRITEABLE)

Déclaration

getPreferences() est un cas particulier de getSharedPreferences() oùl'identi�ant lié aux préférences est l'identi�ant de la classe Activity rattachée

getSharedPreferences() admet un identi�ant ; plusieurs �chiers depréférences possibles pour une application

Multiprocessing

Activation du �ag MODE_MULTI_PROCESS si les préférences peuvent êtreaccédées par plusieurs processus multithreadés.

E. Ramat (ULCO) Android 7 septembre 2013 131 / 207

Page 132: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

PréférencesUtilisation

Ecriture

les préférences sont modi�ables via une instance de la classeSharedPreferences.Editor obtenue par la méthode edit

a�ectation ou modi�cation d'une préférence via les méthodes putXXX oùXXX est un type primitif (putString, par exemple)

les modi�cations sont e�ectives qu'après validation par commit (méthode deSharedPreferences)

Autres opérations

remove : suppression d'une préférence

clear : suppression de toutes les préférences

E. Ramat (ULCO) Android 7 septembre 2013 132 / 207

Page 133: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

PréférencesUtilisation - exemples

Modi�cation

SharedPreferences settings = getSharedPreferences("MyPrefs",Context.MODE_PRIVATE );

SharedPreferences.Editor editor = settings.edit ();

editor.putBoolean("MyPref", false);editor.commit ();

Lecture

SharedPreferences settings = getSharedPreferences("MyPrefs",Context.MODE_PRIVATE );

boolean my_pref = settings.getBoolean("MyPref", false );

Valeur par défaut

La valeur du deuxième paramètre des méthodes getXXX est utilisée si lapréférence n'existe pas

E. Ramat (ULCO) Android 7 septembre 2013 133 / 207

Page 134: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

PréférencesFenêtre de dé�nition des préférences

PreferenceActivity

Android propose une spéci�cation XML et une classe Activity pour ladé�nition des préférences via l'interface graphique

à utiliser a�n de respecter la logique Android

Principe

dé�nir la structure de l'interface via un �chier XML avec des tags spécialisés(<PreferenceScreen>)

surcharger la classe PreferenceActivity a�n de lier l'activité à la ressourceXML

déclarer la nouvelle activité dans le manifest

commit

Lors d'un changement, la valeur est a�ectée aux préférences et commitée.

Android 3.0 et sup.

La dé�nition de la structure utilise les fragmentsE. Ramat (ULCO) Android 7 septembre 2013 134 / 207

Page 135: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

PréférencesFenêtre de dé�nition des préférences

XML

<PreferenceScreen xmlns:android="http: // schemas.android.com/apk/res/android" >

<ListPreferenceandroid:dialogTitle="Player color"android:entries="@array/colors"android:entryValues="@array/colors"android:key="player_color"android:summary="select color of player"android:title="Player color" />

<EditTextPreferenceandroid:key="login"android:title="Login"android:summary="edit login"android:dialogTitle="select a login" />

</PreferenceScreen >

Deux éléments : une liste et un texte

E. Ramat (ULCO) Android 7 septembre 2013 135 / 207

Page 136: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

PréférencesFenêtre de dé�nition des préférences

La classe PreferenceActivity

import android.os.Bundle;import android.preference.PreferenceActivity;

public class Preferences extends PreferenceActivity{

public void onCreate(Bundle state){

super.onCreate(state);addPreferencesFromResource(R.layout.preferences );

}}

Tout est automatique !

E. Ramat (ULCO) Android 7 septembre 2013 136 / 207

Page 137: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

PréférencesFenêtre de dé�nition des préférences

Récupération des préférences dans une sous classe

SharedPreferences settings =PreferenceManager.getDefaultSharedPreferences(getApplicationContext ());String name = settings.getString("name","default");

E. Ramat (ULCO) Android 7 septembre 2013 137 / 207

Page 138: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Stockage des données

E. Ramat (ULCO) Android 7 septembre 2013 138 / 207

Page 139: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Stockage des donnéesIntroduction

Dé�nitions

Android propose plusieurs façons de stocker des données

les préférences (déjà précédemment) sous forme de couples (clé,valeur)

les �chiers sur un système de �chiers en mémoire interne ou ou mémoireexterne (carte SD, par exemple)

les bases de données SQLite

un serveur distant via le web

E. Ramat (ULCO) Android 7 septembre 2013 139 / 207

Page 140: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Stockage des donnéesSystème de �chiers

Système de �chiers

l'API standard de Java propose des classes pour la gestion des �ux via lepackage java.io

Android dispose de deux méthodes supplémentaires pour l'accès aux �chiersliés à l'application (openFileInput et openFileOutput)

Ouverture d'un �chier

try {FileInputStream file = openFileInput("myFile.dat");...file.close ();

} catch (FileNotFoundException e) { }

Modes

openFileOutput() ouvre un �chier en écriture ou le crée s'il n'existe pas

si le �chier existe, le �chier est écrasé

sinon il faut spéci�er le mode MODE_APPEND (ajout en �n).E. Ramat (ULCO) Android 7 septembre 2013 140 / 207

Page 141: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Stockage des donnéesSystème de �chiers

Accès

par défaut, les �chiers sont accessibles uniquement par l'application qui les acréé (mode MODE_PRIVATE)

pour partager un �chier, il faut développer des fournisseurs de contenus → labonne pratique

néanmoins, on peut spéci�er un mode permettant l'accès aux autresapplications (MODE_WORLD_READABLE ouMODE_WORLD_WRITABLE)

E. Ramat (ULCO) Android 7 septembre 2013 141 / 207

Page 142: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Stockage des donnéesSystème de �chiers

Ouverture d'un �chier

try {InputStream instream = openFileInput("myfilename.txt");

if (instream) {InputStreamReader inputreader = new InputStreamReader(instream );BufferedReader buffreader = new BufferedReader(inputreader );String line;

while ((line = buffreader.readLine ())) {}

}instream.close ();

} catch (java.io.FileNotFoundException e) {}

Explications

l'ouverture du �chier passe par la méthode openFileInput

la lecture du �chier fait appel aux classes de base de java.io :InputStreamReader et BufferedReader

E. Ramat (ULCO) Android 7 septembre 2013 142 / 207

Page 143: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Stockage des donnéesBase de données

Dé�nitions

le système de bases de données propose par Android est SQLite

SQLite est un SGBD sans serveur, basé uniquement sur des �chiers

l'exécution des requêtes s'e�ectue dans le processus de l'application

comme pour les �chiers, la base de données est privée à l'application

une application peut créér plusieurs bases de données

Localisation

Les �chiers des bases de données d'une application sont localisées dans lerepértoire : /data/data/<namespace>/databases

ORM : Object Relational Mapper

Il n'y a pas d'ORM dans Android donc deux possibilités :

utiliser une API externe : ORMLite, ActiveAndroid ou db4objects

développer une classe encapsulant les requêtes à la base et des classesreprésentants les entités manipulées

E. Ramat (ULCO) Android 7 septembre 2013 143 / 207

Page 144: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Stockage des donnéesBases de données

Création et mise à jour

la manipulation (création et mise à jour) de la base de données est réaliséevia une sous-classe de la classe SQLiteOpenHelper

deux méthodes et un constructeur sont à développer :I le constructeur qui a pour paramètre le nom de la base de données et la versionI onCreate : méthode de création de la base de donnéesI onUpgrade : méthode de changement de version

il est important de gèrer le numéro de version de la base de données, celapermet de prendre en charge via la méthode onUpgrade les changements deversion

E. Ramat (ULCO) Android 7 septembre 2013 144 / 207

Page 145: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Stockage des donnéesBases de données

Création et mise à jour

public class MyDatabase extends SQLiteOpenHelper {

public MyDatabase(Context context , String name , CursorFactory factory ,int version) {

super(context , name , factory , version );}

public void onCreate(SQLiteDatabase db) {db.execSQL("CREATE TABLE people ("

+ "id INTEGER PRIMARY KEY AUTOINCREMENT ,"+ "name TEXT NOT NULL);");

db.execSQL("CREATE TABLE location ("+ "id INTEGER PRIMARY KEY AUTOINCREMENT ,"+ "name TEXT NOT NULL);");

}

public void onUpgrade(SQLiteDatabase db, int oldVersion ,int newVersion) {

if (newVersion == 2 && oldVersion == 1) {db.execSQL("CREATE TABLE location ("

+ "id INTEGER PRIMARY KEY AUTOINCREMENT ,"+ "name TEXT NOT NULL);");

}}

}

E. Ramat (ULCO) Android 7 septembre 2013 145 / 207

Page 146: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Stockage des donnéesBases de données

Accès et requête

deux méthodes d'accès (en lecture ou en écriture) de la classeSQLiteOpenHelper : getReadableDatabase et getWritableDatabase

pour réaliser une requête de type SELECT, deux possibilités :I rawQuery permet d'exécuter directement une instruction SELECT sous forme

d'une chaîne complète de caractèresI query permet de construire une requête à partir de di�érents élements d'une

requête SELECT

les méthodes de requêtes retourne un objet Cursor pour parcourir lesrésultats

MyDatabase myBase = new MyDatabase(context , database_name , null ,version_number );

SQLiteDataBase bd = myBase.getWritableDatabase ();String [] colomns = {"name"};Cursor cursor = bd.query("people", colomns , "id = "+id, null ,

null , null , "name") ;

E. Ramat (ULCO) Android 7 septembre 2013 146 / 207

Page 147: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Stockage des donnéesBases de données

Requête via la méthode query

Les paramètres de query

distinct : spéci�e si le résultat doit contenir ou non des éléments uniques

table : le nom de la table

columns : le nom des colonnes de la table à inclure dans le résultat (si null,toutes les colonnes)

selection : la clause de �ltre WHERE de la requête (on peut utiliser desvaleurs '?' dans la sélection, elles seront remplacées par la valeur spéci�éedans le paramètre selectionArgs)

groupBy : le �ltre de regroupement des lignes

having : le �ltre de condition d'apparition des lignes en relation avec leparamètre groupBy

orderBy : ordre de tri des lignes

limit : nombre limite de lignes retournées par la requête

E. Ramat (ULCO) Android 7 septembre 2013 147 / 207

Page 148: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Stockage des donnéesBases de données

Requête et Cursor

la classe Cursor navigue dans les enregistrements sélectionnés

quatre méthodes importantes :I getCount : retourne le nombre d'enregistrements sélectionnéesI moveToFirst : place le curseur sur le premierI moveToNext : passe à l'enregistrement suivantI close : mets �n au parcours

cursor.moveToFirst ();do {...} while (cursor.moveToNext ());cursor.close ();

Récupération des données

À l'aide du curseur, on peut désigner l'élément à récupérer via sa position dansl'enregistrement et on doit utiliser des méthodes liées au type de la donnée(getString(int), getInt(int), . . . )

E. Ramat (ULCO) Android 7 septembre 2013 148 / 207

Page 149: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Stockage des donnéesBases de données

Ajout

L'ajout de données se fait via la méthode insert et la classe ContentValues

ContentValues values = new ContentValues ();valeurs.put("name", "toto");bd.insert("people", null , values );

Mise à jour

La mise à jour de données se fait via la méthode update et la classeContentValues

ContentValues values = new ContentValues ();valeurs.put("name", "toto");bd.update("people", values , "id = "+id, null);

Suppression

La suppression d'un enregistrement se fait via la méthode delete

bd.delete("people", "id = "+id, null);

E. Ramat (ULCO) Android 7 septembre 2013 149 / 207

Page 150: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Graphique

E. Ramat (ULCO) Android 7 septembre 2013 150 / 207

Page 151: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

GraphiqueIntroduction

Dé�nitions

toute vue (classe View) propose sa représentation graphique via la méthodeonDraw

les interactions sont traitées par les méthodes onTouchEvent, onKeyUp etonKeyDown

les widgets sont des sous-classes de View

Sa propre vue

Dé�nir sa propre vue consiste à dé�nir une sous-classe de View et d'implémenter aminima les méthodes de représentation graphique et d'interaction.

E. Ramat (ULCO) Android 7 septembre 2013 151 / 207

Page 152: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

GraphiqueDé�nition de la classe

Dé�nition d'une nouvelle vue

hériter de classe View

surcharger les méthodes onDraw et onTouchEvent

La sous-classe de View

public class MyView extends View {public MyView(Context context) {

super(context );}

@Overrideprotected void onDraw(Canvas canvas) {

super.onDraw(canvas );}

@Overridepublic boolean onTouchEvent(MotionEvent event) {

return super.onTouchEvent(event );}

}

E. Ramat (ULCO) Android 7 septembre 2013 152 / 207

Page 153: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

GraphiqueUtilisation de sa vue dans un Layout

Vue et Layout

toute sous-classe de View peut être utilisée directement dans un layout

le nom de la balise XML est alors tout simplement le nom de la classe pré�xépar le nom du namespace

View et Layout

<?xml version="1.0" encoding="utf -8"?><LinearLayout xmlns:android="http: // schemas.android.com/apk/res/android"

android:layout_width="fill_parent"android:layout_height="fill_parent"android:gravity="center_horizontal|center_vertical"android:orientation="vertical" >

<org.example.MyViewandroid:id="@+id/my_view"android:layout_height="fill_parent"android:layout_width="fill_parent" />

</LinearLayout >

E. Ramat (ULCO) Android 7 septembre 2013 153 / 207

Page 154: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

GraphiqueUtilisation de sa vue dans un Layout

Vue et Layout

si la classe vue est une inner-classe d'une classe Activity, par exemple

il faut adopter la deuxième syntaxe :

<view class="org.example.MyActivity$MyView".../>

il faut aussi que l'inner soit publique et statique

E. Ramat (ULCO) Android 7 septembre 2013 154 / 207

Page 155: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

GraphiqueUtilisation de sa vue dans un Layout

Personnalisation des attributs

En surchargeant le constructeur à 2 paramètres (Context et AttributeSet), ilest possible de récupérer un attribut personnalisé utilisé dans la dé�nition de laView dans le �chier XML du Layout.

Attributs XML personnalisés

<org.example.MyViewandroid:id="@+id/my_view"android:layout_height="fill_parent"android:layout_width="fill_parent"my_namespace:my_attribute="100"/>

Récupération des attributs personnalisés

public MyView(Context context , AttributeSet attrs) {super(context , attrs);String value = attrs.getAttributeValue("my_namespace", "my_attribute");

}

E. Ramat (ULCO) Android 7 septembre 2013 155 / 207

Page 156: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

GraphiqueReprésentation de sa vue

Canvas

la construction de la représentation graphique d'une vue via la méthodeonDraw passe par la classe Canvas

la méthode onDraw est invoquée par le système dès lors que la vue doit êtremise à jour

une invocation à la méthode invalidate sur la vue provoque une demandede mise à jour

Methodes de Canvas

des primitives de dessin : drawXXX (Bitmap, Circle, Line, Oval, Picture,Rectangle, Text, . . . )

des méthodes de transformation : rotation, translation, clipping (restreint ledessin à une zone + opérateur de combinaison de zones)

La classe Paint

Les primitives de dessin nécessitent des informations de style et de couleurdisponible via la classe Paint.

E. Ramat (ULCO) Android 7 septembre 2013 156 / 207

Page 157: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

GraphiqueReprésentation de sa vue

Tracé d'une ligne avec une couleur et une épaisseur

Tracé d'une ligne en gris foncé et de largeur 2 pixels

Paint paint = new Paint ();

paint.setColor(Color.DKGRAY );paint.setStrokeWidth (2);canvas.drawLine(pt1.x, pt1.y, pt2.x, pt2.y, paint );

pt1 et p2 sont des instances de la classe Point

la classe Color possède un ensemble de couleurs prédé�nies

Mesure

Les mesures sont exprimées en pixel.

E. Ramat (ULCO) Android 7 septembre 2013 157 / 207

Page 158: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

GraphiqueReprésentation de sa vue

Tracé d'un cercle en pointillé

Tracé d'un cercle vert en pointillé

Paint paint = new Paint ();float[] phase = new float[] { 2.f, 2.f };DashPathEffect effect = new DashPathEffect(phase , 0.f);paint.setPathEffect(effect );paint.setColor(Color.GREEN );paint.setStyle(Paint.Style.STROKE );

Rect r = new Rect(pt1.x - radius , pt1.y - radius ,pt1.x + radius , pt1.y + radius );

canvas.drawArc(new RectF(r), 0, 360, false , paint );

la classe DashPathE�ect permet de dé�nir des e�ets d'hachure

Paint.Style.STROKE est nécessaire pour que le cercle ne soit pas rempli(sinon, il faut utiliser le style Paint.Style.FILL)

E. Ramat (ULCO) Android 7 septembre 2013 158 / 207

Page 159: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

GraphiqueReprésentation de sa vue

drawArc et le 4ème paramètre

Si le 4ème paramètre est à true, que l'on est en mode remplissage et que l'on netrace pas tout le cercle alors le remplissage passe par le centre du cercle danslequel s'incrit l'arc

drawOval

Il est possible de dessiner un cercle à l'aide des méthodes drawOval(RectF,Paint) ou drawCircle(float, float, float, Paint)

E. Ramat (ULCO) Android 7 septembre 2013 159 / 207

Page 160: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

GraphiqueReprésentation de sa vue

Tracé d'un polygone rempli

Tracé d'un triangle rouge rempli

Paint paint = new Paint ();Path path = new Path ();paint.setColor(Color.RED);paint.setStyle(Style.FILL);path.moveTo(pt1.x, pt1.y);path.lineTo(pt2.x, pt2.y);path.lineTo(pt3.x, pt3.y);path.lineTo(pt1.x, pt1.y);canvas.drawPath(path , paint );

le triangle est dé�ni sous forme d'un chemin

les 3 objets de type Point dé�nissent les 3 sommets du triangle

E. Ramat (ULCO) Android 7 septembre 2013 160 / 207

Page 161: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

GraphiqueReprésentation de sa vue

A�chage d'un texte

Paint paint = new Paint ();

paint.setTextSize (16);paint.setTypeface(Typeface.DEFAULT_BOLD );canvas.drawText(txt , pt.x, pt.y, paint );

la taille de la police et le style sont �xées

le point pt dé�nit le coin inférieur gauche du texte

Texte sur un chemin

Il est possible d'écrire le texte en suivant un chemin avec la méthodedrawTextOnPath.

E. Ramat (ULCO) Android 7 septembre 2013 161 / 207

Page 162: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

GraphiqueInteraction avec sa vue

TouchEvent

Comme pour tous les autres événements, l'événement Touch, peut être traité via :

l'implémentation de l'interface onTouchListener par la vue elle-même ;

la dé�nition d'une inner classe implémentant l'interface onTouchListener

Déclaration du listener

public class MyView extends View implements OnTouchListener {

public MyView(Context contextb) {setOnTouchListener(this);

}

public boolean onTouch(View v, MotionEvent event) {}

}

E. Ramat (ULCO) Android 7 septembre 2013 162 / 207

Page 163: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

GraphiqueInteraction avec sa vue

TouchEvent

La méthode getAction de la classe MotionEvent permet de connaître le type deTouch

ACTION_DOWN : l'utilisateur vient de poser son doigt

ACTION_UP : l'utilisateur vient de relever son doigt

ACTION_MOVE : l'utilisateur déplace son doigt sans le relever

Test et récupération des coordonnées

if (action == MotionEvent.ACTION_UP) {int xTouch = (int) event.getX ();int yTouch = (int) event.getY ();

}

Autres types

Il existe des types pour le survol des vues : ACTION_HOVER_ENTER,ACTION_HOVER_MOVE et ACTION_HOVER_EXIT

E. Ramat (ULCO) Android 7 septembre 2013 163 / 207

Page 164: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Processus et threads

E. Ramat (ULCO) Android 7 septembre 2013 164 / 207

Page 165: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Processus et threadsIntroduction

Constat

une application possède un thread dit principal où tout s'exécute

le traitement de la �le d'attente des messages (clic, demande de mise à jourde l'interface, . . . ) sont traités dans le thread principal

ATTENTION ! Ne pas réaliser de traitements longs dans ce thread !

sinon l'application va être bloqué ou le système va a�cher �application notresponding� et va tuer votre application

Solution

Les threads

Quand utiliser les threads ?

les accès Internet (la méthode execute du DefaultHttpClient) estbloquante)

les opérations sur les �chiers (l'écriture sur les mémoires �ashs est très lente)

tous les calculs complexes

E. Ramat (ULCO) Android 7 septembre 2013 165 / 207

Page 166: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Processus et threadsIntroduction

Les threads d'Android

utilisent la classe Thread du Java classique ainsi que les structures decontrôle (le package java.util.concurrent avec la classe Semaphore, parexemple, pour la gestion des accès conccurrentiels)

une limitation : on ne peut pas modi�er l'interface utilisateur dans un threadautre que le principal

Android fournit des outils pour ce cas

Di�érentes classes

Thread et Runnable : les classes de base de Java

Handler : une classe de communication entre les threads et le thread principal

AsyncTask : une classe qui permet l'exécution en tâche de fond et l'accèsl'interface graphique

E. Ramat (ULCO) Android 7 septembre 2013 166 / 207

Page 167: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Processus et threadsIntroduction

Indiquer la progression

En cas de traitement très long, il est important d'indiquer le niveau de progressiondu traitment → utiliser ProgressBar ou ProgressDialogCes deux classes sont thread safe ce qui signi�e que l'on peut les modi�er à partirde n'importe quel thread.

E. Ramat (ULCO) Android 7 septembre 2013 167 / 207

Page 168: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Processus et threadsThread et Runnable

Dé�nition

un Runnable est une interface représentant une commande exécutable via laméthode run

un Runnable est en général exécuté dans un Thread

un Thread est unité d'exécution avec sa propre pile, des propres variableslocales

Exemple minimal

new Thread(new Runnable () {

@Overridepublic void run() {}

}). start ();

E. Ramat (ULCO) Android 7 septembre 2013 168 / 207

Page 169: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Processus et threadsThread et Runnable

Questions

Comment accéder aux informations contenus dans le Runnable et commentdepuis le Runnable accèder aux informations de l'application ?

Solutions

les inner classes

les accès concurrentiels à l'aide de la librairie java.util.concurrent

les handlers

Les inner classes

on peut dé�nir le Runnable au sein même d'une classe Activity ce quidonne accès aux données (attributs) de l'activité

attention, s'il y a plusieurs threads au sein de la même activité, il fautprotéger les accès simultanés

rappel : on ne peut pas modi�er l'interface graphique (même si l'on a accèsaux objets de l'interface)

E. Ramat (ULCO) Android 7 septembre 2013 169 / 207

Page 170: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Processus et threadsLes handlers

Dé�nition

un handler est un thread muni d'une �le d'attente de messages

un seul handler est possible par activité

la communication avec l'handler est réalisée par envoi de messages

Envoi de messages

Au sein de la méthode run d'un Runnable, on invoque la méthode sendMessagede l'objet handler dé�nit dans l'activité

handler.sendMessage(hanlder.obtainMessage ());

La méthode obtainMessage permet de construire un message vide au sein dupool de message de l'handler (ce qui est plus e�cace)

E. Ramat (ULCO) Android 7 septembre 2013 170 / 207

Page 171: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Processus et threadsLes handlers

Passage de paramètres

Il faut :

construire un bundle, structure de transport de données, et une messagedepuis le pool des messages de l'handler

ajouter les données au bundle

rattacher le bundle au message

envoyer le message à l'handler

Exemple

Bundle myBundle = new Bundle ();Message myMessage = handler.obtainMessage ();myBundle.putInt("myParameter", myValue );myMessage.setData(myBundle );handler.sendMessage(myMessage );

E. Ramat (ULCO) Android 7 septembre 2013 171 / 207

Page 172: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Processus et threadsLes handlers

Réception de messages

La réception des messages est réalisée à l'aide de la message handleMessage.

Handler handler = new Handler () {@Overridepublic void handleMessage(Message msg) {}

}

E. Ramat (ULCO) Android 7 septembre 2013 172 / 207

Page 173: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Service

E. Ramat (ULCO) Android 7 septembre 2013 173 / 207

Page 174: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

ServiceIntroduction

Dé�nitions

un service est un processus continu qui s'exécute sans être associé à uneactivité

un service est créé :I soit par un appel direct à l'API d'Android (startService) - connexion non

persistanteI soit en tentant une connexion par IPC (InterProcess Communication)

(bindService) a�n d'accèder à une API locale - communicationbidirectionnelle

un service est rattaché à une application donc un service n'est pas unprocessus séparé

un service n'est pas non plus un thread exécuté dans le thread principal d'uneapplication

E. Ramat (ULCO) Android 7 septembre 2013 174 / 207

Page 175: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

ServiceIntroduction

Pourquoi les services ?

certaines opérations ne nécessitent pas d'interface graphique (un longtéléchargement, par exemple)

les opérations de maintenance périodique du système

la mis à disposition d'une API locale pour des API distantes (par exemple, unservice Web)

Le cycle de vie

comme pour les activités, un service débute par la méthode onCreate

selon le mode de �lancement�, la méthode onStartCommand ou onBind estinvoquée

le service est alors actif

dans le cas d'un �lancement� de type bind, la méthode onUnbind est appeléelorsqu'un client se �déconnecte� au service

la méthode onDestroy marque la �n du service

E. Ramat (ULCO) Android 7 septembre 2013 175 / 207

Page 176: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

ServiceCycle de vie

E. Ramat (ULCO) Android 7 septembre 2013 176 / 207

Page 177: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

ServiceDéclaration des services

Déclaration

Hormis la déclaration de la classe Java représentant le service, le service doit êtredéclaré dans le �chier Manifest de l'application

<manifest ... ><application ... >

...<service android:name="MyService" />...

</application ... >...

</manifest >

E. Ramat (ULCO) Android 7 septembre 2013 177 / 207

Page 178: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

ServiceLe mode �startService�

Lancement d'une commande

comme pour les activités, l'appel à startService passe par la constructiond'une intention

l'intention permet de désigner le service à invoquer

les paramètres d'appel sont aussi rattachés à l'intention sous forme d'extras

Appel à un service

Intent intent = new Intent(this , MyService.class);intent.putExtra("myParamter", 12);startService(intent );

Attention

l'appel à startService est asynchrone : le client n'est donc pas bloqué

attention, l'appel au service provoque l'exécution de la méthodeonStartCommand et cette dernière ne doit pas être trop longue (sinonutilisation des threads)

E. Ramat (ULCO) Android 7 septembre 2013 178 / 207

Page 179: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

ServiceLe mode �startService�

Retour de onStartCommand

La méthode onStartCommand retourne un indicateur :

START_STICKY : le service n'est pas arrêté après l'appel via startService

et en cas d'arrêt, il devrait être replacé dans l'état démarré (pas besoin derefaire startService)

START_REDELIVER_INTENT : le service devrait être redémarré par unappel à startService avec la même intention s'il est arrêté par le systèmeet non par stopService

START_NOT_STICKY :le service devrait être recréér explicitement par unappel à startService

stop

La méthode stopService (ou stopSelf lorsque l'on est dans le service) arrête etdétruit le service, même s'il y a eu plusieurs appels à startService.

E. Ramat (ULCO) Android 7 septembre 2013 179 / 207

Page 180: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

ServiceLe mode �bindService�

Dé�nitions

une activité qui se lie (bind) à un service peut alors accèder à l'API publiqueexposée par le binder du service

un binder est une sous-classe de Binder et dé�nit les méthodes fournies parle service

la méthode onBind du service renvoie une instance de la sous-classe deBinder

la liaison du côté client est gérée par un objet ServiceConnection

à la �n, le client doit faire appel à unbindService pour indiquer qu'il n'aplus besoin du service

E. Ramat (ULCO) Android 7 septembre 2013 180 / 207

Page 181: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

ServiceLe mode �bindService�

Appel à un service

protected void onStart () {super.onStart ();Intent intent = new Intent(this , LocalService.class);bindService(intent , mConnection , Context.BIND_AUTO_CREATE );

}

protected void onStop () {super.onStop ();if (mBound) {

unbindService(mConnection );mBound = false;

}}

Explications

lors du démarrage de l'activité, utilisatrice du service, il y a création del'intention pour le lancement du service

le service est ensuite lancée via la méthode bindService et la connexion estgéré par l'objet mConnection

E. Ramat (ULCO) Android 7 septembre 2013 181 / 207

Page 182: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

ServiceLe mode �bindService�

L'objet de connexion au service

private ServiceConnection mConnection = new ServiceConnection () {

public void onServiceConnected(ComponentName className , IBinder service) {LocalBinder binder = (LocalBinder) service;mService = binder.getService ();mBound = true;

}

public void onServiceDisconnected(ComponentName arg0) {mBound = false;

}};

Explications

l'objet mConnection est une instance d'une classe anonyme de typeServiceConnection

lors de la connexion au service, la méthode onServiceConnected récupèreune référence sur le service via le binder a�n de pouvoir invoquer lesméthodes o�ertes par le service

E. Ramat (ULCO) Android 7 septembre 2013 182 / 207

Page 183: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

ServiceLe mode �bindService�

Appel aux méthodes du service

public void onButtonClick(View v) {if (mBound) {

int num = mService.getRandomNumber ();Toast.makeText(this , "number: " + num , Toast.LENGTH_SHORT ).show ();

}}

Explications

l'objet mService permet d'invoquer les méthodes disponibles

mBound permet de véri�er que l'on est bien lié au service

E. Ramat (ULCO) Android 7 septembre 2013 183 / 207

Page 184: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

ServiceLe mode �bindService�

Le service

public class LocalService extends Service {private final IBinder mBinder = new LocalBinder ();private final Random mGenerator = new Random ();

public class LocalBinder extends Binder {LocalService getService (){ return LocalService.this; }

}

public IBinder onBind(Intent intent){ return mBinder; }

public int getRandomNumber (){ return mGenerator.nextInt (100); }

}

Explications

le binder dispose seulement d'une méthode qui donne accès au service

seule la méthode onBind est développée donc le service ne sera accessiblequ'en mode bind

E. Ramat (ULCO) Android 7 septembre 2013 184 / 207

Page 185: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Service�Remote service�

Dé�nition

par défaut, un service s'exécute dans le processus de l'application qui l'a lancé

par conséquent, le service est stoppé dès que l'application est arrêtée

un service peut être embarqué dans un processus à part

<manifest ... ><application ... >

...<service android:name="MyService"

android:process=":remote"/>...

</application ... >...

</manifest >

�Remote activity�

Une activité peut être aussi �remote�, l'activité ne s'exécute plus alors dans leprocessus de l'application.

E. Ramat (ULCO) Android 7 septembre 2013 185 / 207

Page 186: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

ServiceCommunication à partir d'un �Remote service�

Communication

communiquer entre un client et un �Remote service� nécessite unearchitecture particulière

TODO

E. Ramat (ULCO) Android 7 septembre 2013 186 / 207

Page 187: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Communication

E. Ramat (ULCO) Android 7 septembre 2013 187 / 207

Page 188: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

CommunicationIntroduction

Besoin

Se connecter à des services externes (web service, base de données, . . . )

Ce qui faut pour communiquer

un support de communication (wi�, 3G, bluetooth, . . . )

des autorisations de la part d'Android

une API de communication (socket, org.apache.http, . . . ) lié à un protocoled'échange (HTTP + XML, par exemple)

E. Ramat (ULCO) Android 7 septembre 2013 188 / 207

Page 189: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

CommunicationSupports de communication

Les moyens

Plusieurs façons d'accéder à un réseau :

en Wi� : 54 Mbit/s max (27 Mbit/s en moyenne) ou 11 Mbit/s max (6Mbit/s en moyenne)

à l'aide d'un adaptateur USB - Ethernet (attention, supporté par peu determinal !)

Adaptateur USB - Ethernet

E. Ramat (ULCO) Android 7 septembre 2013 189 / 207

Page 190: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

CommunicationSupports de communication

Les moyens - suite

en mobile :I GSM (2G) (Global System for Mobile Communication) : uniquement la

voixI GPRS (2.5G) (Global Packet Radio Service) : 171,2kbit/s max (50 kbit/s

en moyenne)I Edge (2.75G) (Enhanced Data Rates for GSM Evolution) : 384 kbit/s max

(64 kbit/s en moyenne)I UMTS (3G) (Universal Mobile Telecommunications System) : 2 Mbit/s

max (384 kbit/s en moyenne)

E. Ramat (ULCO) Android 7 septembre 2013 190 / 207

Page 191: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

CommunicationSupports de communication

Les moyens - suite

en mobile :I HSDPA (3.5G) (High Speed Downlink Packet Access) : 14,4 Mbit/s max

en �ux descendant et 384 kbit/s max en �ux montant (UMTS)I HSPA+ ou 3G++ ou H+ (3.75G) (High Speed Uplink Packet Access) :

84,4 Mbit/s en �ux descendant et 23 Mbit/s en �ux montantI LTE (3.9G) (Long Term Evolution) : 326,4 Mbit/s max en �ux descendant

et 86,4 Mbit/s en �ux montantI LTE+ (4G) (LTE-Advanced) : 1 Gbit/s à l'arrêt et 100 Mbit/s en mouvement

en �ux descendant

La réalité

En pratique, en wi� < 10 Mbit/s et en mobile entre 64 kbit/s et 384 kbit/s.

E. Ramat (ULCO) Android 7 septembre 2013 191 / 207

Page 192: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

CommunicationLes autorisations et véri�cations

Préalable

L'application Android désirant un accès à Internet doit :

possèder l'autorisation

véri�er si la connexion est active

Autorisation

Dans le �chier AndroidManifest.xml, il faut ajouter :

<uses -permission android:name="android.permission.INTERNET"/><uses -permission android:name="android.permission.ACCESS_NETWORK_STATE" />

android.permission.INTERNET : autorise à ouvrir des sockets réseau

android.permission.ACCESS_NETWORK_STATE : autorise d'accéder àl'état du réseau

E. Ramat (ULCO) Android 7 septembre 2013 192 / 207

Page 193: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

CommunicationLes autorisations et véri�cations

Véri�cations

Avant de tenter un accès au réseau, il est indispensablde de véri�er que l'accès estpossible

La classe ConnectivityManager

La classe ConnectivityManager est un service qui vous permet :

de monitorer l'état de la connexion,

de connaître le type (bluethooth, mobile, wi�, wimax, . . . )

private boolean isNetworkAvailable () {ConnectivityManager connectivityManager =

(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE );NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo ();NetworkInfo.State networkState = activeNetworkInfo.getState ();return networkState.compareTo(State.CONNECTED) == 0;

}

E. Ramat (ULCO) Android 7 septembre 2013 193 / 207

Page 194: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

CommunicationLes autorisations et véri�cations

Etat de la connexion

CONNECTING : en cours de connexion

CONNECTED : connecté

DISCONNECTING : en cours de deconnexion

DISCONNECTED : déconnecté

Type de la connexion

Via la méthode getType de la classe NetworkInfo, on peut connaître comment leterminal est connecté à Internet :

TYPE_BLUETOOTH

TYPE_ETHERNET

TYPE_MOBILE

TYPE_WIFI

TYPE_WIMAX

E. Ramat (ULCO) Android 7 septembre 2013 194 / 207

Page 195: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

CommunicationAPI de communication

API disponibles

au coeur d'Android, les sockets : protocole de très bas niveau

la bibliothèque HttpClient d'Apache

ou des bibliothèques tiers

DefaultHttpClient

la classe DefaultHttpClient est une sous-classe de HttpClient

elle propose un ensemble de classes pour la gestion d'une transaction HTTP :I GET : méthode de lecture ; l'état de la ressource (identi�ée par une URI -

Uniform Resource Identifier) n'est pas modi�éI POST : envoi de données dans l'objectif de créer d'une nouvelle ressource ou

modi�cation d'une ressource rattachée à l'URI d'appelI PUT : modi�cation ou création d'une ressourceI DELETE : suppression d'une ressource

Seule la méthode POST n'a pas le même résultat si on envoie plusieurs fois lamême requête.

E. Ramat (ULCO) Android 7 septembre 2013 195 / 207

Page 196: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

CommunicationAPI de communication

Méthodes et version de HTTP

il existe d'autres méthodes HTTP (HEAD, TRACE, OPTIONS etCONNECT).

seules les méthodes GET, POST et HEAD sont dé�nies dans la normeHTTP/1.0

Etapes

création d'une instance de la classe DefaultHttpClient qui implémentel'interface HttpClient

création d'une instance d'un objet représentant la requête (HttpGet,HttpPost, . . . )

réglage des propriétés de cette requête (par exemple, les couples clé, valeurdes éléments passés lors d'une requête Post)

exécution de la requête grâce à l'instance de DefaultHttpClient

analyse et traitement de la réponse

E. Ramat (ULCO) Android 7 septembre 2013 196 / 207

Page 197: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

CommunicationAPI de communication

Méthode GET

le constructeur de la classe HttpGet admet l'URI en paramètre

les paramètres de la requête peuvent être :I soit passés directement dans l'URI (comme dans l'exemple)I soit a�ectés à la requête via les classes BasicNameValuePair et

UrlEncodedFormEntity

DefaultHttpClient client = new DefaultHttpClient ();HttpGet request = new HttpGet("http ://127.0.0.1/ index.php?param1 =1& param2 =2");HttpResponse response = client.execute(request );

E. Ramat (ULCO) Android 7 septembre 2013 197 / 207

Page 198: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

CommunicationAPI de communication

Méthode POST

La construction d'une requête de type POST suivit le même modèle que laméthode GET.

DefaultHttpClient client = new DefaultHttpClient ();HttpPost request = new HttpPost("http ://127.0.0.1/ index.php");List <NameValuePair > nameValuePairs = new ArrayList <NameValuePair >();

nameValuePairs.add(new BasicNameValuePair("param1", "1"));nameValuePairs.add(new BasicNameValuePair("param2", 2));request.setEntity(new UrlEncodedFormEntity(nameValuePairs ));

HttpResponse response = client.execute(request );

Attention aux exceptions

Des exceptions peuvent être levées lors de l'encodage !

Les URI

Vous pouvez voir la forme �nale de l'URI grâce à la méthode getURI de HttpGetou HttpPost.E. Ramat (ULCO) Android 7 septembre 2013 198 / 207

Page 199: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

CommunicationAPI de communication

Les cookies

la classe DefaultHttpClient gère nativement les cookies.

il est important de disposer du mécanisme des cookies a�n de gérerl'identi�ant de session sur le serveur.

Sessions en PHP

session_start ();

$_SESSION['login'] = $login;

session_start active le mécanisme de session sur le serveur

la variable $_SESSION permet de stocker des informations sur le serveurliées à une session utilisateur

la session est identi�ée par un id stocké dans les cookies du client

[1]: 127.0.0.1 FALSE / FALSE 0 PHPSESSID g5lj83115di2err25mv2af9kr5

E. Ramat (ULCO) Android 7 septembre 2013 199 / 207

Page 200: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

CommunicationAnalyse de la réponse

Les formats de réponse

tous les formats sont possibles surtout si on utilise les sockets

dans un contexte HTTP, on peut utiliser :I le format HTML avec le composant WebKit d'Android par exempleI un format XMLI le format JSON (JavaScript Object Notation - RFC 4627) : notation

textuelle basée sur des ensembles de paires nom / valeur et des listesordonnées de valeurs.

I . . .

Données JSON

{"firstName": "John","lastName": "Smith","age": 25,"address": {

"streetAddress": "21 2nd Street","city": "New York","postalCode": "10021"

}}

E. Ramat (ULCO) Android 7 septembre 2013 200 / 207

Page 201: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

CommunicationAnalyse de la réponse XML

Parsing de réponse XML

Deux stratégies de parsing :

DOM (Document Object Model) : une représentation mémoire dudocument est contruite et on �navigue� dedans

SAX (Simple API for XML) : analyse séquentielle du document etactivation de fonctions d'analyse en fonction des éléments rencontrés

<?xml version="1.0" encoding="UTF -8" ?><response id="1" />

Analyse DOM

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance ();DocumentBuilder builder = factory.newDocumentBuilder ();Document doc = builder.parse(response.getEntity (). getContent ());Element root = doc.getDocumentElement ();

if (root.getNodeName (). compareTo("response") == 0) {id = Integer.parseInt(root.getAttributes (). getNamedItem("id"). getNodeValue ());

}E. Ramat (ULCO) Android 7 septembre 2013 201 / 207

Page 202: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Noti�cation

E. Ramat (ULCO) Android 7 septembre 2013 202 / 207

Page 203: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Noti�cationDé�nitions

Dé�nition

lors de l'arrivée d'un événement (arrivée d'un mail, réception d'un SMS,batterie faible, . . .), Android propose un framework de gestion d'alerte : lesnoti�cations

les noti�cations sont très utilisées par les services éxecutées en arrière-plan

le gestion des noti�cations passe par la classe NotificationManager

plusieurs types de noti�cation possibles : un message, une led clignotante oules vibrations

NotificationManager

Trois méthodes :

notify : pour l'envoi d'une noti�cation

cancel et cancelAll : pour l'annulation d'une noti�cation

E. Ramat (ULCO) Android 7 septembre 2013 203 / 207

Page 204: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Noti�cationExemples

Envoi d'un message

NotificationManager mgr =(NotificationManager)getSystemService(NOTIFICATION_SERVICE );

Notification note = new Notification(R.drawable.notify_icon ,"my message",System.currentTimeMillis ());

mgr.notify(MY_NOTIFY_ID , note);

Explications

la création d'une noti�cation passe par la création d'une instance de la classeNotification

il faut associer une image (une icône) à la noti�cation (premier paramètre duconstructeur de Notification)

l'icône doit posséder une résolution propotionnelle à l'écran, il faut dé�nir 3versions (12x12, 16x16 et 24x24)

le message spéci�é sera a�ché dans la barre d'état

le troisième paramètre indique simplement la date de création de lanoti�cationE. Ramat (ULCO) Android 7 septembre 2013 204 / 207

Page 205: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Noti�cationExemples

Noti�cation et activité

le méthode setLastestEventInfo précise quen l'on a�che un titre et unmessage lorsque l'on clique sur la noti�cation

de plus, on lance le PendingIntent lorsque l'on clique sur le message

Envoi d'un message

PendingIntent i = PendingIntent.getActivity(this , 0,new Intent(this , NotifyMessage.class), 0);

note.setLastestEventInfo(this , "Titre de la notification","Message de notification", i);

E. Ramat (ULCO) Android 7 septembre 2013 205 / 207

Page 206: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Noti�cationExemples

Noti�cation et vibration

l'objet de type Noti�cation possède un attribut �ags pour spéci�er le type denoti�cation : message, vibration et/ou led

note.vibrate = new long[] { 500, 200, 200, 500 };note.flags |= Notification.FLAG_AUTO_CANCEL;

vibrate dé�nit le �motif� de vibration et le �ag FLAG_AUTO_CANCEL permetd'indiquer sur la noti�cation est annulée automatiquement quand l'utilisateurclique dessus

Noti�cation et permission

Attention ! Pour les vibrations, il faut dé�nir la permission.

E. Ramat (ULCO) Android 7 septembre 2013 206 / 207

Page 207: Université du Littoral - Côte d'Opaleramat/downloads/android.pdf · Université du Littoral - Côte d'Opale 7 septembre 2013 ... Qu'est ce qu'un smartphone ? ... (pas d'espace de

Copyright

Auteur

Éric Ramat [email protected] Daquin [email protected]

Licence

Copyright (C) 2011-2013 - LISIC - ULCO

Permission is granted to copy, distribute and/or modify this document under theterms of the GNU Free Documentation License, Version 1.2 or any later versionpublished by the Free Software Foundation; with no Invariant Sections, noFront-Cover Texts, and no Back-Cover Texts. A copy of the license is included inthe section entitled "GNU Free Documentation License".

E. Ramat (ULCO) Android 7 septembre 2013 207 / 207