Introduction à Android by Jean Collas, Ghislain Deffrasne, Reda Sebbani is licensed
                         under a Creat...
Ouverture




Jean Collas, Réda Sebbani, Ghislain Deffrasnes
Contexte
Contexte

             Téléphonie Mobile : Smart Phone

             Développement logiciel pour mobiles

       ...
Contexte Concurrentiel

Systèmes d’exploitation pour Smart phone :

                                                      ...
Internet & Google


       Fondé en 98, croissance constante

       Multiples domaines de l’informatique :
       Recherc...
Points forts d’Android
Points fort d’Android

   Point de vue constructeur    Point de vue utilisateur

                  ...
Historique
                                  Novembre 2008
  Android 1.0 et SDK release 2
                                ...
Open Handset Alliance
   Consortium créé fin 2007                       47 compagnies

 Fabricants de semi-conducteurs
 ...
T-Mobile G1
T-Mobile G1 (HTC)


     1er téléphone avec Android
     De 180 à 400 $
     Wi-fi et Bluetooth
     GPS
 ...
De nouveaux mobiles


       LG




                      L’agora par Kogan
Preuve de sa portabilité – Futur d’Android



 Et si Android n’était pas seulement
 conçu pour les smartphone?



 Android...
Intégration des applications Google



         Barre de recherche « Google Search »
         Gmail
         Google Talk (...
Exemples d’applications : Android Market


                                 Géolocalisation
                   Orientation...
Points d’accès d’Android

   Point de vue constructeur    Point de vue utilisateur

                                 Systè...
Architecture

                                         APPLICATIONS
      Home              Contacts            Phone     ...
Noyau d’Android



   Architecture ARM
    Basé sur Linux 2.6.24
   Système de fichiers supporté : FAT32
    Support de TC...
Adaptation aux besoins du mobile

  • Alarm : timers pour « réveiller » des périphériques
  • Ashmem : partage de mémoire ...
Librairies




                     LIBRARIES
   Surface Manager    Media Framework      SQL Lite

      OpenGL           ...
Surface Manager


   Application 1




                   Surface Flinger

   Application 2

                             ...
Audio Manager




  Sonnerie d’appel                   Oreillette


                     Audio Flinger


    Lecteur MP3  ...
Machine Virtuelle Dalvik




                                                              ANDROID RUNTIME
               ...
Machine Virtuelle Dalvik



       Nouvelle instance pour chaque processus :
       Applications indépendantes

        Ex...
Framework & fondations des applications



                                 APPLICATION FRAMEWORK
    Activity Manager    ...
Intents


  Intent :
      Requête; Description d’une action à effectuer
      Fait le lien entre différentes applicatio...
Intents



                                      Intent
                                     Resolver

                   ...
Intent Filter


  Objectif : Description du handler

  Publication d’IntentFilters par les activités

  IntentFilter décri...
Les URIs - Utilisation

     Intent               Exemples d’URI:
                   content: //contacts/ people/ 125
   E...
Notification Manager

Applications peuvent s’exécuter simultanément

                      Barre de notifications
Notifica...
Composants d’une application




                               Broadcast
             Activity           Receiver



    ...
Content Provider

                                               SYSTEM                       APK
            APK
  servic...
Content Provider

                                                                            APK
            APK         ...
Les URIs
                                                                                                Intent
          ...
Content Provider
                                                                       Intent
                           ...
Activity
                                                                                      Intent
           Objet qui...
Broadcast receiver
                                                                          Broadcast
                   ...
Service
                                                            Intent
                                               ...
Service : AndroidManifest
                                                                                Intent
         ...
AndroidManifest complet
<manifest xmlns:android=quot;http://schemas.android.com/apk/res/androidquot;
   package=quot;com.a...
Cycle de vie d’une Activité

               Intent
   Activity
                                                 Allocation...
Cycle de vie d’une Activité
                                                               Retour à
                      ...
Hiérarchie des processus

 Hiérarchie des processus

               Foreground Process   Activité


                 Visib...
Les applications

                                         APPLICATIONS
      Home              Contacts            Phone ...
Développement en Java : Méthode classique


 package com.android.hello;            HelloAndroid.java
 import android.app.A...
Séparation Présentation / Métier

 package com.android.hello;              HelloAndroid.java

                            ...
Interfaçage des ressources

                                                              Génération
                     ...
Compilation et Déploiement d’une Application


                                  Byte-code
 Sources
                      ...
HelloWorld
Vidéos StreetView + Compass
?
Vidéos StreetView + Compass
Vidéo StreetView + Compass
Vidéo StreetView + Compass
Booter Android
Presentation Android
Upcoming SlideShare
Loading in …5
×

Presentation Android

15,616
-1

Published on

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

Published in: Self Improvement
4 Comments
10 Likes
Statistics
Notes
  • nice mrc
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Très bon travail ;-)
    Merci
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Bon Travail :)
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Très bon travail de présentation! Félicitations pour ce travail de synthèse.
    Arnaud FARINE
    http://Www.expertiseandroid.com
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
15,616
On Slideshare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
1,008
Comments
4
Likes
10
Embeds 0
No embeds

No notes for slide

Presentation Android

  1. 1. Introduction à Android by Jean Collas, Ghislain Deffrasne, Reda Sebbani is licensed under a Creative Commons Attribution 2.0 France License. Original at http://www.jean-collas.fr/android
  2. 2. Ouverture Jean Collas, Réda Sebbani, Ghislain Deffrasnes
  3. 3. Contexte Contexte Téléphonie Mobile : Smart Phone Développement logiciel pour mobiles Chiffre d’affaire énorme Windows RIM Mobile 40 millions de smartphones / trimestre (2008) Symbian iPhone OS
  4. 4. Contexte Concurrentiel Systèmes d’exploitation pour Smart phone : 70% 60% 50% 40% 30% 20% 10% 0% 2007 2008 Marché en constante augmentation (+28% en 1 an, 31M -> 40M) Possibilités d’évolution énormes avec un bon produit
  5. 5. Internet & Google Fondé en 98, croissance constante Multiples domaines de l’informatique : Recherche, cartographie, vidéo, conception 3D, suite bureautique, publicité, navigateur, … Politique de financement par la publicité Attaque du monde mobile par la source : le système d’exploitation Android
  6. 6. Points forts d’Android Points fort d’Android Point de vue constructeur Point de vue utilisateur Système fonctionnel, Système Linux + Java intuitif, évolutif Point de vue bidouilleur Point de vue développeur Application développées Projet Open Source en syntaxe Java C++ / Java SDK complet fourni
  7. 7. Historique Novembre 2008 Android 1.0 et SDK release 2 T-Mobile G1 Octobre 2008 Android : Open Source Android 1.0 et SDK release 1 Septembre 2008 Android Market Août 2008 Avril 2008 Developer Challenge Open Handset Alliance Novembre 2007 Annonce d’Android SDK pour Android Développement d’Android Start-up Android Août 2005
  8. 8. Open Handset Alliance  Consortium créé fin 2007  47 compagnies Fabricants de semi-conducteurs Opérateurs de téléphonie mobile Fabricants d'appareils mobiles Entreprises de commercialisation Fabricants de logiciels  But : développer des normes ouvertes pour les appareils de téléphonie mobile
  9. 9. T-Mobile G1 T-Mobile G1 (HTC)  1er téléphone avec Android  De 180 à 400 $  Wi-fi et Bluetooth  GPS  Accéléromètres  Caméra  Écran tactile
  10. 10. De nouveaux mobiles LG L’agora par Kogan
  11. 11. Preuve de sa portabilité – Futur d’Android Et si Android n’était pas seulement conçu pour les smartphone? Android sur un NetBook
  12. 12. Intégration des applications Google Barre de recherche « Google Search » Gmail Google Talk (IM) Navigateur Web Gmaps Google StreetView
  13. 13. Exemples d’applications : Android Market Géolocalisation Orientation Tourisme Géolocalisation Travail Voisinage Google Maps Voyage Achats Covoiturage
  14. 14. Points d’accès d’Android Point de vue constructeur Point de vue utilisateur Système fonctionnel, Système Linux + Java intuitif, évolutif Point de vue bidouilleur Point de vue développeur Application développées Projet Open Source en syntaxe Java C++ / Java SDK complet fourni
  15. 15. Architecture APPLICATIONS Home Contacts Phone Browser … APPLICATION FRAMEWORK Activity Manager Window Manager Content Providers View System Package Telephony Resource Location Notification Manager Manager Manager Manager Manager JNI ANDROID RUNTIME LIBRARIES Core Libraries Surface Manager Media Framework SQL Lite Dalvik Virtual Machine OpenGL Audio Manager WebKit SGL SSL Libc LINUX KERNEL Display Driver Camera Driver Flash Memory Driver Binder (IPC) Driver Keypad Driver WiFi Driver Audio Driver Power Management
  16. 16. Noyau d’Android Architecture ARM Basé sur Linux 2.6.24 Système de fichiers supporté : FAT32 Support de TCP/IP, UDP,… HARDWARE ABSTRACTION LAYER Graphics Audio Camera Bluetooth GPS WiFi … LINUX KERNEL Display Driver Camera Driver Flash Memory Driver Binder (IPC) Driver Keypad Driver WiFi Driver Audio Driver Power Management
  17. 17. Adaptation aux besoins du mobile • 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 HARDWARE ABSTRACTION LAYER Graphics Audio Camera Bluetooth GPS WiFi … LINUX KERNEL Display Driver Camera Driver Flash Memory Driver Binder (IPC) Driver Keypad Driver WiFi Driver Audio Driver Power Management
  18. 18. Librairies LIBRARIES Surface Manager Media Framework SQL Lite OpenGL Audio Manager WebKit SGL SSL Libc LINUX KERNEL Display Driver Camera Driver Flash Memory Driver Binder (IPC) Driver Keypad Driver WiFi Driver Audio Driver Power Management
  19. 19. Surface Manager Application 1 Surface Flinger Application 2 Écran (Frame Buffer)
  20. 20. Audio Manager Sonnerie d’appel Oreillette Audio Flinger Lecteur MP3 Écouteurs
  21. 21. Machine Virtuelle Dalvik ANDROID RUNTIME LIBRARIES Core Libraries Surface Manager Media Framework SQL Lite Dalvik Virtual Machine OpenGL Audio Manager WebKit SGL SSL Libc LINUX KERNEL Display Driver Camera Driver Flash Memory Driver Binder (IPC) Driver Keypad Driver WiFi Driver Audio Driver Power Management
  22. 22. Machine Virtuelle Dalvik Nouvelle instance pour chaque processus : Applications indépendantes Exécute des fichiers .dex (Dalvik Executable) Dalvik core class library fournit une base de développement proche de java SE, adapté au mobile
  23. 23. Framework & fondations des applications APPLICATION FRAMEWORK Activity Manager Window Manager Content Providers View System Package Telephony Resource Location Notification Manager Manager Manager Manager Manager JNI ANDROID RUNTIME LIBRARIES Core Libraries Surface Manager Media Framework SQL Lite Dalvik Virtual Machine OpenGL Audio Manager WebKit SGL SSL Libc LINUX KERNEL Display Driver Camera Driver Flash Memory Driver Binder (IPC) Driver Keypad Driver WiFi Driver Audio Driver Power Management
  24. 24. Intents Intent :  Requête; Description d’une action à effectuer  Fait le lien entre différentes applications Décrit par :  Une action (VIEW, EDIT, MAIN,…)  La donnée à traiter (sous forme d’URI) Types d’Intent :  Explicite (référence exacte)  Implicite (description)
  25. 25. Intents Intent Resolver Intent 1 App.A Intent 2 App.B Publication Edit ContactContacts IntentFilter . View Contact Contacts VIEW . EDIT StartActivity(View Contact) 2 1 Echange 3 Messagerie Contacts
  26. 26. Intent Filter Objectif : Description du handler Publication d’IntentFilters par les activités IntentFilter décrivent les capacités de l’application. <intent-filter> <action android:value=quot;android.intent.action.VIEWquot; /> <action android:value=quot;android.intent.action.EDITquot; /> <action android:value=quot;android.intent.action.PICKquot; /> <category android:value=quot;android.intent.category.DEFAULTquot; /> <type android:value=quot;vnd.android.cursor.dir/vnd.google.contactquot; /> </intent-filter>
  27. 27. Les URIs - Utilisation Intent Exemples d’URI: content: //contacts/ people/ 125 EDIT_ACTION Ouvre l’application de géo-localisation à geo: 25,32 VIEW_ACTION la position donnée (latitude, longitude). tel: 123 Appelle le numéro 123 CALL_ACTION google.streetview: cbll=25,32 &cbp=1,yaw,,pitch,zoom VIEW_ACTION void startActivity(Intent intent) ; void sendBroadcast(Intent intent) boolean bindService(Intent service, int flags) ComponentName startService(Intent service)
  28. 28. Notification Manager Applications peuvent s’exécuter simultanément Barre de notifications Notifications d’événements du background Mise en place facilité par le Notification Manager Différentes formes de notifications : - LED - Son - Vibreur - Barre de notification (icône)
  29. 29. Composants d’une application Broadcast Activity Receiver Content Service Provider
  30. 30. Content Provider SYSTEM APK APK service Activity service Activity Activity Data XML SQLite Remote data
  31. 31. Content Provider APK APK SYSTEM service Activity service Activity Activity ContentProvider Data XML SQLite Remote data
  32. 32. Les URIs Intent Activity Receiver Content Exemples d’URI d’un content provider: Service Provider content: //contacts/ people/ 125 content: //com.maCompanie.monApp/ users/ 53 A Préfixe d’accès aux données, type d’URI B Identifiant ou type du content provider à consulter C 0 ou plusieurs segments, permettent de déterminer le type de données D Enregistrement spécifique éventuellement demandé (identifiant, référence) <provider class=quot;.NotePadProviderquot;android:authorities=quot;com.google.provider.NotePadquot; />
  33. 33. Content Provider Intent Activity Receiver content: //contacts/ people/ 125 URI : Content Service Provider Applications Content Providers URI Browser Annuaire Settings ContentResolver + delete() Résultat + insert() Contacts + notifyChange() Lecteur MP3 + query() MediaStore.Images + update() MediaStore.Audio
  34. 34. Activity Intent Objet qui possède un cycle de vie Activity Receiver Content Service Provider Code qui réalise un traitement Point d’entrée d’une application Généralement, une Activity affiche une UI <activity class=quot;.NoteEditorquot; android:label=quot;@string/title_notequot;> <intent-filter android:label=quot;@string/resolve_editquot;> <action android:value=quot;android.intent.action.VIEWquot; /> <action android:value=quot;android.intent.action.EDITquot; /> <category android:value=quot;android.intent.category.DEFAULTquot; /> <type android:value=quot;vnd.android.cursor.item/vnd.google.notequot; /> </intent-filter> </activity>
  35. 35. Broadcast receiver Broadcast Activity Receiver Broadcast receiver permet de réagir à des Content Service évènements extérieurs à l’application Provider Permet de réveiller une application Un Intent peut être boadcasté; on peut utiliser un broadcast receiver pour gérer ce type d’evt Permet également de réagir à des notification du système (évènements extérieurs/matériels). <receiver android:name=quot;.app.OneShotAlarmquot; android:process=quot;:remotequot; />
  36. 36. Service Intent Activity Receiver Content Service Provider Composante sans GUI Activité de longue durée Service interne : Context.startService() Service externe : Context.bindService() Communication via une interface Ex Media Player : pause, lecture, stop, etc
  37. 37. Service : AndroidManifest Intent Activity Receiver Content Service Provider <service android:name=quot;.app.RemoteServicequot; android:process=quot;:remotequot;> <intent-filter> <!-- These are the interfaces supported by the service, which you can bind to. --> <action android:name=quot;com.example.android.apis.app.IRemoteServicequot; /> <!-- This is an action code you can use to select the service without explicitly supplying the implementation class. --> <action android:name=quot;com.example.android.apis.app.REMOTE_SERVICEquot; /> </intent-filter> </service>
  38. 38. AndroidManifest complet <manifest xmlns:android=quot;http://schemas.android.com/apk/res/androidquot; package=quot;com.android.notepadquot;> <application android:icon=quot;@drawable/app_notesquot; android:label=quot;@string/app_namequot;> <activity class=quot;.NotesListquot; android:label=quot;@string/title_notes_listquot;> <intent-filter> Activity <action android:value=quot;android.intent.action.MAINquot; /> <category android:value=quot;android.intent.category.LAUNCHERquot; /> </intent-filter> </activity> Content <provider class=quot;.NotePadProviderquot; android:authorities=quot;com.google.provider.NotePadquot;/> Provider <service android:name=quot;.app.RemoteServicequot; android:process=quot;:remotequot;> <intent-filter> <action android:name=quot;com.example.android.apis.app.IRemoteServicequot; /> Service </intent-filter> </service> Intent <receiver android:name=quot;.app.OneShotAlarmquot; android:process=quot;:remotequot; /> Receiver </application> </manifest>
  39. 39. Cycle de vie d’une Activité Intent Activity Allocation des ressources Receiver OnCreate() Content Service Provider Affichage à l’écran OnStart() Passage au premier plan OnResume() Running Passage en arrière plan OnPause() Paused Arrêt de l’exécution OnStop() Stopped OnDestroy() Libération des ressources Killed
  40. 40. Cycle de vie d’une Activité Retour à New Activity l’application 1. OnCreate() 2. OnStart() 3. OnResume() Application Running Killed (Foreground) OnFreeze() OnResume() OnPause() 3. OnResume() Besoin de Paused 2. OnStart() mémoire (Background) 1. OnRestart() Application OnStop() plus visible Stopped (Plus visible) L’utilisateur OnDestroy() quitte Destroyed
  41. 41. Hiérarchie des processus Hiérarchie des processus Foreground Process Activité Visible Process Activité en arrière plan Importance Processus des composants Service Process « Service » disponibles en arrière plan Background Process Processus en arrière plan, non visible. Empty Process Cache pour les processus
  42. 42. Les applications APPLICATIONS Home Contacts Phone Browser … APPLICATION FRAMEWORK Activity Manager Window Manager Content Providers View System Package Telephony Resource Location Notification Manager Manager Manager Manager Manager JNI ANDROID RUNTIME LIBRARIES Core Libraries Surface Manager Media Framework SQL Lite Dalvik Virtual Machine OpenGL Audio Manager WebKit SGL SSL Libc LINUX KERNEL Display Driver Camera Driver Flash Memory Driver Binder (IPC) Driver Keypad Driver WiFi Driver Audio Driver Power Management
  43. 43. Développement en Java : Méthode classique package com.android.hello; HelloAndroid.java import android.app.Activity; import android.os.Bundle; JAVA import android.widget.TextView; (uniquement) public class HelloAndroid extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView tv = new TextView(this); 1 champ de texte tv.setText(quot;Hello, Androidquot;); setContentView(tv); } }
  44. 44. Séparation Présentation / Métier package com.android.hello; HelloAndroid.java JAVA import android.app.Activity; import android.os.Bundle; import android.widget.TextView; métier public class HelloAndroid extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } } XML <?xml version=quot;1.0quot; encoding=quot;utf-8quot;?> <TextView xmlns:android=quot;http://schemas.android.com/apk/res/androidquot; vues android:layout_width=quot;fill_parentquot; android:layout_height=quot;fill_parentquot; android:text=quot;@string/helloquot;/> main.xml
  45. 45. Interfaçage des ressources Génération automatique Description du layout package com.android.hello; R.java public final class R { icon.png Image public static final class attr { } public static final class drawable { public static final int icon=0x7f020000; } Description main.xml public static final class layout { du layout public static final int main=0x7f030000; } public static final class string { public static final int app_name=0x7f040001; Étiquettes strings.xml public static final int hello=0x7f040000; Texte } }
  46. 46. Compilation et Déploiement d’une Application Byte-code Sources (optimisé) .dex .java .class .apk /data/app/ Ressources + Manifest Application .png compilée .xml
  47. 47. HelloWorld
  48. 48. Vidéos StreetView + Compass
  49. 49. ? Vidéos StreetView + Compass
  50. 50. Vidéo StreetView + Compass
  51. 51. Vidéo StreetView + Compass
  52. 52. Booter Android
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×