Tuto développement Android : Intent, passer d'une Activity à une autre

source : magazine Programmez. (n° 113 – nov 2008)

Bonjour voici un tutoriel qui montre comment parcourir ses contacts, afficher une carte Google Maps, afficher des points sur la carte…

Cette application est pour la version 1.5 mais elle donne de bonnes idées.

L’application détaillée dans cet article permet
de localiser un ensemble de contacts extraits
du carnet d’adresses

Elle met en oeuvre les mécanismes introduits par Android pour réaliser une application mobile : gestion des écrans, des données et accès aux fonctions du téléphone.
Elle utilise aussi une des possibilités phare de la plate-forme : le contrôle d’une carte  » Google Maps  » depuis Java.Les applications Android sont composées d’Activity, de BroadcastReceiver, de Service et de ContentProvider :

• Activity : l’activité gère une interaction entre l’utilisateur et le téléphone, en pratique c’est un écran.
• Service : le service permet d’implémenter des fonctionnalités s’exécutant en arrière-plan sur une longue durée de temps.
• BroadcastReceiver : le récepteur de demandes de traitement permet d’effectuer des traitements sans que l’application soit nécessairement active.
• ContentProvider : le fournisseur de contenu permet de fournir l’accès à une ressource qui est partagée entre plusieurs applications. La ressource peut être une base SQLite, un ensemble de fichiers, des données sur le réseau …Ces différents modules s’activent selon divers modèles :
• Un modèle événementiel basé sur des Intent qui sont des objets représentant une demande de traitement, c’est ainsi que les Activity, les Service et les BroadcastReceiver sont activés.
• Un modèle procédural semblable à un accès à la base de données pour les ContentProvider.
• Un modèle de RPC pour les fonctions exposées à l’intérieur des Service.

Les différents composants de l’application: activités, services, receveurs de demande de traitement et fournisseurs de contenu sont déclarés dans un fichier: le manifeste. Le manifeste précise également les droits de l’application et les interactions de ses composants avec les événements (Intent) systèmes ou applicatifs. Pour construire une application mobile, la première étape est de définir les écrans que l’on souhaite mettre en oeuvre. Dans le cas de l’application de localisation, deux écrans sont utilisés :
• Le premier écran présente la carte du monde avec les contacts sélectionnés indiqués par des icônes, un menu pour sélectionner les contacts et un bouton pour demander leur localisation.
• Le second écran présente une liste de contacts sélectionnables et deux boutons pour valider ou non la sélection.
Chacun de ces écrans est implémenté par une Activity. Une activité suit un cycle de vie géré par sept événements, les
méthodes suivantes sont à surcharger pour gérer les transitions d’état de l’activité :
• onCreate : l’activité est créée.
• onStart : l’activité devient ou redevient visible.
• onRestart : l’activité reprend après un arrêt.
• onResume : l’activité prend/reprend le contrôle des interactions avec l’utilisateur.
• onPause : l’activité passe la main à une autre dans les interactions avec l’utilisateur.
• onStop : l’activité n’est plus visible.
• onDestroy : l’activité s’arrête.

L’écran associé à une activité est décrit dans un fichier XML : le layout. Le layout définit la disposition des vues (View) qui sont les briques de base pour la construction de l’interface utilisateur: bouton, barre de progression… Pour la création d’une liste avec deux boutons: ok et cancel, le layout suivant est décrit :

<LinearLayout xmlns:android=

Une gestion de menu peut être associée à l’activité, dans ce cas les méthodes onCreateOptionsMenu et onOptionsItemSelected de l’activité doivent être surchargées.

La gestion des frappes clavier est également obtenue en surchargeant une méthode: onKeyDown :

L’affichage d’une carte avec Google Maps

Dans le cas de notre application, une activité spécifique doit être utilisée: la MapActivity qui gère à la fois le cycle de vie de l’activité mais aussi les interactions avec Google Maps. La MapActivity utilise une vue particulière: la MapView. Le layout de la MapActivity doit comporter un objet de type MapView. Le layout suivant positionne un bouton  » localise  » en haut de l’écran, la partie basse étant réservée à la carte :

Ce layout est utilisé dans le onCreate de l’Activity. setContentView(R.layout.main) permet de positionner le layout, R est
l’objet créé par le SDK depuis la description textuelle du layout. Find-ViewById permet de récupérer les objets du layout par leur identifiant.
On utilise le bouton récupéré pour lui positionner un handler déclenchant sur un clic la récupération des localisations. La MapView possède un nombre important de méthodes permettant de contrôler la carte. Elle permet d’activer le contrôleur de zoom, de positionner le niveau de zoom et la position du point central sur l’écran :

La fonctionnalité essentielle pour pouvoir positionner des points sur la carte est fournie par les Overlay, Overlay est un calque sur lequel on peut dessiner et qui se superpose à la carte. L’affichage de la localisation des contacts consiste donc, à ajouter un Overlay à la vue MapView :

C’est ensuite la classe PositionPoints qui positionne les différents contacts. Pour cela, la méthode onDraw d’Overlay est surchargée :

onDraw donne accès à l’objet Canvas qui correspond à l’affichage de la vue, Canvas possède toutes les méthodes  nécessaires au dessin. La classe Projection fournit la méthode permettant de passer des coordonnées GPS aux coordonnées pixels :

La gestion du positionnement sur la carte est ainsi réalisée avec  deux classes et moins de 100 lignes de code !

L’accès au répertoire du téléphone

Sur Android, les données peuvent être gérées soit localement par l’application dans une base SQLite ou dans un fichier plat, soit elles peuvent être partagées dans un ContentProvider qui, lui même, peut s’appuyer sur une base locale.
Le carnet d’adresses est une application  » système  » qui utilise le mécanisme de ContentProvider pour mettre à disposition ses données aux autres applications.
Le ContentProvider du carnet d’adresses est accédé par une URI : android.provider.Contacts.People.CONTENT_URI
Les données de contacts sont récupérées par une requête query au ContentProvider et parcourues par un Cursor, semblable au curseur d’accès aux données d’une base :

L’affichage des données récupérées est facilité par le mécanisme d’Adapter, l’Adapter permet de faire le lien entre une vue et des données. Un adapteur (CursorAdapter) existe, par exemple, pour faire le lien entre une vue en liste (ListView) et les données associées à un curseur (Cursor). Dans le cas de la sélection des contacts, la nécessité d’ajouter une case à cocher devant le nom des contacts nécessite de spécialiser un Adapter, basé dans ce cas sur l’ArrayAdapter :  L’ArrayAdapter fournit les données de la liste avec les valeurs ad hoc grâce à la méthode getView qui retourne
la Checkbox et son état en cours.

La mise en oeuvre des différentes API montre la facilité de développer
avec Android des applications complexes alliant des fonctionnalités
mobiles: SMS, Localisation, carnet d’adresses et des
fonctionnalités internet: service de cartographie, instant messaging…

Lire aussi

Tuto développement Android : Intent, passer d'une Activity à une autre

Tuto développement Android : Intent, passer d'une Activity à une autre

Depuis le début des Tuto de Dév Android  nous faisons des mini-applications qui n’utilisent qu’un seul écran, qu’une seule page, en résumé qu’une seule Activity. Pour débuter c'est très bien mais pour faire une véritable application, il serait utile de savoir ...

Youlu adress book, un dialer, un carnet d'adresse et même une application sms

Youlu adress book, un dialer, un carnet d'adresse et même une application sms

Dans la lignée des applications testées et approuvées par moi, je vous présente aujourd'hui une application nommée "Youlu adress book". Youlu adress book est une application de carnet d'adresse d'origine chinoise, disponible en Anglais mais pas en Français pour le ...

Comment bien développer son appli sous Android

Comment bien développer son appli sous Android

Sur son blog, Google propose de passer en revue les "best practice" pour bien développer son appli sous Android.Pour ce faire, Google utilise l'application Twitter comme exemple.Je dois avouer, pour avoir téléchargé plusieurs applis Twitter-like, que celle-ci, l'officielle donc, est ...

Comment bien développer son appli sous Android

Comment bien développer son appli sous Android

Sur son blog, Google propose de passer en revue les "best practice" pour bien développer son appli sous Android.Pour ce faire, Google utilise l'application Twitter comme exemple.Je dois avouer, pour avoir téléchargé plusieurs applis Twitter-like, que celle-ci, l'officielle donc, est ...

Tuto développement Android : Intent, passer d'une Activity à une autre

Tuto développement Android : Intent, passer d'une Activity à une autre

Depuis le début des Tuto de Dév Android  nous faisons des mini-applications qui n’utilisent qu’un seul écran, qu’une seule page, en résumé qu’une seule Activity. Pour débuter c'est très bien mais pour faire une véritable application, il serait utile de savoir ...

Depuis le début des Tuto de Dév Android  nous faisons des mini-applications qui n’utilisent qu’un seul écran, qu’une seule page, en résumé qu’une seule Activity. Pour débuter c'est très bien mais pour faire une véritable application, il serait utile de savoir ...

Youlu adress book, un dialer, un carnet d'adresse et même une application sms

Youlu adress book, un dialer, un carnet d'adresse et même une application sms

Dans la lignée des applications testées et approuvées par moi, je vous présente aujourd'hui une application nommée "Youlu adress book". Youlu adress book est une application de carnet d'adresse d'origine chinoise, disponible en Anglais mais pas en Français pour le ...

Dans la lignée des applications testées et approuvées par moi, je vous présente aujourd'hui une application nommée "Youlu adress book". Youlu adress book est une application de carnet d'adresse d'origine chinoise, disponible en Anglais mais pas en Français pour le ...

Comment bien développer son appli sous Android

Comment bien développer son appli sous Android

Sur son blog, Google propose de passer en revue les "best practice" pour bien développer son appli sous Android.Pour ce faire, Google utilise l'application Twitter comme exemple.Je dois avouer, pour avoir téléchargé plusieurs applis Twitter-like, que celle-ci, l'officielle donc, est ...

Sur son blog, Google propose de passer en revue les "best practice" pour bien développer son appli sous Android.Pour ce faire, Google utilise l'application Twitter comme exemple.Je dois avouer, pour avoir téléchargé plusieurs applis Twitter-like, que celle-ci, l'officielle donc, est ...

Comment bien développer son appli sous Android

Comment bien développer son appli sous Android

Sur son blog, Google propose de passer en revue les "best practice" pour bien développer son appli sous Android.Pour ce faire, Google utilise l'application Twitter comme exemple.Je dois avouer, pour avoir téléchargé plusieurs applis Twitter-like, que celle-ci, l'officielle donc, est ...

Sur son blog, Google propose de passer en revue les "best practice" pour bien développer son appli sous Android.Pour ce faire, Google utilise l'application Twitter comme exemple.Je dois avouer, pour avoir téléchargé plusieurs applis Twitter-like, que celle-ci, l'officielle donc, est ...


Daniel Bort
Spécialisé dans les gadgets informatiques, je cuisine également des plats exotiques à la maison pour équilibrer mon immersion constante dans les dernières technologies et les actualités du LLM.
Création FBKW