Introduction à la programmation avec Android

1 Introduction

1.1 Présentation succinte

Android est développée depuis 2007 par Google après le rachat d'une startup du même nom. Basée sur un noyau Linux, Android est une plateforme libre sous licence GNU GPL2. La dernière version en date est la version 4.1 nommée Jelly Bean. Les mises à jours sont fréquentes (2 fois par an).

Android est une plateforme de développement à l'origine conçue pour des terminaux mobiles, mais qui aujourd'hui élargit son marché, avec notamment des téléviseurs ou des consoles de salons (non mobiles). Elle est aujourd'hui la première plateforme mobile en terme de nombre de terminaux vendus.

Le développement d'applications sous Android s'effectue principalement sous Java (applications, logique métier) et XML (pour les interfaces). Il est également possible de développer en C, mais en se passant de l'interface spécifique Java (d'où un travail de portabilité plus important).

1.2 Motivation du cours

Nous nous intéressons aujourd'hui à la plateforme Android, car de nombreuses entreprises ont recours aux plateformes mobiles pour développer des applications métiers dédiées à l'usage interne à l'entreprise, ou à l'accès à ses services par les clients. Les terminaux mobiles ont remplacé les anciens terminaux fixes pour de nombreux usages, même dans le cadre professionnel, surtout depuis l'arrivée massive des tablettes tactiles.

Android n'est bien sûr pas la seule plateforme de développement pour terminaux mobiles. Nous pouvons citer notamment iOS de chez Apple, et Windows Phone de chez Microsoft. Cependant, la licence GPL ainsi que les outils gratuits mis à disposition des développeurs Android nous a orientés vers ce choix.

1.3 Quel environnement de programmation ?

Vous êtes libres d'utiliser l'éditeur/environnement de programmation de votre choix. Il faut au préalable avoir le kit de développement Android (qui contient notamment un émulateur de terminaux). Cependant, le développement sous Eclipse est fortement conseillé, avec le plugin ADT.

2 Prise en main d'Android avec le tutoriel officiel

La meilleure façon de prendre en main Android est de suivre son tutoriel officiel : http://developer.android.com/training/basics/firstapp/index.html. Bien que ne couvrant pas tous les aspects du développement sous Android, il permet de mettre un premier pied à l'étrier. Ce ne sera certainement pas suffisant, pour vos besoins, c'est cela que nous aborderons d'autres aspects dans la suite du TP.

Pour aller plus loin dans la découverte du langage, vous pouvez consulter les sources suivantes :

Semi-auto-formation

Attention, contrairement à ce que nous avons pu faire en LCPOO l'année dernière, ce cours pose comme acquis votre connaissance de la programmation orientée objet avec Java. Ce cours est principalement construit autours de l'exploration du tutoriel officiel d'Android et donc sur votre capacité à être autonome dans votre tâche d'apprentissage. Le chargé de TP est présent toutefois pour vous aider et répondre à toutes vos questions (pertinentes).

3 Ecrire sa première application Android

Le tutoriel officiel propose de développer une première application : HelloWorld. Il n'est conçu que pour être développé sous Eclipse avec le plugin ADT.

Rendez-vous sur le tutoriel officiel Android et consultez les sections suivantes :

  1. Creating an Android Project : concerne la prise en main du plugin Eclipse ADT et les lignes de commande du kit de développement
  2. Running Your Application : présente l'architecture d'un projet Eclipse ADT, et comment exécuter l'application sur un vrai terminal ou sur l'émulateur
  3. Building a Simple User Interface : présente l'utilisation d'XML pour développer des interfaces graphiques (layout, textfield, button, etc.)
  4. Starting Another Activity : illustre comment une application peut gérer plusieurs activités et les lier

3.1 Exercice

Suivez le tutoriel de 1 à 4 et développez votre première application.

3.2 Références

Fonctionnalités facultatives

Android et la diversité des terminaux et de leurs capacités nous permettent d'envisager l'usage de très nombreuses fonctionnalités. Le but de la suite de ce TP est de vous donner quelques pointeurs vers des fonctionnalités pouvant vous servir pour votre projet. La liste est bien entendu non exhaustive. Si vous avez d'autres besoins, le chargé de TP est à votre disposition pour vous aider.

4 Accès et gestion de bases de données locales

Il peut être intéressant de stocker certaines informations sur une base de données locales au terminal mobile (des préférences utilisateur, par exemple). Android propose un mécanisme assez simple basé sur SQLite (un moteur de bases de donnée fonctionnant sans mode serveur). L'API en charge de la gestion de bases de données est android.database.

4.1 Exercice

Créez une application qui enregistre en base de données les noms et prénoms saisis dans une fenêtre, puis qui les affiche en mettant en forme (majuscules, etc.) dans une autre activité.

5 Prendre des photos

Les terminaux mobiles (même les tablettes) sont tous équipé de capteurs photographiques. L'accès à ces équipement se fait grâce à l'API android.hardware.Camera. Le sous-tutoriel Building a Camera App devrait largement couvrir vos besoins. Ensuite, pour sauver les photos, le sous-tutoriel Saving Media Files vous montrera comment accéder aux divers supports de stockage.

5.1 Exercice

Créez une application capable de prendre une photo et de lui donner un nom afin de l'enregistrer sur le mobile.

6 Accès aux services de localisation

La plupart des terminaux mobiles ont une puce GPS leur permettant de se localiser dans l'espace. L'accès à ces informations est très simple sous Android grâce à l'API android.location.

6.1 Exercice

Créez une application qui affiche la localisation actuelle après avoir appuyé sur un bouton.

7 Cartographie avec GoogleMaps ou OpenStreetMap

Souvent liées aux services de localisation, les fonctionnalités de cartographies sous Android reposent sur des API complètes et diverses. Les principales sont GoogleMaps et OpenStreetMap. Les deux consistent en la création de View spécifiques (MapView) permettant d'afficher des cartes de certaines tailles, à certaines positions, à certaines échelles, etc. Il est possible d'afficher des informations sur les cartes grâce à des objets Overlay.

GoogleMaps possède un tutoriel très simple et très clair : https://developers.google.com/maps/documentation/android/hello-mapview OpenStreetMap fonctionne suivant la même API, et donc suivre le même tutoriel est indispensable.

7.1 Exercice

Créez une application qui affiche sur une carte GoogleMaps ou OpenStreetMap la position actuelle du mobile.

8 Accès aux capteurs

Les terminaux mobiles d'aujourd'hui sont une source de données diverses grâce aux multiples capteurs embarqués (température, inclinaison, GPS, etc.). L'API android.hardware.Sensor donne accès à tous ces capteurs de manière unifiée.

8.1 Exercice

Créez une application qui détermine si l'utilisateur est en train de marcher, de sauter, d'être assis ou d'être debout grâce à l'acceléromètre : http://developer.android.com/guide/topics/sensors/sensors_motion.html#sensors-motion-accel


Gauthier Picard, October 2012