View
35
Download
1
Category
Preview:
Citation preview
Programmation des applications mobiles avec Android
1 Inspir du cours de Olivier Le Goaer
OS mobile : outils de dveloppement2
Daprs le cours de Olivier Le Goaer
Plateforme de dveloppement3
MobileApp vs. WebApp
Android4
Startup rachete par Google en 2005
Open Alliance Handset (OHA) Regroupement de + de 50
entreprises : fabricants de matriel, oprateurs mobiles, dveloppeurs dapplications, dont Google.
Objectif : dvelopper des normes ouvertes pour des applications de tlphonie mobile
Matriel supportant Android Tablette, smartphone, netbook,
tlvision, embarqu (frigo?)
Android5
Points forts Systme linux + java Projet open source Systme fonctionnel, intuitif et
volutif SFK complet fourni
Versions dAndroid
cupcake donut eclair froyo gingerbread honeycomb Icecream sandwich
Architecture Android6
Architecture Android7
Linux Kernel Le noyau linux fournit le pilotes matriels, la gestion de
processus, la mmoire, le rseau et la gestion de lalimentationLes bibliothques
J2SE (subset) : java.io.*, java.lang.*, ... Android : android.view.*, android.telephony.*, ... Google : com.google.android.maps.*
Le moteur dexcution Android Offre les bases du framework applicatif Utilise la machine virtuelle java Dalvik
Le framework applicatif Fournit les classes utiles et des abstractions matrielles
La couche applicative IHM (interface graphiques) dcrites en XML Modle de donnes et controleurs applicatifs crits en java
Machine virtuelle Dalvik8
Offre l'avantage de toute machine virtuelle Couche d'abstraction entre le dveloppeur d'applications et
des implmentations matrielles particulires
La VM Dalvik n'est pas une VM (Virtual Machine) Java Tient compte des contraintes de CPU et mmoire Excute des fichiers .dex (Dalvik Executable) optimiss
La VM cr une instance Dalvik pour chaqueprocessus (lourd)
Les applications sont totalement indpendantes ("sandbox") Espaces protgs (mmoire, disque) Evite un plantage gnralis !
Le petit univers java9
Concepts Paquetage, classe, annotation, hritage, interface...
Idiomes Classes anonymes, classes internes, POJO...
Bibliothques(API) J2SE (subset) : java.io.*, java.lang.*... Android : android.view.*, android.telephony.*... Google : com.google.android.maps.*...
Design Patterns Singleton, Builder, Observer (Listener), DAO..
Outil de dveloppement10
Plugin Eclipse ADT (Android Development Tools) Assistant la cration de projets Crateur d'interface graphique (WYSIWYG) Vues et perspectives ddies
Outil de dveloppement11
Plugin Eclipse ADT (Android Development Tools) Arborescence des projets
Dossier du projet
Fichiers source (.java) Fichier source R.javaautomatiquement gnr partir du rpertoire /res
Version Android
Ressources organises(layout, icones, texte,...)
Ressources non organises(.pdf, .zip, .html,...)
Fichier Manifest.xml
Dveloppement d'une application12
Code source Ecrit en Java et compil en Dalvik bytecode (.dex)
Packaging Archive .apk
Signing Les applications doivent tre signes pour tre dployes (pas
ncessaire en dveloppement)Excution
Sur un support mobile (smartphone par ex) Dans un mulateur
L'mulateur13
AVD (Android Virtual Device) AVD Manager
Lent au dmarrage et l'usage Emulation (i.e. couche d'indirection)
vs. simulation Noyau Linux + services +
composants android
Fonctionnalits non-disponibles Appareil photo (CameraWebcam
support) Vibreur Appels tlphoniques rels Capteurs en gnral Connexions USB volution de la charge de la batterie
Dveloppement d'applications14
Environnement d'excution contraint
Pour vos dveloppements, gardez l'esprit queles appareils mobiles ont :
Une puissance processeur plus faible Une RAM limite Des capacits de stockage permanent limites De petits crans avec de faibles rsolutions Des cots levs de transfert de donnes Des taux de transfert plus lents avec une latence leve Des connexions rseau moins fiables Des batteries autonomie limite
Applications Android15
Applications de premier plan Utilisable quand elle est visible et mis en pause
lorsquelle ne lest pas Jeux, mashup de cartes gographiques
Applications darrire-plan Interaction limite en dehors de sa configuration Filtrage dappels, rponse automatique aux SMS
Applications intermittente Interactiv par moment, lessentiel de sa tche
est en arrire-plan Lecteur de musique
Widget Composant visuel interactif que les utilisateurs
peuvent ajouter leur cran daccueil Affichage de lheure, prvisions mto
Cycle de vie dune application Android16
Contrairement aux applications classiques, les applications Android nont pas un contrle complet sur leur cycle de vie
Les composants doivent tre lcoute des changements dtats de lapplication pour tre prs une fin intempestive
La mmoire et la gestion des processus est prise en charge exclusivement par le moteur dexcution
Les ressources17
chanes de caracteres, images, audio, presentation visuelle, . . .
dossier res/
Images
Interfaces graphiques
Valeurs constantes
Principe R.java18
Chaque lment dfini dans le rpertoire /res impacte le fichier R.java( ne pas toucher)
Gnration automatique de classes internes la classe R, ainsi que des constantes de type entier sur 32bits
Chemin d'accs aux ressources via R.java user-defined : fr.polytech.tp1.R.color.rose_bonbon system-defined : android.R.color.darker_gray Exemple :obj.setColor(R.color.rose_bonbon)
Objet java reprsentant les ressources Instance de la classe : android.content.res.Resources Ressources du projet en cours : context.getResources()
AndroidManifest.xml19
Dcrit les composants de lapplication Un point dentre potentiel dans lapplication Une application peut lancer un composant diffrent (pas demain)
Quatre types de composants activits (activities) services (services) fournisseurs de contenu (contentproviders) rcepteurs de diffusion (broadcastreceivers)
Dcrit les permissions requises par lapplication accs a lInternet, lecture-criture dans la liste de contacts,
go-localisation, . . .
Dcrit les besoins matriels et logiciels de lapplication appareil photo, bluetooth, ecran multitouch, . . .
AndroidManifest.xml20
Fichier XML obligatoire, la racine du projetSeuls les lments et sont
obligatoirescatgorie LAUNCHER = point dentre possible pour
excuter l'application
http://developer.android.com/guide/topics/manifest/manifest-intro.html
Activit21
Une activit = un cran graphique Incarne souvent un cas d'utilisation
(use case UML)
IHM structure par une hirarchie de vues
et de contrles des lments dfinis par du code Java
Certains lments (texte, dimension, couleur) dfinis dans des fichiers XML (/res)
Une application est forme de n activits
Sous-classe deandroid.app.Activity
Activit22
7 mthodesde callback: voidonCreate(...) voidonStart() voidonRestart() voidonResume() voidonPause() voidonStop() voidonDestroy()
Activit23
action MAIN = un point dentre principal (pas dinformation particulire fournir)
catgorie LAUNCHER = point dentre possible pour excuter l'application
packagefr.polytech.resmob;importandroid.app.Activity;
publicclassMyFirstActivityextendsActivity{
@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);/*Allocationdesressourcesici*/}
@OverrideprotectedvoidonDestroy(){super.onDestroy();/*Dsallocationdesressourcesici*/}}
Le bundle mmorise l'tat de l'UI
lorsqu'elle passe en arrire-plan
Description des interfaces graphiques24
Description Dclarative (Fichiers XML dans le rpertoire /res/layout/) Ou directement dans le code java
Vues (View) Composant lmentaire des interfaces graphiques sous Android Instance de la classe View Sensible aux vnements tous les composants graphiques (widgets) dAndroid sont des
vues : Button,EditText,TextView,Spinner,CheckBoxRegroupement 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
Description des interfaces graphiques25
Description Dclarative (Fichiers XML dans le rpertoire /res/layout/) Ou directement dans le code java
Vues (View) Composant lmentaire des interfaces graphiques sous Android Instance de la classe View Sensible aux vnements tous les composants graphiques (widgets) dAndroid sont des
vues : Button,EditText,TextView,Spinner,CheckBoxRegroupement de vues (ViewGroup)
Le ViewGroup permet de regrouper des vues Les layouts disponibles sont:LinearLayout,TableLayout,RelativeLayout,FrameLayout,ScrollView,...
Layout communs26
Linear Layout: organisation horizontale avec barre de dfilement si ncessaire
Relative Layout: organisation des lments relativement les uns aux autres ( gauche de, au-dessus de, ...)
Web view: affiche le contenu d'une page webhttp://developer.android.com/guide/topics/ui/declaring-layout.html
Description des interfaces graphiques27
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
Description des interfaces graphiques28
action MAIN = un point dentre principal (pas dinformation particulire fournir)
catgorie LAUNCHER = point dentre possible pour excuter l'application
identifiant unique le signe + dans @+id signifie quil sagit dun nouveau nom de ressource, crr et a ajouter a la classe R
Association des interfaces graphiques29
importandroid.app.Activity;importandroid.os.Bundle;importandroid.widget.TextView;
publicclassMyFirstActivityextendsActivity{
/**Calledwhentheactivityisfirstcreated.*/@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);TextViewmessage=(TextView)findViewById(R.id.msgText);message.setText("Hello,World!");}}
Associe une hirarchie de
vues `a une activit
Renvoie la vue partir de son identifiant
gnr dans R.java
Gestion des vnements30
Dans le fichier main.xml de /res/layouton peut associer une mthode un vnement via les attributs vnementiels
publicclassMyFirstActivityextendsActivity{privateTextViewhelloLabel;@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);helloLabel=(TextView)findViewById(R.id.hello_label);}
publicvoidsayHello(Viewv){helloLabel.setText(R.string.hello);}}
Rfrences pour la programmation android
31
http://developer.android.com/training/index.html Programmation des systmes mobiles & sans fils , cours de
Olivier Le Goaer. Programmation Android , cours de Etienne Payetwikibook sur programmation android
Slide 1Slide 2Slide 3Slide 4Slide 5Slide 6Slide 7Slide 8Slide 9Slide 10Slide 11Slide 12Slide 13Slide 14Slide 15Slide 16Slide 17Slide 18Slide 19Slide 20Slide 21Slide 22Slide 23Slide 24Slide 25Slide 26Slide 27Slide 28Slide 29Slide 30Slide 31
Recommended