Programmation des applications mobiles avec Android. 1 Inspiré du cours de Olivier Le Goaer



Documents pareils
TP SIN Programmation sur androïde Support : eclipse

Outils, langage et approche Android Une introduction. Nicolas Stouls lyon.fr

TP au menu «UI ANDROID»

Les fondamentaux du développement d applications Java

1.3 Gestion d'une application

SOMMAIRE

Warren PAULUS. Android SDK et Android x86

Programmation Mobile Android Master CCI

Android 4 Les fondamentaux du développement d'applications Java

Introduction ANDROID

Table des matières. Partie I Concepts de base Préface... VII

Programmation Android L3 informatique

Créer des applications Android

De Java à Android version 0.1

République Algérienne Démocratique et Populaire Université Abou Bakr Belkaid Tlemcen Faculté des Sciences Département d Informatique

Chapitre 1 Retour en arrière

Tutorial pour une application simple

Android en action. Abdelkader Lahmadi Université de Lorraine

Développement Android. J.-F. Couchot

Béatrice Bertrand CDDP de l Eure. Béatrice Bertrand CDDP de l'eure

Développement sous Android

Épisode 2 : Les outils de développement Alain Menu édition 2.1, septembre 2013

Plate formes mobiles. Utilisation. Contexte 9/29/2010 IFC 2. Deux utilisations assez distinctes :

Programmation mobile avec Android

Gestion des différentes tailles d écran

Dossier. Développer en Java sur téléphone mobile. Benjamin Damécourt UFR SITEC Master 2 EESC 11 janvier 2012

Application de messagerie simple sur Android : Rapport de projet de VAP RSM

Encore plus de widgets et de conteneurs

Projet Android (LI260) Cours 2

Tutoriel Android. Pour démarrer la programmation d'applications Android

- TP Programmation Android - NFA024 Conservatoire National des Arts et Métiers

Installation et prise en main

TD/TP 1 Introduction au SDK d Android

Android. Programmation. De la conception au déploiement avec le SDK Google Android 2. Damien Guignard Julien Chable Emmanuel Robles

APPLICATIONS JAVA. 1. Android. Développement d'activités Java sous Android. Android Partie I. L'architecture du système Android. Application Android

Tutoriel Android - TP de prise en main

Android 101. Rémi Forax

Education Delivery Intelligent Tool

Développement d applications professionnelles avec Android 2

Android. Présentation d Android. Florent Garin

Terminaux Mobiles Communicants

[Projet S9] Rédacteurs & Contributeurs Entité Rédacteurs Contributeurs Imededdine HOSNI Olivier MARTY. Validation du document Nom Date Visa

TP2 : Client d une BDD SqlServer

Module Architecture des systèmes mobiles : Android première partie Didier FERMENT - UPJV

Guillaume GENS

Votre premier projet Android

Développement sous Android

Android Publish/Subscribe, GCM, Google Cloud Messaging : une introduction

Développement d'applications pour Android. M. Dalmau IUT de Bayonne Pays Basque

Annexe Android Studio

Point sur les solutions de développement d apps pour les périphériques mobiles

PC, Tablette, Smartphone, comment choisir ce qui me convient le mieux?

Présentation du système d exploitation Open Source ANDROID

Génie Logiciel et Interaction Homme-Machine PROJET UCAMPUS

WINDEV MOBILE. ios SMARTPHONE SUPPORT: IOS, ANDROID, WINDOWS PHONE 8.

République Algérienne Démocratique et Populaire Université Abou Bakr Belkaid Tlemcen Faculté des Sciences Département d Informatique

Android et le Cloud Computing

Pc Portable ou Tablette tactile?

Développement tablette Android. SophiaConf2011 Par Arnaud FARINE

Architectures Mobiles

Linux embarqué: une alternative à Windows CE?

Virtualisation de serveurs Solutions Open Source

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

TP architecture N-tiers en Java EE ou Java EE, Android : la synthèse. Le serveur GereCompteBancaireServlet

Iphone vs. Android. Mardi 17 Novembre 2009 Paris, la Défense. Xavier PARADON, Directeur Technique Valtech Training

Modifier les paramètres

Vérifier la qualité de vos applications logicielle de manière continue

Virtualisation CITRIX, MICROSOFT, VMWARE OLIVIER D.

Table des matières Introduction Démarrage Les composants graphiques... 26

Android. Android is an environment where the biggest limitation is your imagination. P1 1

LES TABLETTES : GÉNÉRALITÉS

Manuel d utilisation

LES OBJETS CONNECTES

EIP 2012 Projet Livepad. Documentation technique 1.5

SOMMAIRE. Introduction... 3 A. ANDROID... 4

Cours Android. Développement et API. Romain Raveaux 1. Mars 06-03, romain.raveaux at univ-tours.fr. Organisation du module

Découverte des tablettes tactiles (ipad d'apple et Galaxy Tab de Samsung

Les tablettes. Présentation tablettes Descriptif Fournisseurs Caractéristiques Comparatifs Conseils Perspectives Démonstration

La carte à puce. Jean-Philippe Babau

Générer du code à partir d une description de haut niveau

Développer des Applications Internet Riches (RIA) avec les API d ArcGIS Server. Sébastien Boutard Thomas David

Java 7 Les fondamentaux du langage Java

Types d applications pour la persistance. Outils de développement. Base de données préexistante? 3 modèles. Variantes avec passerelles

La sécurité des ordiphones : mythe ou réalité?

Accélérez votre émulateur Android

TP1 : Initiation à Java et Eclipse

Un serveur d'archivage

Plan de la conférence. Virtualization. Définition. Historique. Technique. Abstraction matérielle

Preliminary Spec Sheet

Présentation du Framework BootstrapTwitter

Bases Java - Eclipse / Netbeans

Projet de développement

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server

Développement d'applications Web HTML5 L'art et la manière avec Visual Studio 2015 et TFS

Diagrammes de Package, de déploiement et de composants UML

PPM(A) Programmation sur Plateformes Mobiles (Android) Legond-Aubry Fabrice

Mémoire de Magister. Conception et réalisation d une carte d acquisition ambulatoire de transmission sans fil et de traitement de signaux biomédicaux

Installation et prise en main d UBUNTU

Transcription:

Programmation des applications mobiles avec Android 1 Inspiré du cours de Olivier Le Goaer

2 OS mobile : outils de développement D après le cours de Olivier Le Goaer

3 Plateforme de développement MobileApp vs. WebApp

4 Android Startup rachetée par Google en 2005 Open Alliance Handset (OHA) Regroupement de + de 50 entreprises : fabricants de matériel, opérateurs mobiles, développeurs d applications, dont Google. Objectif : développer des normes ouvertes pour des applications de téléphonie mobile Matériel supportant Android Tablette, smartphone, netbook, télévision, embarqué (frigo?)

5 Android Points forts Système linux + java Projet open source Système fonctionnel, intuitif et évolutif SFK complet fourni Versions d Android cupcake donut eclair froyo gingerbread honeycomb Icecream sandwich

6 Architecture Android

7 Architecture Android Linux Kernel Le noyau linux fournit le pilotes matériels, la gestion de processus, la mémoire, le réseau et la gestion de l alimentation Les bibliothèques J2SE (subset) : java.io.*, java.lang.*,... Android : android.view.*, android.telephony.*,... Google : com.google.android.maps.* Le moteur d exécution Android Offre les bases du framework applicatif Utilise la machine virtuelle java Dalvik Le framework applicatif Fournit les classes utiles et des abstractions matérielles La couche applicative IHM (interface graphiques) décrites en XML Modèle de données et controleurs applicatifs écrits en java

8 Machine virtuelle «Dalvik» Offre l'avantage de toute machine virtuelle Couche d'abstraction entre le développeur d'applications et des implémentations matérielles particulières La VM Dalvik n'est pas une VM (Virtual Machine) Java Tient compte des contraintes de CPU et mémoire Exécute des fichiers.dex (Dalvik Executable) optimisés La VM créé une instance Dalvik pour chaque processus (lourd) Les applications sont totalement indépendantes ("sandbox") Espaces protégés (mémoire, disque) Evite un plantage généralisé!

9 Le petit univers java Concepts Paquetage, classe, annotation, héritage, interface... Idiomes Classes anonymes, classes internes, POJO... Bibliothèques(API) J2SE (subset) : java.io.*, java.lang.*... Android : android.view.*, android.telephony.*... Google : com.google.android.maps.*... Design Patterns Singleton, Builder, Observer (Listener), DAO..

10 Outil de développement Plugin Eclipse ADT (Android Development Tools) Assistant à la création de projets Créateur d'interface graphique (WYSIWYG) Vues et perspectives dédiées

11 Outil de développement Plugin Eclipse ADT (Android Development Tools) Arborescence des projets Dossier du projet Fichiers source (.java) Version Android Ressources organisées (layout, icones, texte,...) Fichier source R.java automatiquement généré à partir du répertoire /res Ressources non organisées (.pdf,.zip,.html,...) Fichier Manifest.xml

12 Développement d'une application Code source Ecrit en Java et compilé en Dalvik bytecode (.dex) Packaging Archive.apk Signing Les applications doivent être signées pour être déployées (pas nécessaire en développement) Exécution Sur un support mobile (smartphone par ex) Dans un émulateur

13 L'émulateur AVD (Android Virtual Device) AVD Manager Lent au démarrage et à l'usage Emulation (i.e. couche d'indirection) vs. simulation Noyau Linux + services + composants android Fonctionnalités non-disponibles Appareil photo (Camera Webcam supporté) Vibreur Appels téléphoniques réels Capteurs en général Connexions USB Évolution de la charge de la batterie

14 Développement d'applications Environnement d'exécution contraint Pour vos développements, gardez à l'esprit que les appareils mobiles ont : Une puissance processeur plus faible Une RAM limitée Des capacités de stockage permanent limitées De petits écrans avec de faibles résolutions Des coûts élevés de transfert de données Des taux de transfert plus lents avec une latence élevée Des connexions réseau moins fiables Des batteries à autonomie limitée

15 Applications Android Applications de premier plan Utilisable quand elle est visible et mis en pause lorsqu elle ne l est pas Jeux, mashup de cartes géographiques Applications d arrière-plan Interaction limitée en dehors de sa configuration Filtrage d appels, réponse automatique aux SMS Applications intermittente Interactivé par moment, l essentiel de sa tâche est en arrière-plan Lecteur de musique Widget Composant visuel interactif que les utilisateurs peuvent ajouter à leur écran d accueil Affichage de l heure, prévisions météo

16 Cycle de vie d une application Android Contrairement aux applications classiques, les applications Android n ont pas un contrôle complet sur leur cycle de vie Les composants doivent être à l écoute des changements d états de l application pour être près à une fin intempestive La mémoire et la gestion des processus est prise en charge exclusivement par le moteur d exécution

17 Les ressources chaınes de caracteres, images, audio, presentation visuelle,... dossier res/ Images Interfaces graphiques Valeurs constantes

18 Principe R.java Chaque élément défini dans le répertoire /res impacte le fichier R.java (à ne pas toucher) Génération automatique de classes internes à la classe R, ainsi que des constantes de type entier sur 32bits Chemin d'accès aux ressources via R.java user-defined system-defined Exemple : fr.polytech.tp1.r.color.rose_bonbon : android.r.color.darker_gray : obj.setcolor(r.color.rose_bonbon) Objet java représentant les ressources Instance de la classe : android.content.res.resources Ressources du projet en cours : context.getresources()

19 AndroidManifest.xml Décrit les composants de l application Un point d entrée potentiel dans l application Une application peut lancer un composant différent (pas de main) Quatre types de composants activités (activities) services (services) fournisseurs de contenu (content providers) récepteurs de diffusion (broadcast receivers) Décrit les permissions requises par l application accès a l Internet, lecture-écriture dans la liste de contacts, géo-localisation,... Décrit les besoins matériels et logiciels de l application appareil photo, bluetooth, ecran multitouch,...

20 AndroidManifest.xml <manifest> <application> <activity android:name=".myfirstactivity" android:label="@string/app_name"> <intent filter> <action android:name="fr.polytech.resmob.myfirstactivity"/> <category android:name="android.intent.category.launcher"/> </intent filter> </activity> </application> </manifest> Fichier XML obligatoire, à la racine du projet Seuls les éléments <manifest> et <application> sont obligatoires catégorie LAUNCHER = point d entrée possible pour exécuter l'application http://developer.android.com/guide/topics/manifest/manifest-intro.html

21 Activité Une activité = un écran graphique Incarne souvent un cas d'utilisation (use case UML) IHM structurée par une hiérarchie de vues et de contrôles des éléments définis par du code Java Certains éléments (texte, dimension, couleur) définis dans des fichiers XML (/res) Une application est formée de n activités Sous-classe de android.app.activity

22 Activité 7 méthodes de callback: void oncreate(...) void onstart() void onrestart() void onresume() void onpause() void onstop() void ondestroy()

23 Activité package fr.polytech.resmob; import android.app.activity; public class MyFirstActivity extends Activity { @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); action /* MAIN Allocation = un point des ressources d entrée principal ici */ (pas } d information particulière à fournir) @Override catégorie protected LAUNCHER void ondestroy() = point d entrée { possible pour exécuter super.ondestroy(); l'application } } /* Désallocation des ressources ici */ Le bundle mémorise l'état de l'ui lorsqu'elle passe en arrière-plan

24 Description des interfaces graphiques Description Déclarative (Fichiers XML dans le répertoire /res/layout/) Ou directement dans le code java Vues (View) Composant élémentaire des interfaces graphiques sous Android Instance de la classe View Sensible aux événements tous les composants graphiques (widgets) d Android sont des vues : Button, EditText, TextView, Spinner, CheckBox Regroupement de vues (ViewGroup) Le ViewGroup permet de regrouper des vues Les layouts disponibles sont : LinearLayout, TableLayout, RelativeLayout, FrameLayout, ScrollView,... http://developer.android.com/guide/topics/ui/declaring-layout.html

25 Description des interfaces graphiques Description Déclarative (Fichiers XML dans le répertoire /res/layout/) Ou directement dans le code java Vues (View) Composant élémentaire des interfaces graphiques sous Android Instance de la classe View Sensible aux événements tous les composants graphiques (widgets) d Android sont des vues : Button, EditText, TextView, Spinner, CheckBox Regroupement de vues (ViewGroup) Le ViewGroup permet de regrouper des vues Les layouts disponibles sont : LinearLayout, TableLayout, RelativeLayout, FrameLayout, ScrollView,...

26 Layout communs Linear Layout : organisation horizontale avec barre de défilement si nécessaire Relative Layout : organisation des éléments relativement les uns aux autres (à gauche de, au-dessus de,...) Web view : affiche le contenu d'une page web http://developer.android.com/guide/topics/ui/declaring-layout.html

27 Description des interfaces graphiques Orientation Sens de placement des vues dans un conteneur android:orientation = vertical horizontal Taille Surface prise par la vue android:layout_width =??px fill_parent wrap_content android:layout_height =??px fill_parent wrap_content Gravité Alignement d'une vue dans son conteneur android:layout_gravity = left center_horizontal top bottom right

28 Description des interfaces graphiques <?xml version="1.0" encoding="utf 8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="match_parent" action android:layout_height="wrap_content" MAIN = un point d entrée principal (pas d information android:text="@string/hello"/> particulière à fournir) <TextView android:layout_width="match_parent" catégorie android:layout_height="wrap_content" LAUNCHER = point d entrée possible pour exécuter l'application android:text="@string/coucou" android:id="@+id/msgtext"/> </LinearLayout> identifiant unique le signe + dans @+id signifie qu il s agit d un nouveau nom de ressource, à créér et a ajouter a la classe R

29 Association des interfaces graphiques import android.app.activity; import android.os.bundle; import android.widget.textview; Associe une hiérarchie de vues ` a une activité public class MyFirstActivity extends Activity { } /** Called when the activity is first created. */ @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); TextView message = (TextView) findviewbyid(r.id.msgtext); message.settext("hello, World!"); } Renvoie la vue à partir de son identifiant généré dans R.java

30 Gestion des événements Dans le fichier main.xml de /res/layout on peut associer une méthode à un événement via les attributs événementiels <Button... android:onclick="sayhello".../> public class MyFirstActivity extends Activity { private TextView hellolabel; @Override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); hellolabel = (TextView) findviewbyid(r.id.hello_label); } } public void sayhello(view v) { hellolabel.settext(r.string.hello); }

31 Références pour la programmation android http://developer.android.com/training/index.html «Programmation des systèmes mobiles & sans fils», cours de Olivier Le Goaer. «Programmation Android», cours de Etienne Payet wikibook sur programmation android