Presentation Android
Upcoming SlideShare
Loading in...5
×
 

Presentation Android

on

  • 21,425 views

Présentation & Introduction à Android -

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

Statistics

Views

Total Views
21,425
Views on SlideShare
19,965
Embed Views
1,460

Actions

Likes
8
Downloads
933
Comments
3

21 Embeds 1,460

http://www.frandroid.com 728
http://www.archoslounge.net 520
http://www.slideshare.net 104
http://archoslounge.net 58
http://www.scoop.it 16
http://www.jean-collas.fr 10
http://blogofboubou.blogspot.com 9
http://localhost:3543 2
http://webwarper.net 1
http://blogofboubou.blogspot.fr 1
http://static.slidesharecdn.com 1
http://labrousse.homedns.org 1
http://74.125.53.132 1
http://72.14.235.132 1
http://74.125.93.132 1
http://209.85.229.132 1
http://72.14.205.132 1
http://209.85.227.132 1
http://66.196.80.202 1
http://72.14.247.132 1
http://74.125.127.132 1
More...

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • Très bon travail ;-)
    Merci
    Are you sure you want to
    Your message goes here
    Processing…
  • Bon Travail :)
    Are you sure you want to
    Your message goes here
    Processing…
  • Très bon travail de présentation! Félicitations pour ce travail de synthèse.
    Arnaud FARINE
    http://Www.expertiseandroid.com
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Presentation Android Presentation Android Presentation Transcript

  • 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
  • Ouverture Jean Collas, Réda Sebbani, Ghislain Deffrasnes
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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 sur un NetBook
  • Intégration des applications Google Barre de recherche « Google Search » Gmail Google Talk (IM) Navigateur Web Gmaps Google StreetView
  • Exemples d’applications : Android Market Géolocalisation Orientation Tourisme Géolocalisation Travail Voisinage Google Maps Voyage Achats Covoiturage
  • 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
  • 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
  • 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
  • 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
  • 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
  • Surface Manager Application 1 Surface Flinger Application 2 Écran (Frame Buffer)
  • Audio Manager Sonnerie d’appel Oreillette Audio Flinger Lecteur MP3 Écouteurs
  • 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
  • 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
  • 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
  • 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)
  • 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
  • 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>
  • 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)
  • 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)
  • Composants d’une application Broadcast Activity Receiver Content Service Provider
  • Content Provider SYSTEM APK APK service Activity service Activity Activity Data XML SQLite Remote data
  • Content Provider APK APK SYSTEM service Activity service Activity Activity ContentProvider Data XML SQLite Remote data
  • 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; />
  • 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
  • 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>
  • 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; />
  • 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
  • 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>
  • 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>
  • 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
  • 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
  • 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
  • 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
  • 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); } }
  • 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
  • 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 } }
  • Compilation et Déploiement d’une Application Byte-code Sources (optimisé) .dex .java .class .apk /data/app/ Ressources + Manifest Application .png compilée .xml
  • HelloWorld
  • Vidéos StreetView + Compass
  • ? Vidéos StreetView + Compass
  • Vidéo StreetView + Compass
  • Vidéo StreetView + Compass
  • Booter Android