Introduction à Android by Jean Collas, Ghislain Deffrasne, Reda Sebbaniis licensed under a Creative Commons A...
 Ouverture<br />Jean Collas, Réda Sebbani, Ghislain Deffrasnes<br />
Contexte<br />Contexte<br />3<br />Téléphonie Mobile : Smart Phone<br />Développement logiciel pour mobiles<br />Chiffre d...
Contexte Concurrentiel<br />4<br />Systèmes d’exploitation pour Mobiles :<br />Marché en constante augmentation<br />Possi...
Contexte Concurrentiel<br />5<br />Systèmes d’exploitation pour Smart phone :<br />Marché en constante augmentation (+28% ...
Internet & Google<br />6<br />Fondé en 98, croissance constante<br />Multiples domaines de l’informatique :<br />Recherche...
Points forts d’Android<br />Points fort d’Android<br />7<br />Point de vue constructeur<br />Point de vue utilisateur<br /...
Historique<br />Historique<br />8<br />T-Mobile G1<br />Novembre 2008<br />Android 1.0 et SDK release 2<br />Android : Ope...
Open Handset Alliance<br />9<br /><ul><li>Consortium créé fin 2007
47 compagnies</li></ul>Fabricants de semi-conducteurs<br />Opérateurs de téléphonie mobile<br />Entreprises de commerciali...
De 180 à 400 $
Wi-fi et Bluetooth
GPS
Accéléromètres
Caméra
Écran tactile</li></li></ul><li>De nouveaux mobiles<br />11<br />LG<br />L’agora par Kogan<br />http://www.businessmobile....
Matériel Recommandé<br />12<br /><ul><li>  RAM : 128 Mo (minimum requis)
  Mémoire Flash : 256 Mo (minimum requis)
  Wifi : 802.11 b/g
  USB : interface USB 2.0
  Bluetooth 2.0 EDR
  Caméra
  Périphérique de stockage externe
  Écran :
  Résolution HVGA (480 × 320 pixels)
  Couleurs 16 bits</li></li></ul><li>Preuve de sa portabilité – Futur d’Android<br />13<br />Et si Android n’était pas seu...
Développementd’Applications<br />14<br />  Possibilité de créer ses propres applications<br />Environnement de développeme...
Intégration des applications Google<br />15<br />  Barre de recherche « Google Search »<br />Gmail<br />  Google Talk (IM)...
Exemples d’applications : Android Market<br />16<br />Géolocalisation<br />Orientation<br />Tourisme<br />Géolocalisation<...
Points d’accès d’Android<br />17<br />Point de vue constructeur<br />Point de vue utilisateur<br />Point de vue développeu...
Architecture<br />18<br />APPLICATIONS<br />Home<br />Contacts<br />Phone<br />Browser<br />…<br />APPLICATION FRAMEWORK<b...
Noyau d’Android<br />19<br />Architecture ARM<br />Basé sur Linux 2.6.24<br />Système de fichiers supporté : FAT32<br />  ...
Adaptation aux besoins du mobile<br />20<br /><ul><li>Alarm : timers pour « réveiller » des périphériques
Ashmem : partage de mémoire entre processus
Binder : driver IPC pour la communication inter-processus
Power Management
Low Memory Killer
Kernel Debugger
Logger</li></ul>HARDWARE ABSTRACTION LAYER<br />Graphics<br />Audio<br />Camera<br />Bluetooth<br />GPS<br />WiFi<br />…<b...
Librairies<br />21<br />LIBRARIES<br />Surface Manager<br />Media Framework<br />SQL Lite<br />OpenGL<br />Audio Manager<b...
Surface Manager<br />22<br />Application 1<br />Surface Flinger<br />Application 2<br />Écran<br />(Frame Buffer)<br />
Audio Manager<br />23<br />Sonnerie d’appel<br />Audio Flinger<br />Oreillette<br />Lecteur MP3<br />Écouteurs<br />
Machine Virtuelle Dalvik<br />24<br />ANDROID RUNTIME<br />LIBRARIES<br />CoreLibraries<br />Surface Manager<br />Media Fr...
Machine Virtuelle Dalvik<br />25<br />Nouvelle instance pour chaque processus : Applications indépendantes<br />  Exécute ...
Framework & fondationsdes applications<br />26<br />APPLICATION FRAMEWORK<br />Activity Manager<br />Window Manager<br />C...
Intents<br />27<br /> Intent :<br /><ul><li>  Requête; Description d’une action à effectuer
  Fait le lien entre différentes applications</li></ul>  Décrit par :<br /><ul><li>  Une action(VIEW, EDIT, MAIN,…)
  La donnée à traiter (sous forme d’URI)</li></ul>Types d’Intent :<br /><ul><li>  Explicite (référence exacte)
  Implicite (description)</li></li></ul><li>Intents<br />28<br />Intent Resolver<br />Intent 1 App.A<br />Intent 2 App.B...
29<br />Intent Filter<br />Objectif : Description du handler<br />Publication d’IntentFilters par les activités<br />Inten...
Les URIs - Utilisation<br />30<br />Exemples d’URI:<br />Intent<br />EDIT_ACTION<br />Ouvre l’application de géo-localisat...
Notification Manager<br />31<br />Applications peuvent s’exécuter simultanément<br />Barre de notifications<br />Notificat...
  Son
Prochain SlideShare
Chargement dans…5
×

Presentation Android

4 366 vues

Publié le

Présentation & Introduction à Android au 01/2009 -
Nouveau système d'exploitation mobile lancé par Google.

Publié dans : Technologie
1 commentaire
11 j’aime
Statistiques
Remarques
  • Presentation Android from Jean Collas
       Répondre 
    Voulez-vous vraiment ?  Oui  Non
    Votre message apparaîtra ici
Aucun téléchargement
Vues
Nombre de vues
4 366
Sur SlideShare
0
Issues des intégrations
0
Intégrations
15
Actions
Partages
0
Téléchargements
0
Commentaires
1
J’aime
11
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Presentation Android

  1. 1.              Introduction à Android by Jean Collas, Ghislain Deffrasne, Reda Sebbaniis licensed under a Creative Commons Attribution 2.0 France License. <br />Original at http://www.jean-collas.fr/android<br />
  2. 2. Ouverture<br />Jean Collas, Réda Sebbani, Ghislain Deffrasnes<br />
  3. 3. Contexte<br />Contexte<br />3<br />Téléphonie Mobile : Smart Phone<br />Développement logiciel pour mobiles<br />Chiffre d’affaire énorme<br />Windows Mobile<br />RIM<br />40 millions de smartphones / trimestre (2008)<br />Symbian<br />iPhone OS<br />
  4. 4. Contexte Concurrentiel<br />4<br />Systèmes d’exploitation pour Mobiles :<br />Marché en constante augmentation<br />Possibilités d’évolution énormes avec un bon produit<br />
  5. 5. Contexte Concurrentiel<br />5<br />Systèmes d’exploitation pour Smart phone :<br />Marché en constante augmentation (+28% en 1 an, 31M -&gt; 40M)<br />Possibilités d’évolution énormes avec un bon produit<br />
  6. 6. Internet & Google<br />6<br />Fondé en 98, croissance constante<br />Multiples domaines de l’informatique :<br />Recherche, cartographie, vidéo, conception 3D, suite bureautique, publicité, navigateur, …<br />Politique de financement par la publicité<br />Attaque du monde mobile par la source : <br />le système d’exploitation Android<br />
  7. 7. Points forts d’Android<br />Points fort d’Android<br />7<br />Point de vue constructeur<br />Point de vue utilisateur<br />Point de vue développeur<br />Point de vue bidouilleur<br />Système Linux + Java<br />Système fonctionnel, intuitif, évolutif<br />Application développées en syntaxe Java<br />SDK complet fourni<br />Projet Open Source <br />C++ / Java<br />
  8. 8. Historique<br />Historique<br />8<br />T-Mobile G1<br />Novembre 2008<br />Android 1.0 et SDK release 2<br />Android : Open Source<br />Octobre 2008<br />Android 1.0 et SDK release 1<br />Septembre 2008<br />AndroidMarket<br />Août 2008<br />Avril 2008<br />Développement<br />d’Android<br />Developer<br />Challenge<br />Open Handset Alliance<br />Annonce d’Android<br />SDK pour Android<br />Novembre 2007<br />Start-up Android<br />Août 2005<br />
  9. 9. Open Handset Alliance<br />9<br /><ul><li>Consortium créé fin 2007
  10. 10. 47 compagnies</li></ul>Fabricants de semi-conducteurs<br />Opérateurs de téléphonie mobile<br />Entreprises de commercialisation<br />Fabricants d&apos;appareils mobiles<br />Fabricants de logiciels<br /><ul><li>But : développer des normes ouvertes pour les appareils de téléphonie mobile</li></li></ul><li>T-Mobile G1<br />T-Mobile G1 (HTC)<br />10<br /><ul><li>1ertéléphone avec Android
  11. 11. De 180 à 400 $
  12. 12. Wi-fi et Bluetooth
  13. 13. GPS
  14. 14. Accéléromètres
  15. 15. Caméra
  16. 16. Écran tactile</li></li></ul><li>De nouveaux mobiles<br />11<br />LG<br />L’agora par Kogan<br />http://www.businessmobile.fr/solutions-mobiles/guides-mobilite/0,39044672,39220692,00.htm<br />
  17. 17. Matériel Recommandé<br />12<br /><ul><li> RAM : 128 Mo (minimum requis)
  18. 18. Mémoire Flash : 256 Mo (minimum requis)
  19. 19. Wifi : 802.11 b/g
  20. 20. USB : interface USB 2.0
  21. 21. Bluetooth 2.0 EDR
  22. 22. Caméra
  23. 23. Périphérique de stockage externe
  24. 24. Écran :
  25. 25. Résolution HVGA (480 × 320 pixels)
  26. 26. Couleurs 16 bits</li></li></ul><li>Preuve de sa portabilité – Futur d’Android<br />13<br />Et si Android n’était pas seulement conçu pour les smartphone?<br />Android sur un NetBook<br />
  27. 27. Développementd’Applications<br />14<br /> Possibilité de créer ses propres applications<br />Environnement de développement<br />Android SDK<br /> Plugin Eclipse<br /> Émulateur, outils de débuggage, etc…<br /> Langage Java<br />?<br />
  28. 28. Intégration des applications Google<br />15<br /> Barre de recherche « Google Search »<br />Gmail<br /> Google Talk (IM)<br /> Navigateur Web<br />Gmaps<br /> Google StreetView<br />
  29. 29. Exemples d’applications : Android Market<br />16<br />Géolocalisation<br />Orientation<br />Tourisme<br />Géolocalisation<br />Travail<br />Voisinage<br />Google Maps<br />Voyage<br />Achats<br />Covoiturage<br />
  30. 30. Points d’accès d’Android<br />17<br />Point de vue constructeur<br />Point de vue utilisateur<br />Point de vue développeur<br />Point de vue bidouilleur<br />Système Linux + Java<br />Système fonctionnel, intuitif, évolutif<br />Application développées en syntaxe Java<br />SDK complet fourni<br />Projet Open Source <br />C++ / Java<br />
  31. 31. Architecture<br />18<br />APPLICATIONS<br />Home<br />Contacts<br />Phone<br />Browser<br />…<br />APPLICATION FRAMEWORK<br />Activity Manager<br />Window Manager<br />Content Providers<br />View System<br />Package Manager<br />Telephony Manager<br />Resource Manager<br />Location Manager<br />Notification Manager<br />ANDROID RUNTIME<br />JNI<br />LIBRARIES<br />CoreLibraries<br />Surface Manager<br />Media Framework<br />SQL Lite<br />Dalvik Virtual Machine<br />OpenGL<br />Audio Manager<br />WebKit<br />SGL<br />SSL<br />Libc<br />LINUX KERNEL<br />Display Driver<br />Camera Driver<br />Flash Memory Driver<br />Binder (IPC) Driver<br />Keypad Driver<br />WiFi Driver<br />Audio Driver<br />Power Management<br />
  32. 32. Noyau d’Android<br />19<br />Architecture ARM<br />Basé sur Linux 2.6.24<br />Système de fichiers supporté : FAT32<br /> Support de TCP/IP, UDP,…<br />HARDWARE ABSTRACTION LAYER<br />Graphics<br />Audio<br />Camera<br />Bluetooth<br />GPS<br />WiFi<br />…<br />LINUX KERNEL<br />Display Driver<br />Camera Driver<br />Flash Memory Driver<br />Binder (IPC) Driver<br />Keypad Driver<br />WiFi Driver<br />Audio Driver<br />Power Management<br />
  33. 33. Adaptation aux besoins du mobile<br />20<br /><ul><li>Alarm : timers pour « réveiller » des périphériques
  34. 34. Ashmem : partage de mémoire entre processus
  35. 35. Binder : driver IPC pour la communication inter-processus
  36. 36. Power Management
  37. 37. Low Memory Killer
  38. 38. Kernel Debugger
  39. 39. Logger</li></ul>HARDWARE ABSTRACTION LAYER<br />Graphics<br />Audio<br />Camera<br />Bluetooth<br />GPS<br />WiFi<br />…<br />LINUX KERNEL<br />Display Driver<br />Camera Driver<br />Flash Memory Driver<br />Binder (IPC) Driver<br />Keypad Driver<br />WiFi Driver<br />Audio Driver<br />Power Management<br />
  40. 40. Librairies<br />21<br />LIBRARIES<br />Surface Manager<br />Media Framework<br />SQL Lite<br />OpenGL<br />Audio Manager<br />WebKit<br />SGL<br />SSL<br />Libc<br />LINUX KERNEL<br />Display Driver<br />Camera Driver<br />Flash Memory Driver<br />Binder (IPC) Driver<br />Keypad Driver<br />WiFi Driver<br />Audio Driver<br />Power Management<br />
  41. 41. Surface Manager<br />22<br />Application 1<br />Surface Flinger<br />Application 2<br />Écran<br />(Frame Buffer)<br />
  42. 42. Audio Manager<br />23<br />Sonnerie d’appel<br />Audio Flinger<br />Oreillette<br />Lecteur MP3<br />Écouteurs<br />
  43. 43. Machine Virtuelle Dalvik<br />24<br />ANDROID RUNTIME<br />LIBRARIES<br />CoreLibraries<br />Surface Manager<br />Media Framework<br />SQL Lite<br />Dalvik Virtual Machine<br />OpenGL<br />Audio Manager<br />WebKit<br />SGL<br />SSL<br />Libc<br />LINUX KERNEL<br />Display Driver<br />Camera Driver<br />Flash Memory Driver<br />Binder (IPC) Driver<br />Keypad Driver<br />WiFi Driver<br />Audio Driver<br />Power Management<br />
  44. 44. Machine Virtuelle Dalvik<br />25<br />Nouvelle instance pour chaque processus : Applications indépendantes<br /> Exécute des fichiers .dex (Dalvik Executable)<br />Dalvik core class library fournit une base de développement proche de java SE, adapté au mobile<br />
  45. 45. Framework & fondationsdes applications<br />26<br />APPLICATION FRAMEWORK<br />Activity Manager<br />Window Manager<br />Content Providers<br />View System<br />Package Manager<br />Telephony Manager<br />Resource Manager<br />Location Manager<br />Notification Manager<br />ANDROID RUNTIME<br />JNI<br />LIBRARIES<br />CoreLibraries<br />Surface Manager<br />Media Framework<br />SQL Lite<br />Dalvik Virtual Machine<br />OpenGL<br />Audio Manager<br />WebKit<br />SGL<br />SSL<br />Libc<br />LINUX KERNEL<br />Display Driver<br />Camera Driver<br />Flash Memory Driver<br />Binder (IPC) Driver<br />Keypad Driver<br />WiFi Driver<br />Audio Driver<br />Power Management<br />
  46. 46. Intents<br />27<br /> Intent :<br /><ul><li> Requête; Description d’une action à effectuer
  47. 47. Fait le lien entre différentes applications</li></ul> Décrit par :<br /><ul><li> Une action(VIEW, EDIT, MAIN,…)
  48. 48. La donnée à traiter (sous forme d’URI)</li></ul>Types d’Intent :<br /><ul><li> Explicite (référence exacte)
  49. 49. Implicite (description)</li></li></ul><li>Intents<br />28<br />Intent Resolver<br />Intent 1 App.A<br />Intent 2 App.B<br />.<br />.<br />Publication<br />Edit ContactContacts<br />View Contact Contacts <br />IntentFilter<br />VIEW<br />EDIT<br />StartActivity(View Contact)<br />1<br />2<br />Echange<br />3<br />Messagerie<br />Contacts<br />
  50. 50. 29<br />Intent Filter<br />Objectif : Description du handler<br />Publication d’IntentFilters par les activités<br />IntentFilter décrivent les capacités de l’application.<br />&lt;intent-filter&gt;<br /> &lt;actionandroid:value=&quot;android.intent.action.VIEW&quot;/&gt;<br /> &lt;actionandroid:value=&quot;android.intent.action.EDIT&quot;/&gt;<br /> &lt;actionandroid:value=&quot;android.intent.action.PICK&quot;/&gt;<br /> &lt;category android:value=&quot;android.intent.category.DEFAULT&quot; /&gt;<br /> &lt;type<br /> android:value=&quot;vnd.android.cursor.dir/vnd.google.contact&quot; /&gt;<br />&lt;/intent-filter&gt;<br />
  51. 51. Les URIs - Utilisation<br />30<br />Exemples d’URI:<br />Intent<br />EDIT_ACTION<br />Ouvre l’application de géo-localisation à la position donnée (latitude, longitude).<br />VIEW_ACTION<br />geo:<br />tel:<br />125<br />people/<br />content:<br />google.streetview:<br />//contacts/<br />25,32<br />123<br />cbll=25,32<br />Appelle le numéro 123<br />CALL_ACTION<br />VIEW_ACTION<br />&cbp=1,yaw,,pitch,zoom<br />void startActivity(Intent intent) ;<br />void sendBroadcast(Intent intent)boolean bindService(Intent service, int flags)<br />ComponentName startService(Intent service)<br />
  52. 52. Notification Manager<br />31<br />Applications peuvent s’exécuter simultanément<br />Barre de notifications<br />Notificationsd’événements du background<br />Mise en place facilité par le Notification Manager<br />Différentes formes de notifications :<br /><ul><li> LED
  53. 53. Son
  54. 54. Vibreur
  55. 55. Barre de notification (icône)</li></li></ul><li>Composants d’une application<br />32<br />Activity<br />Broadcast Receiver<br />Service<br />Content Provider<br />
  56. 56. ContentProvider<br />33<br />SYSTEM<br />APK<br />APK<br />service<br />Activity<br />service<br />Activity<br />Activity<br />SQLite<br />Data<br />XML<br />Remote data<br />
  57. 57. ContentProvider<br />34<br />SYSTEM<br />APK<br />APK<br />service<br />Activity<br />service<br />Activity<br />Activity<br />ContentProvider<br />SQLite<br />Data<br />XML<br />Remote data<br />
  58. 58. Les URIs<br />35<br />Exemples d’URI d’un content provider:<br />Activity<br />IntentReceiver<br />Service<br />Content Provider<br />125<br />people/<br />content:<br />53<br />users/<br />content:<br />//contacts/<br />//com.maCompanie.monApp/<br />A<br />Préfixe d’accès aux données, type d’URI<br />B<br />Identifiant ou type du content provider à consulter<br />C<br />0 ou plusieurs segments, permettent de déterminer le type de données <br />D<br />Enregistrement spécifique éventuellement demandé (identifiant, référence)<br />&lt;providerclass=&quot;.NotePadProvider&quot;android:authorities=&quot;com.google.provider.NotePad&quot;/&gt;<br />
  59. 59. ContentProvider<br />36<br />125<br />people/<br />content:<br />URI :<br />//contacts/<br />Activity<br />IntentReceiver<br />Content Providers<br />Applications<br />Service<br />Content Provider<br />URI<br />Browser<br />Annuaire<br />Settings<br />ContentResolver<br />+ delete()<br />+ insert()<br />+ notifyChange()<br />+ query()<br />+ update()<br />Résultat<br />Contacts<br />Lecteur MP3<br />MediaStore.Images<br />MediaStore.Audio<br />
  60. 60. Activity<br />37<br />Objet qui possède un cycle de vie<br />Code qui réalise un traitement<br />Activity<br />IntentReceiver<br />Point d’entrée d’une application<br />Service<br />Content Provider<br />Généralement, uneActivityafficheune UI<br />&lt;activityclass=&quot;.NoteEditor&quot;android:label=&quot;@string/title_note&quot;&gt;<br />&lt;intent-filterandroid:label=&quot;@string/resolve_edit&quot;&gt;<br />&lt;actionandroid:value=&quot;android.intent.action.VIEW&quot;/&gt;<br />&lt;actionandroid:value=&quot;android.intent.action.EDIT&quot;/&gt;<br />&lt;categoryandroid:value=&quot;android.intent.category.DEFAULT&quot;/&gt;<br />&lt;typeandroid:value=&quot;vnd.android.cursor.item/vnd.google.note&quot;/&gt;<br />&lt;/intent-filter&gt;<br />&lt;/activity&gt;<br />
  61. 61. Broadcast receiver<br />38<br />Broadcast receiver permet de réagir à des évènements extérieurs à l’application<br />Activity<br />BroadcastReceiver<br />Service<br />Content Provider<br />.<br />Permet de réveiller une application<br />Un Intent peut être boadcasté; on peut utiliser un broadcast receiver pour gérer ce type d’evt<br />Permet également de réagir à des notification du système (évènements extérieurs/matériels).<br />&lt;receiverandroid:name=&quot;.app.OneShotAlarm&quot;android:process=&quot;:remote&quot;/&gt;<br /> <br />
  62. 62. Service<br />39<br />Activity<br />IntentReceiver<br />Composante sans GUI<br />Activité de longue durée<br />Service<br />Content Provider<br />Service interne : Context.startService()<br />Service externe : Context.bindService()<br />Communication via une interface<br />Ex Media Player : pause, lecture, stop, etc<br />
  63. 63. Service : AndroidManifest<br />40<br />Activity<br />IntentReceiver<br />&lt;serviceandroid:name=&quot;.app.RemoteService&quot;android:process=&quot;:remote&quot;&gt;<br />&lt;intent-filter&gt;<br />&lt;!-- These are the interfaces supported by the service, which<br /> you can bind to. --&gt;<br />&lt;actionandroid:name=&quot;com.example.android.apis.app.IRemoteService&quot;/&gt;<br />&lt;!-- This is an action code you can use to select the service<br /> without explicitly supplying the implementation class. --&gt;<br />&lt;actionandroid:name=&quot;com.example.android.apis.app.REMOTE_SERVICE&quot;/&gt;<br />&lt;/intent-filter&gt;<br />&lt;/service&gt;<br />Service<br />Content Provider<br />
  64. 64. AndroidManifest complet<br />41<br />&lt;manifestxmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;<br />package=&quot;com.android.notepad&quot;&gt;<br />&lt;applicationandroid:icon=&quot;@drawable/app_notes&quot;android:label=&quot;@string/app_name&quot;&gt;<br />&lt;activityclass=&quot;.NotesList&quot;android:label=&quot;@string/title_notes_list&quot;&gt;<br />&lt;intent-filter&gt;<br />&lt;actionandroid:value=&quot;android.intent.action.MAIN&quot;/&gt;<br />&lt;categoryandroid:value=&quot;android.intent.category.LAUNCHER&quot;/&gt;<br />&lt;/intent-filter&gt;<br />&lt;/activity&gt;<br /> &lt;providerclass=&quot;.NotePadProvider&quot;android:authorities=&quot;com.google.provider.NotePad&quot;/&gt; <br /> &lt;serviceandroid:name=&quot;.app.RemoteService&quot;android:process=&quot;:remote&quot;&gt;<br />&lt;intent-filter&gt;<br />&lt;actionandroid:name=&quot;com.example.android.apis.app.IRemoteService&quot;/&gt;<br />&lt;/intent-filter&gt;<br /> &lt;/service&gt;<br />&lt;receiverandroid:name=&quot;.app.OneShotAlarm&quot;android:process=&quot;:remote&quot;/&gt;<br />&lt;/application&gt;<br />&lt;/manifest&gt;<br />Activity<br />IntentReceiver<br />Activity<br />Service<br />Content Provider<br />Content Provider<br />Service<br />IntentReceiver<br />
  65. 65. Cycle de vie d’une Activité<br />42<br />OnCreate()<br />Allocation des ressources<br />Activity<br />IntentReceiver<br />OnStart()<br />Affichage à l’écran<br />Service<br />Content Provider<br />Running<br />OnResume()<br />Passage au premier plan<br />Paused<br />4 états :<br /><ul><li> active/running
  66. 66. paused
  67. 67. stopped
  68. 68. killed/shut down</li></ul>OnPause()<br />Passage en arrière plan<br />Stopped<br />OnStop()<br />Arrêt de l’exécution<br />Killed<br />OnDestroy()<br />Libération des ressources<br />
  69. 69. Cycle de vie d’une Activité<br />43<br />Retour à l’application<br />New Activity<br />1. OnCreate()<br />2. OnStart()<br />3. OnResume()<br />Application<br />Killed<br />Running<br />(Foreground)<br />OnFreeze()<br />OnPause()<br />OnResume()<br />Besoin de mémoire<br />3. OnResume()<br />2. OnStart()<br />1. OnRestart()<br />Paused<br />(Background)<br />Application plus visible<br />OnStop()<br />Stopped<br />(Plus visible)<br />L’utilisateur quitte<br />OnDestroy()<br />Destroyed<br />
  70. 70. Hiérarchie des processus<br />44<br />Hiérarchie des processus<br />ForegroundProcess<br />Activité<br />Importance<br />Visible Process<br />Activité en arrière plan<br />Processus des composants « Service » disponibles en arrière plan<br />Service Process<br />Background Process<br />Processus en arrière plan, non visible.<br />EmptyProcess<br />Cache pour les processus<br />
  71. 71. Les applications<br />45<br />APPLICATIONS<br />Home<br />Contacts<br />Phone<br />Browser<br />…<br />APPLICATION FRAMEWORK<br />Activity Manager<br />Window Manager<br />Content Providers<br />View System<br />Package Manager<br />Telephony Manager<br />Resource Manager<br />Location Manager<br />Notification Manager<br />ANDROID RUNTIME<br />JNI<br />LIBRARIES<br />CoreLibraries<br />Surface Manager<br />Media Framework<br />SQL Lite<br />Dalvik Virtual Machine<br />OpenGL<br />Audio Manager<br />WebKit<br />SGL<br />SSL<br />Libc<br />LINUX KERNEL<br />Display Driver<br />Camera Driver<br />Flash Memory Driver<br />Binder (IPC) Driver<br />Keypad Driver<br />WiFi Driver<br />Audio Driver<br />Power Management<br />
  72. 72. Développement en Java : Méthode classique<br />46<br />packagecom.android.hello;<br /> <br />import android.app.Activity;<br />importandroid.os.Bundle;<br />importandroid.widget.TextView;<br /> <br />publicclassHelloAndroidextends Activity {<br />/**Calledwhentheactivityisfirstcreated.*/<br />@Override<br />publicvoidonCreate(Bundle savedInstanceState) {<br />super.onCreate(savedInstanceState);<br />TextViewtv = newTextView(this);<br />tv.setText(&quot;Hello, Android&quot;);<br />setContentView(tv);<br />}<br />}<br />HelloAndroid.java<br />JAVA<br />(uniquement)<br />1 champ de texte<br />
  73. 73. Séparation Présentation / Métier<br />47<br />packagecom.android.hello;<br /> <br />import android.app.Activity;<br />importandroid.os.Bundle;<br />importandroid.widget.TextView;<br /> <br />publicclassHelloAndroidextends Activity {<br />/**Calledwhentheactivityisfirstcreated.*/<br />@Override<br />publicvoidonCreate(Bundle savedInstanceState) {<br />super.onCreate(savedInstanceState);<br />setContentView(R.layout.main);<br />}<br />}<br />HelloAndroid.java<br />JAVA<br />métier<br />&lt;?xmlversion=&quot;1.0&quot;encoding=&quot;utf-8&quot;?&gt;<br />&lt;TextViewxmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;<br />android:layout_width=&quot;fill_parent&quot;<br />android:layout_height=&quot;fill_parent&quot;<br />android:text=&quot;@string/hello&quot;/&gt;<br />XML <br />vues<br />main.xml<br />
  74. 74. Interfaçage des ressources<br />48<br />Génération automatique<br />Description du layout<br />packagecom.android.hello;<br /> <br />publicfinalclass R {<br />publicstaticfinalclassattr {<br /> }<br />publicstaticfinalclassdrawable {<br />publicstaticfinalint icon=0x7f020000;<br /> }<br />publicstaticfinalclass layout {<br />publicstaticfinalint main=0x7f030000;<br /> }<br />publicstaticfinalclass string {<br />publicstaticfinalintapp_name=0x7f040001;<br />publicstaticfinalint hello=0x7f040000;<br />}<br />}<br />R.java<br />icon.png<br />Image<br />main.xml<br />Description du layout<br />strings.xml<br />Étiquettes Texte<br />
  75. 75. HelloWorld : AndroidManifest.xml<br />49<br />&lt;?xmlversion=&quot;1.0&quot;encoding=&quot;utf-8&quot;?&gt;<br />&lt;manifestxmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;<br />package=&quot;com.android.hello&quot;<br />android:versionCode=&quot;1&quot;<br />android:versionName=&quot;1.0.0&quot;&gt;<br />&lt;applicationandroid:icon=&quot;@drawable/icon&quot;android:label=&quot;@string/app_name&quot;&gt;<br />&lt;activityandroid:name=&quot;.HelloAndroid&quot;<br />android:label=&quot;@string/app_name&quot;&gt;<br />&lt;intent-filter&gt;<br />&lt;actionandroid:name=&quot;android.intent.action.MAIN&quot;/&gt;<br />&lt;categoryandroid:name=&quot;android.intent.category.LAUNCHER&quot;/&gt;<br />&lt;/intent-filter&gt;<br />&lt;/activity&gt;<br />&lt;/application&gt;<br />&lt;/manifest&gt;<br />
  76. 76. Compilation et Déploiement d’une Application<br />50<br />Byte-code (optimisé)<br />Sources<br />.dex<br />.java<br />.class<br />.png<br />.xml<br />.apk<br />/data/app/<br />Ressources + Manifest<br />Application compilée<br />
  77. 77. HelloWorld<br />51<br />
  78. 78. Vidéos StreetView + Compass<br />52<br />
  79. 79. ?<br />Vidéos StreetView + Compass<br />53<br />
  80. 80.
  81. 81. Vidéo StreetView + Compass<br />55<br />
  82. 82. Vidéo StreetView + Compass<br />56<br />
  83. 83. 57<br />Symbian&apos;s chief technical advantage today is the platform&apos;s maturity, and <br />more recently, its real-time kernel.<br />?<br />
  84. 84. Annexe 1 : Les partenaires de l’OpenHanset Alliance<br />58<br />
  85. 85. Cycle de vie d’une Activité<br />59<br />OnCreate()<br />Retour à l’application<br />Activity<br />IntentReceiver<br />OnStart()<br />Service<br />Content Provider<br />Application killed<br />OnResume()<br />OnRestart()<br />A refaire (diag d’états)<br />Autre activité lancée<br />Activité plus visible<br />Passage au premier plan<br />Passage au premier plan<br />OnPause()<br />Besoin de mémoire pour une application plus prioritaire<br />OnStop()<br />OnDestroy()<br />
  86. 86. IPC<br />60<br />IPC, Binder, AIDL<br />Lightweigth, powerful mean<br />Binder : driver for IPC<br />Appelssynchones entre processus<br />Passage de paramètres<br /><ul><li> AIDL : Android Interface Definition Language
  87. 87. IDL pour réaliser une communication interprocessus (IPC)</li></ul>When a “Service” isusing IPC, an AIDL description of itsfeaturesisalsoneeded. <br />• Android Interface DefinitionLanguage (AIDL) isused to generate code to allow communication betweentwoprocessesthrough IPC <br />• This mechanismis interface-based, similar to Corba (Unix) or COM (windows) but Iighterweight<br />• Withthisspecific mode, the ‘Service” isstartedthrough the binder and not with“startService()” <br />? A refaire ?<br />
  88. 88. 61<br />Booter Android<br />?<br />

×