Cours1 Android

download Cours1 Android

of 31

Transcript of Cours1 Android

  • 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