Présentation du système d’ exploitation Open Source ANDROID

Commission OpenSource Telecom Valley
- Jeudi 2 Juillet 2009 -

Jeudi 2 Juillet 2009

SOMMAIRE
 Introduction : Commission Open Source Telecom Valley  marché Android et les enjeux - positionnement et dernières Le

avancées - Pascal Flamand - Janua
 Anatomie de la plateforme Android et environnement de

développement - Arnaud Farine - Expertise@ndroid
 Pause café  Intégration d'un provider cryptographique / module Kernel / Framework

Dalvik - retour d'expérience - Nicolas Ponsini - Trusted Logic
 Intégration d'une application de géolocalisation "off board" sous

Android - retour d'expérience - Christophe Tomasini - Altran
 Q/R avec la salle, partage d'expériences

Jeudi 2 Juillet 2009

SOMMAIRE
 Introduction : Commission Open Source Telecom Valley
 marché Android et les enjeux - positionnement et dernières Le

avancées - Pascal Flamand - Janua
 Anatomie de la plateforme Android et environnement de

développement - Arnaud Farine - Expertise@ndroid
 Pause café  Intégration d'un provider cryptographique / module Kernel /

Framework Dalvik - retour d'expérience - Nicolas Ponsini - Trusted Logic
 Intégration d'une application de géolocalisation "off board" sous

Android - retour d'expérience - Christophe Tomasini - Altran
 Q/R avec la salle, partage d'expériences

.  En résumé une vraie communauté professionnelle sur Sophia... architectes. .. juristes.développeurs.)  Un groupe dynamique... éditeurs. marketing. commerce.. ouvert et vivant où chacun apporte son expérience/expertise et apprend des autres.Jeudi 2 Juillet 2009 Commission Open Source Telecom Valley  Une commission créé fin 2007 pour permettre aux membres de Télécom Valley d'échanger et de s'enrichir mutuellement sur les sujets et problématiques de l'Open Source…  Un groupe pluri-disciplinaire (utilisateurs.

Janua  Anatomie de la plateforme Android et environnement de développement .Expertise@ndroid  Pause café  Intégration d'un provider cryptographique / module Kernel / Framework Dalvik .Jeudi 2 Juillet 2009 SOMMAIRE  Introduction : Commission Open Source Telecom Valley  Le marché Android et les enjeux .Pascal Flamand .positionnement et dernières avancées .retour d'expérience .Altran  Q/R avec la salle.Nicolas Ponsini .Arnaud Farine .Trusted Logic  Intégration d'une application de géolocalisation "off board" sous Android .Christophe Tomasini . partage d'expériences .retour d'expérience .

SSO. JAC. cluster et virtualisation Editeur des logiciels CmakeBuilder. déploiement de solutions d'infrastructures. expertise base de données. . ISO 27001. implémentations et déploiement de solutions de gestion des identités (LDAP. assistance ponctuelle et développement au forfait Nos compétences : Consulting.Jeudi 2 Juillet 2009 Présentation de Janua Société de services (SS2L)/éditeur fondée en 2004 à Sophia Antipolis Notre métier : l'expertise Notre crédo : l'Open Source Nos prestations : consulting. assistance et expertise sur des composants Open Source et embarqués. Etudes d'opportunités et accompagnement à la migration Open Source. KressourcesWCAP et EZ-Slony. Consulting réseaux et sécurité. Développement au forfait.. PKI.). Jaguards.

 Services gratuits: gmail.Jeudi 2 Juillet 2009 Android Google     Le marché. apps... photos.  Développement d'applications mobiles  Richard Miner* + Andy Rubin Objectif du rachat : créer une plateforme mobile  Flexible  Accessible à tous les intégrateurs et développeurs  Profiter de la convergence web / mobile * Richard Miner a quitté Google fin 2008 . 2005 : Rachat d'Android Inc.. le matériel. Google Enterprise Appliance. le potentiel Acteur majeur d'internet 1er moteur de recherche 1er publicité en ligne Solutions d'entreprises: Google Apps.. vidéos.

le matériel. le potentiel Acteurs système d'exploitation mobile 2009  Symbian  Windows Mobile  RIM  Palm Source (Palm Os)  Apple  Linux Baisse des parts de marché  OS: Palm Source.Jeudi 2 Juillet 2009 Android Le marché. Windows  Décroissance du marché téléphone Marché du smartphones en hausse  Décroissance du marché « téléphone »  Croissance smartphone: +37% en 2009 (GFK)  Croissance smartphone: +12% en 2009 (Gartner)  Services mobiles: nouveaux usages. multimédia .

Jeudi 2 Juillet 2009 Android Le marché. le matériel. le potentiel Open Handset Alliance (OHA) .

le potentiel Stratégie Google : • OpenSource Plateforme mobile ouverte Plus de revenus Application Web riche Utilisateurs nombreux Développeurs nombreux • Android Market / Google Checkout • Publicité mobile .Jeudi 2 Juillet 2009 Android Le marché. le matériel.

ebook.. le matériel.. partage Kit de développement gratuit SDK complet Android Market . Points forts Constructeurs Linux Open Source Coût de licence nul Adaptabilité Utilisateurs Fonctionnel... le potentiel Android pour qui ?  Constructeurs de matériels (téléphones. lecteur multimédia.Jeudi 2 Juillet 2009 Android Le marché. intuitif et évolutif Multitâches Applications nouvelles Nombreuses applications par défaut Développeurs Langage Java Modularité.)  Opérateurs  Éditeurs de solutions logicielles. bornes internet. netbook. GPS. SSII.

bronze et blanc Dernière minute : HTC annonce pour septembre le modèle HERO avec une nouvelle version d’ android (sense) et interface entièrement redessinée… Juillet 2009 .Orange  HTC Dream G1 Version Orange (FR) –Blanc Version T-Mobile (US) –Noir. le potentiel Matériels disponible (Avril 2009) .Jeudi 2 Juillet 2009 Android Le marché. le matériel.

Jeudi 2 Juillet 2009 Android Le marché.SFR  HTC Magic G2 . le potentiel Matériels disponible (Mai 2009) . le matériel.

le potentiel Matériels disponible (juin 2009)-BT  Samsung i7500/s8000 (Orion) .Jeudi 2 Juillet 2009 Android Le marché. le matériel.

Jeudi 2 Juillet 2009 Android Le marché. Elle a choisi pour les remplacer d’ intégrer Android et Windows Mobile. le potentiel Matériels à venir            Motorola (fin 2009) LG Sony Ericsson (fin 2009) * Huawei Leonovo Acer … Netbooks La présence d'Android par Fujitsu GPS ** Lecteurs multimédia (Archos annonce pour septembre) TV ! Des téléphones mais aussi * Sony Ericsson a annoncé qu’ utiliserait la prochaine version Android 2.0 Donut il ** 22/6 :Le géant américain du GPS Garmin a décidé de ne plus recourir à ses propres intégrations de Linux sur ses terminaux. le matériel. .

Jeudi 2 Juillet 2009 Android Evolution de l’ IHM  Android M3 –Nov 2007  Android M5 –Mars 2008 .

1RC33 Novembre 2008  Android Cupcake Fevrier 2009 .R1.Jeudi 2 Juillet 2009 Android Evolution de l’ IHM  Android .

Jeudi 2 Juillet 2009 Android Evolution de l’ IHM  Android Cupcake Custom HTC Sense UI Juin 2009 .

. . facteur de création d'un communauté productive et d'une adoption par la majorité des acteurs  Toutes les compétences autour d'Android existent sur Sophia....  La création d'un véritable app-store avec des milliers d'applications.  La position de leader de l'iPhone et son arrivée il y a déjà plusieurs années sur le marché..  La frilosité des opérateurs => partage de la valeur avec Google Les facteurs clés de succès :  Le nom Google et les services associés  Une plateforme de développement banalisée => beaucoup plus de compétences disponibles que Symbian par exemple  L'Open Source.. une opportunité à saisir pour notre communauté...Jeudi 2 Juillet 2009 Android Conclusions (provisoire…) Les facteurs potentiellement bloquants :  L'omniprésence de Google peut agacer et faire peur.

Jeudi 2 Juillet 2009 SOMMAIRE  Introduction : Commission Open Source Telecom Valley  marché Android et les enjeux .Arnaud Farine .Altran  Q/R avec la salle.Nicolas Ponsini . partage d'expériences .Christophe Tomasini .positionnement et dernières Le avancées .Janua  Anatomie de la plateforme Android et environnement de développement .Pascal Flamand .Expertise@ndroid  Pause café  Intégration d'un provider cryptographique / module Kernel / Framework Dalvik .Trusted Logic  Intégration d'une application de géolocalisation "off board" sous Android .retour d'expérience .retour d'expérience .

0 Kit de développement Java disponible depuis 2007   Versions disponibles sur les matériels  Souvent personnalisées par l'opérateur ou le constructeur  1.0.5: correctifs. clavier virtuel. enrichissement fonctionnel (widget)  Mise à jour via OTA OS et SDK sont disponibles en Open Source Développer une application ne requiert pas l'obtention de l'OS et réciproquement .1_RC33  Cupcake 1. puis 1.5 –Décembre 2009 Donut 2.Jeudi 2 Juillet 2009 Anatomie d’ Android Android: 2 parties   Système d'exploitation Linux Environnement d'exécution Dalvik (Java) Concours Android Developer Challenge (Google) –4 versions Mai 2009 SDK 1.

Jeudi 2 Juillet 2009 Anatomie d’ Android .

6.Jeudi 2 Juillet 2009 Anatomie d’ Android OS Android: 2 couches inférieures      Dalvik       Linux kernel 2. sécurité Optimisation bytecode Fichier Dex . processus et alimentation Gestion utilisateurs VM Android Optimisée embarqué Multi instance Optimisation mémoire.24 ARM Pas de système natif de fenêtrage Pas de support Glibc Optimisation mémoire.

Jeudi 2 Juillet 2009 Anatomie d’ Android Base de l'API    Point d'entrée pour les applications Accès à toutes les ressources inférieures via librairie Accès possible aux ressources C via JNI (bypass de cette couche) .

5 1.Jeudi 2 Juillet 2009 Anatomie d’ Android Développement Environnement    Windows XP/Vista Mac OS 10 Linux 1.6 J2SE   SDK Android Eclipse Ganymede + plugin ADT Optionnel: Outil dev C: Intégration code C/C++ en tant que librairie (JNI) .

xml Les applications ont pour extension APK (Android Package) .Jeudi 2 Juillet 2009 Anatomie d’ Android Développement Une application est une succession d'écrans Elle inclut un ensemble de descripteurs pour chaque écran Un écran peut ouvrir un autre écran d'une même application ou d'une autre application 5 composantes majeures      Intent Activity Broadcast Receiver Content Provider Service L'ensemble de ces composantes est décrit dans le fichier AndroidManifest.

Jeudi 2 Juillet 2009 Anatomie d’ Android Développement Activity     Une classe par Activity Généralement le point d'entrée d'une application Généralement une interface graphique. un écran Cycle de vie Type d'action possible déclaré auprès du système Indique le besoin ou le service offert Accès aux données partagées Données internes ou externes à l'application Encapsulation du schéma de la base Pas de requête -URI -Services de manipulation des données fournis par le package Intent   Content Provider     .

lancer une activity .bindService: externe à l'application Réagit à des évènements externes - Broadcast Receiver  Logiciel: Alarme.Jeudi 2 Juillet 2009 Anatomie d’ Android Développement Services     Composants sans interface graphique Activité de longue durée Démarrer par context. exting  Réveiller une application. Matériel: Activation puce GPS. afficher un message...startService: interne à l'application Démarrer par context. notifications.

dex Construction du package destiné à être installé .Jeudi 2 Juillet 2009 Anatomie d’ Android Développement Construction d'une application Code source Byte Code Java Byte code optimisé Génération fichier.

Jeudi 2 Juillet 2009 Anatomie d’ Android Hello Android Création d'un nouveau projet .

Jeudi 2 Juillet 2009 Anatomie d’ Android Hello Android Arborescence du fichier créé Construire le projet via le menu Project/Build .

Jeudi 2 Juillet 2009 Les Activity et leurs interactions Activity Une classe étendant de Activity Point d'entrée d'une application Généralement un écran d'une application (plein écran ou non) Comportement défini dans le fichier AndroidManifest.xml Une Activity peut     Être sans interface Être une fenêtre flottante Retourner des valeurs Lancer d'autres Activity Possède un cycle de vie .

Jeudi 2 Juillet 2009 Les Activity et leurs interactions Activity Cycle de vie d'une Activity .

Jeudi 2 Juillet 2009 Les Activity et leurs interactions Activity Différentes Activity disponibles .android.*        ActivityGroup ListActivity AliasActivity ExpandableListActivity PreferenceActivity LauncherActivity TabActivity Une Activity est capable de lancer une autre Activity –que nous nommerons SubActivity     Interne à l'application Externe à application Récupérer le résultat d'une SubActivity Notion importante d'Intent .app.

.. EDIT.Jeudi 2 Juillet 2009 Les Activity et leurs interactions Intent Intent     Définir une action à effectuer Créer des liens entre application Décrit par une action (VIEW. MAIN. Activity est lancée ...) URI pour renseigner les données à traiter IntentFilter     Décrit les capacités d'une application Attaché à une Activity Écoute les demandes d'Intent (handler) Enregistré au niveau système Recherche de l'IntentFilter le mieux adapté par l'IntentResolver Appelant (intent) Activity.. Services.

   StartActivityForResult Lancer l'activity Récupérer le résultat .class)). ScoreActivity.Jeudi 2 Juillet 2009 Les Activity et leurs interactions Activity Lancer une autre Activity    Définition du type d'Intent Définition du chemin de l'Activity startActivity startActivity(new Intent(this.

données. Il peut accepter ou refuser. version de code.Jeudi 2 Juillet 2009 Les Activity et leurs interactions Descripteur d’ application 1 fichier de description de l'application: AndroidManifest...)  L'utilisateur est toujours prévenu à l'installation des ressources requises pour le bon fonctionnement de l'application. Internet. broascat receiver et content provider Déclaration des ressources nécessaires (applications. .xml Descripteur de l'application     Renseignements sur l'application (nom.) Définit le comportement des Activity et leurs actions Déclare auprès du système les Intent accessibles Définit les services. matériels.. SDK supporté..

AWT ou Swing Deux méthodes de création   XML (recommandé) Code Java Lisibilité du code Java Lisibilité de la construction de l'IHM Allègement du code Java Rapidité de développement (Similaire à un page HTML) Moins de risque d'erreur Avantages XML      Large éventail de composants déjà disponibles Personnalisation possible de chaque élément Système de « thèmes » disponible .Jeudi 2 Juillet 2009 Interface graphique (IHM) IHM : Présentation Différents de J2ME.

les vues Chaque composant correspond à un Layout    Présent dans /res/layout Représente un écran Représente un composant spécifique d'un écran Dispose d'un identifiant unique (de préférence) Peut être accédé. modifié et supprimé depuis le code Java android:id=@+id/monidentifiant pour votre composant android:id=@android:id/empty pour référencer un composant spécifique d'Android Chaque composant     Identification par le fichier R.java (généré par aapt) Compiler sous forme de vue embarquée dans le fichier dex . ajouté.Jeudi 2 Juillet 2009 Interface graphique (IHM) IHM : les layouts.

android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello"/> </LinearLayout> .xml Ne pas contenir de majuscule ou de chiffre <?xml version="1.Jeudi 2 Juillet 2009 Interface graphique (IHM) IHM : les layouts. les vues Ecrire son fichier XML     Contient obligatoire un élément racine (Root) Peut contenir autant de layout ou vue que désiré Sauvegardé sous /res/layout/monlayout.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.

. } Un layout peut être chargé au sein d'un autre composant en utilisant l'objet LayoutInflater Chaque composant dispose d'un certain nombre de paramètres   android:layout_width et android:layout_height (fill_parent. les vues Charger le layout désiré    Référencés sur le nom de fichier (sans extension) dans R. wrap_content.) android:id..main).. horizontal) Chaque composant dispose de ses arguments propres:  . setContentView(R. android:background.monlayout setContentView(layout) public void onCreate(Bundle savedInstanceState){ super..java R.Jeudi 2 Juillet 2009 Interface graphique (IHM) IHM : les layouts. android:orientation pour LinearLayout (vertical.onCreate(savedInstanceState). android:text.layout.layout.

xml Utiliser les mêmes clés pour afficher la valeur dans la langue correspondante . /res/values-en contenant un fichier string.Jeudi 2 Juillet 2009 Interface graphique (IHM) IHM : string et multilinguisme Les chaines de caractères et l'IHM     Fichier XML /res/values Par défaut: string.xml <string name=''cle''>Valeur à afficher</string> <?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">Hello World. HelloActivity!</string> <string name="app_name">Mon Hello Android</string> </resources> Multilingues    Basée sur la locale du système /res/values-fr.

Jeudi 2 Juillet 2009 Interface graphique (IHM) IHM : Les menus Menu Option Sous menu Menu contextuel .

… … OnClickListener evtClickSurMonBoutton = new OnClickListener(){ public void onClick(View v){ // Implémentation } }.Jeudi 2 Juillet 2009 Interface graphique (IHM) IHM : évènements Gérés comme en Java / AWT / Swing / J2ME Mise en place de Listener (écouteurs) Peuvent être appliqués sur chaque composant View Évènements supplémentaires en fonction du type de la vue Processus    Récupérer l'objet vue concerné Ajout du listener Implémentation des actions à réaliser par le listener Button monBoutton = (Button)findViewById(R.id.setOnClickListener(evtClickSurMonBoutton).monBouton). b. .

Jeudi 2 Juillet 2009 Interface graphique (IHM) IHM : Boite de dialogue Une vue affichée sur la couche supérieure du contenu courant Composition     Titre. personnalisable Bloquante AlertDialog.Builder Personnalisable à volonté . Texte Icône Boutons Animation.

Jeudi 2 Juillet 2009 Interface graphique (IHM) IHM : Boite de dialogue Des listes dans les boites de dialogues Des listes et boutons radios Barre de progression (fin connue ou indéterminée) .

Jeudi 2 Juillet 2009 Données persistantes 3 types de données persistantes:    Préférences utilisateurs Base de données (Sqlite3) Content Provider Gestion de vos données dans des fichiers .

Jeudi 2 Juillet 2009 Données persistantes Les préférences utilisateurs Composants fournis   IHM Données Simple Ensemble de clés (String)/valeurs(primitive) Propre à l'Activity ou à l'application entière Déclarations dans AndroidManifest Données sauvegardées dans /data/data/monpackage/shared_prefs/monpackage.xml .

certaines options ALTER_TABLE Librairie de manipulation Accessible par adb shell SQLITE3   Type de données supportées: NULL. RIGHT/LEFT_OUTER_JOIN.Jeudi 2 Juillet 2009 Données persistantes Bases de données SQLITE          Projet Open Source Base de données transactionnelles Pas de partie serveur Toutes les tables sont contenues dans un seul fichier Crossplatform Données typées Langage SQL Clé primaire Non disponible: FOREIGN_KEY. BLOB . REAL. INTEGER. TEXT.

Jeudi 2 Juillet 2009

Données persistantes
Bases de données SQLITE & Android
  

Aucune base par défaut: tout doit être construit Manipulation SQLiteDatabase SQLiteOpenHelper
-

onCreate onUpdate

Le fichier est sauvegardé par défaut dans
/data/data/monpackage/databases

L'enregistrement de fichier de base de données sur une carte mémoire ne pourra être réalisé par SQLiteOpenHelper, recours à l'objet SQLiteDatabase

Jeudi 2 Juillet 2009

Données persistantes
Bases de données Manipulation des données

execSQL: exécution de commande SQL passée en paramètre sous forme de chaine de caractères (dans la classe de l'adapter)
db.execSQL("insert into " + DATABASE_TABLE_USER + " (" + COL_TAB_HELLO_USER_NOM + ") values('" + name + "');");

Insert(), delete() et update() de SQLiteOpenHelper
-

Nom de la table concernée ContentValues().put(nom de colonne, valuer)
ContentValues cv = new ContentValues(); cv.put(COL_TAB_HELLO_USER_NOM, name); db.insert(DATABASE_TABLE_USER, COL_TAB_HELLO_USER_ID, cv);

-

Permet de retourner des valeurs (ex.: identifiant d'un nouveau élément ajout)

Jeudi 2 Juillet 2009

Données persistantes
Bases de données Query
public Cursor query (String table,// nom de la table String[] Columns, // nom des colonnes a retourner ou null pour toute String Selection, // clause where, sans le mot 'where' ex.: nom=? String[] SelectionArgs, // tableau ordonné des valeurs // utilisées dans la clause where String GroupBy, // argument groupBy, ex: nom, prenom –null sinon String Having, // argument clause having –null sinon String OrderBy) // argument d'ordonnancement ex: nom - null sinon

public void getInfo(String nomRecherche){ String[] columns=new String[]{"nom", "prenom"}; String[] params={nomRecherche}; Cursor result=db.query(this.DATABASE_TABLE_USER, columns, "nom=?",params, null, null, null); … }

utiliser et partager vos données Définition d'une URI PREFIXE://IDENTIFIANT DU TYPE DE DONNEES/DEFINITION DE LA DONNEES/ENREGISTREMENT content://contact/people/123 content://com.mycompany. accès distant A partir d'une URI     Create Read Update Delete Utilisation de ContentProvider existant –d'autres applications Créer.Jeudi 2 Juillet 2009 Données persistantes Content provider Toutes les URI commençant par URI Encapsulation de la structure des données Base de données.hello/user/53 . fichiers plats.

Jeudi 2 Juillet 2009

Données persistantes
Content provider
Réaliser une requête

managedQuery() depuis un objet Activity
-

URI Un tableau des propriétés du ContentProvider à obtenir dans le résultat (nommé projection) Les contraintes (clause Where) Ensemble des paramètres permettant de compléter les contraintes (? dans la clause where) Clause d'ordonnancement

Retourne un Cursor

Propriété d'un ContentProvider = Colonnes d'une base de données
private static final String[] PROJECTION = new String[] { Provider.Constants._ID, Provider.Constants.TITLE, Provider.Constants.VALUE}; .... constantsCursor=managedQuery(Provider.Constants.CONTENT_URI, PROJECTION, null, null, null)

Jeudi 2 Juillet 2009

Données persistantes
Content provider Insérer des enregistrements

insert()
-

Uri + contentValues Retourne l'identifiant de l'élément inséré Tableau d'Uri et tableau de ContentValues pour ajouter plusieurs enregistrements en une seule fois Retourne le nombre d'éléments insérés

bulkInsert()
-

Suppression d'un enregistrement

Delete
-

Uri, clause where, arguments complétant la clause where Les informations dépendantes à la table visée seront également supprimées (cascading) Retourne le nombre d'éléments supprimés

Mise à jour

Update
-

Uri, valeurs à insérer, clause where, arguments complétant la clause where Retourne le nombre d'éléments mis à jour

Jeudi 2 Juillet 2009

Données persistantes
IHM, Cursor et Adapter Composant dédié à l'affichage de liste
    

Gestion du Cursor ou de listes Mise à jour automatique lors d'un ajout, modification, suppression Composants graphiques déjà disponibles Personnalisation de l'affichage possible Adapter: mapping entre la vue et les données Utilisation d'un composant gérant un adapter (spinner, listview...) Récupération d'un Cursor Création de l'adapter Affichage

Processus
   

En cas de personnalisation de l'affichage, nécessité de créer son propre Adapter

new int[]{android. android.text1.empty. PROJECTION. null). android.R.id.R. PROJECTION.two_line_list_item.R. ListAdapter adapter = new SimpleCursorAdapter( this. null. android. startManagingCursor(c).id. . c.R.Jeudi 2 Juillet 2009 Données persistantes IHM. setListAdapter(adapter).id. null.text2} ).layout. Cursor et Adapter Exemple simple: ListActivity      Une Activity devient une ListActivity Obligation de présence d'un objet ListView dans le layout Id spécifique: android:id="@android:id/list" SimpleAdapterCursor Application de l'adapter sur la vue courante Cursor c = managedQuery(uri.

Jeudi 2 Juillet 2009 Services et Multithreading Services    Process actif tant que la mémoire n'est pas limitée Attention à la surcharge! Implémentation simple - Étend de Services OnCreate OnStart OnDestroy Déclarations dans l'Android Manifest .

Jeudi 2 Juillet 2009 Services et Multithreading Services AIDL     Android Interface Description Language Partage du service avec d'autres applications (Inter Process Communication) Développement d'interface N'acceptes que - Des primitives Des String et CharSequence List ou Map Autre AIDL Autres classes Java implémentant Parcelable in / out: définit le sens de l'information in: paramètre d'entrée est utilisée pour lecture uniquement par le service out: paramètre pouvant être modifié par le service et propagé  void retrieveInfo(in String nom. out String Info) - .

message...) Création d'un PendingIntent pour la finalité de la notification (ouverture d'une activity) Attribuer le pendingIntent à la notification Envoyer la notification . led. notifications Notifications    Toutes les alertes émanant du système ou d'autres applications Affichage d'une icône et/ou texte dans la barre de notifications Coloration de la led du téléphone Hardware (son. vibreur) Icons / Texte NotificationManager   Obtenir une instance du NotificationManager Création de l'objet Notification (icon.Jeudi 2 Juillet 2009 Services et Multithreading Alarmes.

HTTP POST/GET    HttpClient Renseigner les informations sur la requête execute() DefaultHttpClient httpclient = new DefaultHttpClient().execute(httpget).e(TAG.. HttpGet httpget = new HttpGet(url). "ClientProtocolException retrieveInfo:" + cpe).Jeudi 2 Juillet 2009 Services et Multithreading Accès distants Librairies Apache HttpComponents HTTP Ajouter des librairies supplémentaires pour réaliser d'autres protocoles: XMPP.. try{ HttpResponse response = httpclient. SMTP. } catch (ClientProtocolException cpe) { Log. } Requête GET .

Jeudi 2 Juillet 2009 Services et Multithreading Accès distants Requête POST DefaultHttpClient httpclient = new DefaultHttpClient(). valeur2)). HttpPost httpost = new HttpPost(http://www.monserveur. sortie. httpost.) Ouverture d'un DataOutputStream sur la connexion Pour chaque élément à envoyer: - Ouverture du fichier en lecture Écriture du type de données et du flux dans le DataOutputStream .. valeur1)). List<NameValuePair> nvps = new ArrayList<NameValuePair>(). nvps.execute(httpost). nvps.add(new BasicNameValuePair("cle1".setEntity(new UrlEncodedFormEntity(nvps. null)). HttpResponse response = httpclient. méthodes. Envoi de fichier par POST     Utilisation de HttpURLConnection Définition des paramètres de la connexion (entrée.add(new BasicNameValuePair("cle2". boundary..com).

getContent() .Jeudi 2 Juillet 2009 Services et Multithreading Accès distants Réponse d'une requête     HttpResponse Sur retour de la commande execute Création d'un HttpEntity par httpResponse.getEntity() Lecture d'un InputStream sur httpEntity.

calculs. le système s'en charge  ...Jeudi 2 Juillet 2009 Services et Multithreading Utilité des Threads Blocage de l'application lors des accès distants (Wake Lock) Solution (recommandation!)  Utilisation de Thread pour les traitements bloquant: accès distant. Système de message de communication entre un Thread et un Handler Classe implémentant l'interface Runnable Constructeur prenant en paramètre l'Activity qui appellera le Thread Surcharge de la méthode run() dans laquelle Les traitements sont exécutés Les messages sont envoyés au Handler Création d'un objet Handler Gestion des codes reçus Mise à jour de l'IHM de l'Activity appelante Gestion d'un état permettant ou non d'appeler ou pas le contenu de run() Les threads n'ont pas accès aux IHM          Une Thread ne peut être tuée.

Jeudi 2 Juillet 2009 Autres composants Gestion des appels entrants et sortants Connexion GSM/Bluetooth/Wifi/GPS Envoi/réception SMS SearchManager Géolocalisation    Localisation Map/MapView Accéléromètre Son Caméra 2D/3D Multimedia    .

Murphy –Edition CommonsWare – 444 pages + 2 livres tutoriaux et Advanced Development http://www.com Ressources en lignes: site web http://developer.google. L.com/site/io/ (recherche sur Mobile.google. forums) .frandroid.Jeudi 2 Juillet 2009 Livres Busy coder's guide to Android Development –Mark.commonsware.com (documentations officielle) http://sites.android.com/wireless (actualités. forums) http://www. forums) http://www.com Hello Android. présentations vidéos) http://www.com (actualités.com (actualités) Ressources en lignes: forums http://groups.devx. tutoriaux) http://www.fr/group/android-beginners Ressources francophones: actualités et développement http://www.pointgphone.pragprog.com (actualités) http://www.fr/group/android-developers http://groups.org (tutoriaux.anddev. Introducing Google's mobile development Platform –Ed Burnette –220 pages http://www.helloandroid.androidcommunity.google.com (actualités.

positionnement et dernières Le avancées .retour d'expérience .Christophe Tomasini .Janua  Anatomie de la plateforme Android et environnement de développement .Altran  Q/R avec la salle.Trusted Logic  Intégration d'une application de géolocalisation "off board" sous Android .retour d'expérience .Expertise@ndroid  Pause café  Intégration d'un provider cryptographique / module Kernel / Framework Dalvik . partage d'expériences .Jeudi 2 Juillet 2009 SOMMAIRE  Introduction : Commission Open Source Telecom Valley  marché Android et les enjeux .Arnaud Farine .Nicolas Ponsini .Pascal Flamand .

Christophe Tomasini .retour d'expérience .Altran  Q/R avec la salle.Nicolas Ponsini .Trusted Logic  Intégration d'une application de géolocalisation "off board" sous Android .positionnement et dernières Le avancées .Jeudi 2 Juillet 2009 SOMMAIRE  Introduction : Commission Open Source Telecom Valley  marché Android et les enjeux .retour d'expérience . partage d'expériences .Arnaud Farine .Pascal Flamand .Expertise@ndroid  Pause café  Intégration d'un provider cryptographique / module Kernel / Framework Dalvik .Janua  Anatomie de la plateforme Android et environnement de développement .

Jeudi 2 Juillet 2009 Trusted Logic Produits & Solutions pour • Smart Cards & Secure Tokens jTOP • Technologie sans contact Trusted NFC •Plateformes mobiles Trusted Foundations Software Sécurité embarquée en bref Technologies ouvertes Services de consulting et d’valuation en é sécurité .

Jeudi 2 Juillet 2009 Trusted Foundations Software Monde Normal (trop riche pour être certifié) Monde Sécurisé (certifiable) Applications Services Sécurisés Environnement ouvert Trusted Foundations Software Environnement sécurisé programmable permettant l’ exécution de services haut niveau SChannel Plateforme .

A. • Ipsec (VPN) • OpenSSL .Jeudi 2 Juillet 2009 Services disponibles via Trusted Foundations • OMA DRM 2 • WMDRM / PlayReady • CPRM • OMA BCAST • Marlin • SW TPM/MTM • Password Storage • One-Time Password • Secure Storage • Cryptographic providers • Trusted NFC • Trusted User Interface Intégration sécurisée : • Windows Mobile • Linux • Android • Symbian © 2009 Trusted Logic S.

Jeudi 2 Juillet 2009 Intégration d’ Provider un Cryptographique sur plateforme OMAP3 Objectif : Proposer aux applications Android un provider cryptographique de type JCE / JCA offrant la sécurité du Trusted Foundations SW aux clés et données manipulées.security.* fournit les classes et les interfaces pour le framework de sécurité Java.  Javax. Elles permettent entre autres de réaliser des opérations:  de génération de nombres aléatoire  de digests  de signatures à l’ d’ aide algorithmes asymmétriques  … .* fournit les classes et les interfaces pour effectuer des opérations cryptographiques sur les algorithmes symmétriques.crypto.  JCE / JCA = Java Cryptographic Extension / Java Cryptographic Architecture  Un Provider implémente les interfaces spécifiées par les packages JCE / JCA.  Java.

Jeudi 2 Juillet 2009 Intégration d’ Provider un Cryptographique sur plateforme OMAP3 Applications utilisant des opérations crypto Provider cryptographique Java (JCE / JCA) Module Kernel d’ accès au monde sécurisé Bibliothèques C de communication avec les services sécurisés .

git cd omapkernel git checkout --track -b android-2.6.27 et bientôt kernel 2.  Kernel 2.27 git pull (1/2)  Recompiler le kernel : choisir la configuration / “ cross-compiler” avec la chaîne de compilation ARM Code Sourcery ARM Sourcery G++ 2007q3.org/repo/omapkernel.27 git checkout android-2.6.6.29 : le site permet de profiter des dernières nouveauté comme un meilleur support des fonctions de mise en veille. .6.Jeudi 2 Juillet 2009 Intégration d’ Provider un Cryptographique sur plateforme OMAP3 Module Kernel pour accéder au monde sécurisé Kernel Android  Cloner le kernel home# home# home# home# home# git clone git://git.omapzoom.27 origin/android-2.6.

 Accès au hardware : mapping et accès registres (ex: controleur DMA)  Insertion du module : dynamique / statique Driver sous License GPL2 : son code doit être rendu public. Kernel Préemptif  Power Management : suspend/resume + utilisation du “ réfrigérateur” pour les threads actifs lorsque l’ utilisateur met l’ appareil en veille explicitement.Jeudi 2 Juillet 2009 Intégration d’ Provider un Cryptographique sur plateforme OMAP3 Module Kernel pour accéder au monde sécurisé (2/2) Développement d’ “ un Character device driver” pour abstraire l’ accès au monde sécurisé vu comme un device:  Points d’ entrée : open/release/ioctl/mmap/read/write  Communication avec le user space : copy_from(to)_user/mapped memory …  Gestion des accès multiples : objects de synchronisation. .

mk JCE / JCA Interfaces  Application Java (.so Code C + Android.mk ProviderCrypto. ressources …)  Source Java  Bibliothèque Java (.Jeudi 2 Juillet 2009 Intégration d’ Provider un Cryptographique sur plateforme OMAP3 Provider JCE/JCA au dessus de Dalvik (1/2) TestsProviderCrypto.mk  AndroidManifext.apk Code Java + AndroidManifest.apk) dans /system/app  Android.ko .xml (bibliothèques Java à utiliser.jar Code Java + JNI + Android. main.mk Source Java Glue JNI Editer le fichier /system/etc/permissions/platform.xml et ajouter cette bibliothèque pour la rendre accessible aux applications ProviderCrypto.xml + Android.jar) dans /system/framework     Android.mk  Source C au dessus de bionic ProviderCrypto.mk  Bibliothèque native (.so) dans /system/lib  Android.

.omapzoom.org/repo/android/platform/omapmanifest.git home# repo sync home# make -j2 (et attendez 1h30 ou plus selon votre machine … )  Le système de build est totalement intégré et permet de gérer les dépendances à tous les niveaux : application / bibliothèques / code Java / code C.mk : insérer dans les sources Android un fichier Android.mk (makefile-like) pour générer une Application ou une librairie.Jeudi 2 Juillet 2009 Intégration d’ Provider un Cryptographique sur plateforme OMAP3 Provider JCE/JCA au dessus de Dalvik (2/2) Code source Android  Installation de :  paquets type sun-java6-jdk/git-core/flex/bison …  Installation de la chaine de compilation ARM Code Sourcery ARM Sourcery G++ 2007q3  Installation de l’ google : «repo» outil  Cloner et builder la “ distribution” : home# repo init -u git://git.  Android.

mk Réutilisation de Linux très utile au développement      L’ environnement en général : git / commandes / Makefiles … Le kernel et donc les modules kernel Le développement et la validation sur target sont facilités grâce à NFS par exemple Utilisation d’ busybox pour les commandes traditionnelles une Gestion des droits et des permissions . Système de build  Pas de « platform Builder » graphique élaboré  Une « distribution » intégrée : tapez make et ça fonctionne !!  Gestions des dépendances et ajout d’ applications et de bibliothèques simplement grâce à un Makefile-like : Android.Jeudi 2 Juillet 2009 Intégration d’ Provider un Cryptographique sur plateforme OMAP3 Retour d’ expérience (1/2) Outil Repo pour synchronization avec les sources  C’ un outil Google qui permet d’ est abstraire « git» et de gérer simplement la synchronization avec plusieurs repositories.

Jeudi 2 Juillet 2009 Intégration d’ Provider un Cryptographique sur plateforme OMAP3 Retour d’ expérience (2/2) Bionic  ucLibc .* et javax.security.crypto. Debug  Pas d’ utilisation des outils spécifiques Android pour cette intégration  Utilisation d’ debugger Jtag pour le debug de certaines fonctionnalités du driver un .like  Plus légère mais l’ essentiel est là.  Des modifications sur les objets de synchro et les wide-char par exemple mais rien d’ insurmontable ! Réutilisation de Java  Le Java de base est là et les paquets java.* pour le supports du JCE/JCA aussi  JNI est supporté et complètement compatible  Simple pour le développement d’ application de tests  Utilisation du SDK Android pour développer toutes ces parties portables sur PC.

com .Jeudi 2 Juillet 2009 Intégration d’ Provider un Cryptographique sur plateforme OMAP3 Conclusions Nicolas Ponsini Project Manager Professional & Consumer Devices nicolas.ponsini@trusted-logic.

Altran  Q/R avec la salle.Nicolas Ponsini .Jeudi 2 Juillet 2009 SOMMAIRE  Introduction : Commission Open Source Telecom Valley  marché Android et les enjeux .Christophe Tomasini .Pascal Flamand .retour d'expérience .Trusted Logic  Intégration d'une application de géolocalisation "off board" sous Android .Janua  Anatomie de la plateforme Android et environnement de développement .positionnement et dernières Le avancées .Expertise@ndroid  Pause café  Intégration d'un provider cryptographique / module Kernel / Framework Dalvik .Arnaud Farine .retour d'expérience . partage d'expériences .

Software Competence Centre Depuis 1999…         BMW/VW systèmes d’ Infotainment Certification OSGi Outillage de test automatique Chaine de développement pour le design/intégration HMI Architecture et Développement de plateforme logicielle Portail de Connectivité sans-fil Web Services avec reconnaissance vocale Navigation mobile off-board VDO Siemens Continental .Jeudi 2 Juillet 2009 Intégration d’ une application de navigation « off-board » sous Android SC2 .

Sur le marché en 2005 en France (SFR) et en Allemagne (T-Mobile) . radars. restaurant.Jeudi 2 Juillet 2009 Intégration d’ une application de navigation « off-board » sous Android Navigation Mobile Off-Board  Application MIDP2.0  Navigation « off-board »  Guidage en temps réel: carte + pictogrammes + audio  POIs: cinémas. etc.

 Graphismes 2D/3D Google Maps . boussole. Wifi. etc.  Audio & Vidéo  Camera. EDGE. etc. GPS. Bluetooth.Jeudi 2 Juillet 2009 Intégration d’ une application de navigation « off-board » sous Android Android –Plateforme & APIs Plateforme basée sur le langage Java APIs  Téléphonie & Connectivité : GSM. 3G.

Jeudi 2 Juillet 2009 Intégration d’ une application de navigation « off-board » sous Android Android . moniteur de VM. spécialisation  Chaine de développement complète . IHM  Nouveauté : Native Development Kit (NDK) Intégration dans Eclipse (plugin ADT)  Création graphique d’ IHM  Gestion des ressources: images. localisation. debugger. exemples et librairies  Outils : émulateur.Environnement de développement (1/2) Kit de développement  Documentation.

Environnement de développement (2/2) .Jeudi 2 Juillet 2009 Intégration d’ une application de navigation « off-board » sous Android Android .

Jeudi 2 Juillet 2009 Intégration d’ une application de navigation « off-board » sous Android Développement pour Android .Objectifs Portage fonctionnalités existantes  IHM  Audio  Persistance  Internationalisation Nouvelles fonctionnalités  Intégration de Google Maps  Diaporama géolocalisé basé sur Flickr  Support de l’ é cran tactile Participation à l’ «Android Challenge » .

Jeudi 2 Juillet 2009 Intégration d’ une application de navigation « off-board » sous Android Développement pour Android .Google Maps  Vues plan / satellite  Gestion des données  Zoom & défilement  Surcharge de la carte .

Jeudi 2 Juillet 2009 Intégration d’ une application de navigation « off-board » sous Android Développement pour Android .Diaporama géolocalisé  Basé sur Flickr  Utilisation de la position courante  Recupération de photos géotaggées .

tomasini@altran.com .Jeudi 2 Juillet 2009 Intégration d’ une application de navigation « off-board » sous Android Conclusion & Perspectives  Des outils de développement  Une communauté  Une plateforme en évolution  Des terminaux  Android Market Christophe Tomasini Praxis SC2 by Altran christophe.

Jeudi 2 Juillet 2009 QUESTIONS / REPONSES Merci pour votre attention .