SlideShare une entreprise Scribd logo
1  sur  91
Télécharger pour lire hors ligne
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
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,développeurs, éditeurs,
architectes, juristes, marketing, commerce...)
 Un groupe dynamique, ouvert et vivant où chacun apporte son
expérience/expertise et apprend des autres...
 En résumé une vraie communauté professionnelle sur Sophia....
Jeudi 2 Juillet 2009

SOMMAIRE

Introduction : Commission Open Source Telecom Valley

Le

marché Android et les enjeux - positionnement et
dernières 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

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 ponctuelle et développement au
forfait
Nos compétences :
Consulting, implémentations et déploiement de solutions de gestion des
identités (LDAP, SSO, PKI..),
Etudes d'opportunités et accompagnement à la migration Open Source,
déploiement de solutions d'infrastructures.
Développement au forfait, assistance et expertise sur des composants Open
Source et embarqués,
Consulting réseaux et sécurité, ISO 27001, expertise base de données, cluster
et virtualisation
Editeur des logiciels CmakeBuilder, Jaguards, JAC, KressourcesWCAP
et EZ-Slony.
Jeudi 2 Juillet 2009

Android
Google





Le marché, le matériel, le potentiel

Acteur majeur d'internet
1er moteur de recherche
1er publicité en ligne
Solutions d'entreprises: Google Apps, Google Enterprise
Appliance...
 Services gratuits: gmail, apps, photos, vidéos...
2005 : Rachat d'Android Inc.
 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
Jeudi 2 Juillet 2009

Android
Le marché, 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, 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)
Jeudi 2 Juillet 2009

Android
Le marché, le matériel, le potentiel
Stratégie Google :

• OpenSource
Plateforme mobile
ouverte
Plus de revenus

Application
Web riche

Utilisateurs
nombreux

• Android Market / Google Checkout
• Publicité mobile

Développeurs
nombreux
Jeudi 2 Juillet 2009

Android
Le marché, le matériel, le potentiel
Android pour qui ?
 Constructeurs de matériels (téléphones, GPS, netbook, ebook, lecteur multimédia, bornes internet...)
 Opérateurs
 Éditeurs de solutions logicielles, SSII...

Points forts

Développeurs
Langage Java
Modularité, partage
Kit de développement gratuit
SDK complet
Android Market

Constructeurs
Linux Open Source
Coût de licence nul
Adaptabilité
Utilisateurs

Fonctionnel, intuitif et évolutif
Multitâches
Applications nouvelles
Nombreuses applications par défaut
Jeudi 2 Juillet 2009

Android
Le marché, le matériel, le potentiel
Matériels disponible (Avril 2009) - Orange
 HTC Dream G1

Version Orange (FR) –Blanc

Version T-Mobile (US) –Noir, 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
Jeudi 2 Juillet 2009

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

Android
Le marché, 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, le potentiel
Matériels à venir








Motorola (fin 2009)
LG
Sony Ericsson (fin 2009) *
Huawei
Leonovo
Acer
…

Des téléphones mais aussi





Netbooks
La présence d'Android par Fujitsu
GPS **
Lecteurs multimédia (Archos annonce pour septembre)
TV !

* 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. Elle a choisi pour les remplacer d’
intégrer Android et Windows Mobile.
Jeudi 2 Juillet 2009

Android
Evolution de l’
IHM

 Android M3 –Nov 2007

 Android M5 –Mars 2008
Jeudi 2 Juillet 2009

Android
Evolution de l’
IHM

 Android - R1.1RC33
Novembre 2008

 Android Cupcake
Fevrier 2009
Jeudi 2 Juillet 2009

Android
Evolution de l’
IHM

 Android Cupcake Custom
HTC Sense UI
Juin 2009
Jeudi 2 Juillet 2009

Android
Conclusions (provisoire…)
Les facteurs potentiellement bloquants :
 L'omniprésence de Google peut agacer et faire peur...
 La position de leader de l'iPhone et son arrivée il y a déjà plusieurs
années sur le marché..
 La création d'un véritable app-store avec des milliers d'applications...
 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, 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, une
opportunité à saisir pour notre communauté....
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

Anatomie d’
Android
Android: 2 parties



Système d'exploitation Linux
Environnement d'exécution Dalvik (Java)

Kit de développement Java disponible depuis 2007



Concours Android Developer Challenge (Google) –4 versions
Mai 2009 SDK 1.5 –Décembre 2009 Donut 2.0

Versions disponibles sur les matériels
 Souvent personnalisées par l'opérateur ou le constructeur
 1.0, puis 1.1_RC33
 Cupcake 1.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
Jeudi 2 Juillet 2009

Anatomie d’
Android
Jeudi 2 Juillet 2009

Anatomie d’
Android
OS Android: 2 couches inférieures






Linux kernel 2.6.24 ARM
Pas de système natif de
fenêtrage
Pas de support Glibc
Optimisation mémoire,
processus et alimentation
Gestion utilisateurs

Dalvik







VM Android
Optimisée embarqué
Multi instance
Optimisation mémoire,
sécurité
Optimisation bytecode
Fichier Dex
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)
Jeudi 2 Juillet 2009

Anatomie d’
Android
Développement
Environnement




Windows XP/Vista
Mac OS 10
Linux

J2SE



1.5
1.6

SDK Android
Eclipse Ganymede + plugin ADT
Optionnel: Outil dev C: Intégration code C/C++ en tant que
librairie (JNI)
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.xml
Les applications ont pour extension APK (Android Package)
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

Intent



Type d'action possible déclaré auprès du système
Indique le besoin ou le service offert

Content Provider





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
Jeudi 2 Juillet 2009

Anatomie d’
Android
Développement
Services





Composants sans interface graphique
Activité de longue durée
Démarrer par context.startService: interne à l'application
Démarrer par context.bindService: externe à l'application

Broadcast Receiver


Réagit à des évènements externes
-



Logiciel: Alarme, notifications...
Matériel: Activation puce GPS, exting

Réveiller une application, afficher un message, lancer une activity
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.dex

Construction du package
destiné à être installé
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.app.*








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
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, EDIT, MAIN,...)
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

Appelant (intent)
Activity, Services...

Recherche de l'IntentFilter
le mieux adapté par
l'IntentResolver

Activity est lancée
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, ScoreActivity.class));





StartActivityForResult
Lancer l'activity
Récupérer le résultat
Jeudi 2 Juillet 2009

Les Activity et leurs interactions
Descripteur d’
application
1 fichier de description de l'application: AndroidManifest.xml
Descripteur de l'application





Renseignements sur l'application (nom, version de code, SDK
supporté...)
Définit le comportement des Activity et leurs actions
Déclare auprès du système les Intent accessibles
Définit les services, broascat receiver et content provider

Déclaration des ressources nécessaires (applications, Internet,
matériels, données...)


L'utilisateur est toujours prévenu à l'installation des ressources
requises pour le bon fonctionnement de l'application. Il peut accepter
ou refuser.
Jeudi 2 Juillet 2009

Interface graphique (IHM)
IHM : Présentation
Différents de J2ME, AWT ou Swing
Deux méthodes de création



XML (recommandé)
Code Java

Avantages XML






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

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 : les layouts, 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

Chaque composant





Dispose d'un identifiant unique (de préférence)
Peut être accédé, ajouté, 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

Identification par le fichier R.java (généré par aapt)
Compiler sous forme de vue embarquée dans le fichier dex
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.xml
Ne pas contenir de majuscule ou de chiffre

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.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>
Jeudi 2 Juillet 2009

Interface graphique (IHM)
IHM : les layouts, les vues
Charger le layout désiré




Référencés sur le nom de fichier (sans extension) dans R.java
R.layout.monlayout
setContentView(layout)
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}

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,
wrap_content...)
android:id, android:text, android:background...

Chaque composant dispose de ses arguments propres:


android:orientation pour LinearLayout (vertical, horizontal)
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, /res/values-en contenant un fichier string.xml
Utiliser les mêmes clés pour afficher la valeur dans la langue
correspondante
Jeudi 2 Juillet 2009

Interface graphique (IHM)
IHM : Les menus

Menu Option

Sous menu

Menu contextuel
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.monBouton);
b.setOnClickListener(evtClickSurMonBoutton);
…
…
OnClickListener evtClickSurMonBoutton = new OnClickListener(){
public void onClick(View v){
// Implémentation
}
};
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, Texte
Icône
Boutons
Animation, personnalisable

Bloquante
AlertDialog.Builder
Personnalisable à volonté
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
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, RIGHT/LEFT_OUTER_JOIN,
certaines options ALTER_TABLE

SQLITE3



Librairie de manipulation
Accessible par adb shell

Type de données supportées: NULL, INTEGER, REAL, TEXT,
BLOB
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);
…
}
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, fichiers plats, accès distant
A partir d'une URI





Create
Read
Update
Delete

Utilisation de ContentProvider existant –d'autres
applications
Créer, 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.hello/user/53
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é

bulkInsert()
-

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

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

Processus





Utilisation d'un composant gérant un adapter (spinner, listview...)
Récupération d'un Cursor
Création de l'adapter
Affichage

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

Données persistantes
IHM, 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, PROJECTION,
null, null, null);
startManagingCursor(c);
ListAdapter adapter = new SimpleCursorAdapter(
this, android.R.layout.two_line_list_item,
c,
PROJECTION,
new int[]{android.R.id.empty,
android.R.id.text1,
android.R.id.text2}
);
setListAdapter(adapter);
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

void retrieveInfo(in String nom, out String Info)
-

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é
Jeudi 2 Juillet 2009

Services et Multithreading
Alarmes, 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

NotificationManager



Hardware (son, led, vibreur)
Icons / Texte

Obtenir une instance du NotificationManager
Création de l'objet Notification (icon, message...)
Création d'un PendingIntent pour la finalité de la notification
(ouverture d'une activity)
Attribuer le pendingIntent à la notification
Envoyer la notification
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, SMTP...
HTTP POST/GET




HttpClient
Renseigner les informations sur la requête
execute()

Requête GET
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet(url);
try{
HttpResponse response = httpclient.execute(httpget);
}
catch (ClientProtocolException cpe) {
Log.e(TAG, "ClientProtocolException retrieveInfo:" + cpe);
}
Jeudi 2 Juillet 2009

Services et Multithreading
Accès distants
Requête POST
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpPost httpost = new HttpPost(http://www.monserveur.com);
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("cle1", valeur1));
nvps.add(new BasicNameValuePair("cle2", valeur2));
httpost.setEntity(new UrlEncodedFormEntity(nvps, null));
HttpResponse response = httpclient.execute(httpost);

Envoi de fichier par POST





Utilisation de HttpURLConnection
Définition des paramètres de la connexion (entrée, sortie, boundary,
méthodes...)
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
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.getContent()
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, calculs...

Les threads n'ont pas accès aux IHM










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

Une Thread ne peut être tuée, le système s'en charge


Gestion d'un état permettant ou non d'appeler ou pas le contenu de run()
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

Multimedia




Son
Caméra
2D/3D
Jeudi 2 Juillet 2009

Livres
Busy coder's guide to Android Development –Mark. L. Murphy –Edition CommonsWare –
444 pages + 2 livres tutoriaux et Advanced Development
http://www.commonsware.com
Hello Android, Introducing Google's mobile development Platform –Ed Burnette –220
pages
http://www.pragprog.com

Ressources en lignes: site web
http://developer.android.com (documentations officielle)
http://sites.google.com/site/io/ (recherche sur Mobile, présentations vidéos)
http://www.anddev.org (tutoriaux, forums)
http://www.androidcommunity.com (actualités)
http://www.devx.com/wireless (actualités, tutoriaux)
http://www.helloandroid.com (actualités)

Ressources en lignes: forums
http://groups.google.fr/group/android-developers
http://groups.google.fr/group/android-beginners

Ressources francophones: actualités et développement
http://www.frandroid.com (actualités, forums)
http://www.pointgphone.com (actualités, forums)
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
Jeudi 2 Juillet 2009

Trusted Logic

en bref

Produits & Solutions pour
•
Smart Cards & Secure Tokens
jTOP
•
Technologie sans contact
Trusted NFC
•Plateformes mobiles
Trusted Foundations
Software
Sécurité
embarquée

Technologies
ouvertes

Services de
consulting et
d’valuation en
é
sécurité
Jeudi 2 Juillet 2009

Trusted Foundations Software
Monde Normal

Monde Sécurisé

(trop riche pour être certifié)

(certifiable)

Applications
Services Sécurisés

Trusted
Foundations
Software

Environnement
ouvert

SChannel

Plateforme

Environnement
sécurisé
programmable
permettant
l’
exécution de
services haut
niveau
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.A.

•
Ipsec (VPN)
•
OpenSSL
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.
 JCE / JCA = Java Cryptographic Extension / Java Cryptographic
Architecture
 Un Provider implémente les interfaces spécifiées par les packages JCE /
JCA.
 Javax.crypto.* fournit les classes et les interfaces pour effectuer des
opérations cryptographiques sur les algorithmes symmétriques.
 Java.security.* fournit les classes et les interfaces pour le framework de
sécurité Java. 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
 …
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
Jeudi 2 Juillet 2009

Intégration d’ Provider
un
Cryptographique sur plateforme OMAP3
Module Kernel pour accéder au monde sécurisé

(1/2)

Kernel Android
 Cloner le kernel
home#
home#
home#
home#
home#

git clone git://git.omapzoom.org/repo/omapkernel.git
cd omapkernel
git checkout --track -b android-2.6.27 origin/android-2.6.27
git checkout android-2.6.27
git pull

 Recompiler le kernel : choisir la configuration / “
cross-compiler”
avec la chaîne de
compilation ARM Code Sourcery ARM Sourcery G++ 2007q3.
 Kernel 2.6.27 et bientôt kernel 2.6.29 : le site permet de profiter des dernières
nouveauté comme un meilleur support des fonctions de mise en veille.
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, 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.
 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.
Jeudi 2 Juillet 2009

Intégration d’ Provider
un
Cryptographique sur plateforme OMAP3
Provider JCE/JCA au dessus de Dalvik (1/2)
TestsProviderCrypto.apk
Code Java
+ AndroidManifest.xml
+ Android.mk
JCE / JCA Interfaces

ProviderCrypto.jar
Code Java
+ JNI
+ Android.mk

ProviderCrypto.so
Code C
+ Android.mk

ProviderCrypto.ko

 Application Java (.apk) dans /system/app
 Android.mk
 AndroidManifext.xml (bibliothèques Java à utiliser, main,
ressources …)
 Source Java

 Bibliothèque Java (.jar) dans /system/framework





Android.mk
Source Java
Glue JNI
Editer le fichier /system/etc/permissions/platform.xml et
ajouter cette bibliothèque pour la rendre accessible aux
applications

 Bibliothèque native (.so) dans /system/lib
 Android.mk
 Source C au dessus de bionic
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.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.


Android.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
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.

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.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
Jeudi 2 Juillet 2009

Intégration d’ Provider
un
Cryptographique sur plateforme OMAP3
Retour d’
expérience (2/2)
Bionic
 ucLibc - 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.security.* et javax.crypto.* 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.

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
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.com
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

Intégration d’
une application de
navigation « off-board » sous Android

SC2 - 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

Navigation Mobile Off-Board
 Application MIDP2.0
 Navigation « off-board »
 Guidage en temps réel: carte + pictogrammes +
audio
 POIs: cinémas, restaurant, radars, etc.

Sur le marché en 2005 en France
(SFR) et en Allemagne (T-Mobile)
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, Bluetooth, EDGE, 3G, Wifi, etc.
 Audio & Vidéo
 Camera, GPS, boussole, etc.
 Graphismes 2D/3D
Google Maps
Jeudi 2 Juillet 2009

Intégration d’
une application de
navigation « off-board » sous Android

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

Intégration d’
une application de
navigation « off-board » sous Android

Android - Environnement de développement (2/2)
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
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.tomasini@altran.com
Jeudi 2 Juillet 2009

QUESTIONS / REPONSES

Merci pour votre
attention

Contenu connexe

Tendances

Tendances (6)

Niji rapport de prévention 2021 - i os 15
Niji   rapport de prévention 2021 - i os 15Niji   rapport de prévention 2021 - i os 15
Niji rapport de prévention 2021 - i os 15
 
Mobiliteatime #2 - WatchKit, le framework de développement pour l’Apple Watch
Mobiliteatime #2 - WatchKit, le framework de développement pour l’Apple WatchMobiliteatime #2 - WatchKit, le framework de développement pour l’Apple Watch
Mobiliteatime #2 - WatchKit, le framework de développement pour l’Apple Watch
 
Niji x mobile mots flash
Niji x mobile   mots flashNiji x mobile   mots flash
Niji x mobile mots flash
 
Formats engageants StickyAdsTV @ Radio 2.0 Paris 2012
Formats engageants StickyAdsTV @ Radio 2.0 Paris 2012Formats engageants StickyAdsTV @ Radio 2.0 Paris 2012
Formats engageants StickyAdsTV @ Radio 2.0 Paris 2012
 
Niji mobile factory - prevention application mobile android11-i os14- 06-2020
Niji   mobile factory - prevention application mobile android11-i os14- 06-2020Niji   mobile factory - prevention application mobile android11-i os14- 06-2020
Niji mobile factory - prevention application mobile android11-i os14- 06-2020
 
Mobiliteatime #1 : "Smartwatches & Apple Watch: Time to market?" by userADgents
Mobiliteatime #1 : "Smartwatches & Apple Watch: Time to market?" by userADgents Mobiliteatime #1 : "Smartwatches & Apple Watch: Time to market?" by userADgents
Mobiliteatime #1 : "Smartwatches & Apple Watch: Time to market?" by userADgents
 

En vedette

G Deces Du Bon Sens2
G Deces Du Bon Sens2G Deces Du Bon Sens2
G Deces Du Bon Sens2
guest6b12b7
 
Solemne 1 empresa y sociedad
Solemne 1 empresa y sociedadSolemne 1 empresa y sociedad
Solemne 1 empresa y sociedad
vanisnisnis
 

En vedette (20)

La música
La músicaLa música
La música
 
Taller
TallerTaller
Taller
 
Test Qi
Test QiTest Qi
Test Qi
 
Sécuriser les parcours professionnels à travers une régulation des temps sur ...
Sécuriser les parcours professionnels à travers une régulation des temps sur ...Sécuriser les parcours professionnels à travers une régulation des temps sur ...
Sécuriser les parcours professionnels à travers une régulation des temps sur ...
 
Les Quatre Bougies
Les Quatre BougiesLes Quatre Bougies
Les Quatre Bougies
 
G Deces Du Bon Sens2
G Deces Du Bon Sens2G Deces Du Bon Sens2
G Deces Du Bon Sens2
 
Utilisation Slideshare
Utilisation SlideshareUtilisation Slideshare
Utilisation Slideshare
 
Aaron
AaronAaron
Aaron
 
Les dangers de la position assise prolongée ... et ses solutions ! (Petit tra...
Les dangers de la position assise prolongée ... et ses solutions ! (Petit tra...Les dangers de la position assise prolongée ... et ses solutions ! (Petit tra...
Les dangers de la position assise prolongée ... et ses solutions ! (Petit tra...
 
Presentaciónv
PresentaciónvPresentaciónv
Presentaciónv
 
Actividad2
Actividad2Actividad2
Actividad2
 
Catalogue ETE 2017
Catalogue ETE 2017Catalogue ETE 2017
Catalogue ETE 2017
 
Solemne 1 empresa y sociedad
Solemne 1 empresa y sociedadSolemne 1 empresa y sociedad
Solemne 1 empresa y sociedad
 
Tarea 9
Tarea 9Tarea 9
Tarea 9
 
Mesure & Analyse: Mesurer les Exigences
Mesure & Analyse: Mesurer les ExigencesMesure & Analyse: Mesurer les Exigences
Mesure & Analyse: Mesurer les Exigences
 
DataDrill EXPRESS: Les équations dans DataDrill
DataDrill EXPRESS: Les équations dans DataDrill DataDrill EXPRESS: Les équations dans DataDrill
DataDrill EXPRESS: Les équations dans DataDrill
 
Fiche pratique Animoto Animateur Numérique MOPA
Fiche pratique Animoto Animateur Numérique MOPAFiche pratique Animoto Animateur Numérique MOPA
Fiche pratique Animoto Animateur Numérique MOPA
 
Software de Computadoras
Software de ComputadorasSoftware de Computadoras
Software de Computadoras
 
Pead
PeadPead
Pead
 
Memoria Actividades 2013 CRTS Córdoba
Memoria Actividades 2013 CRTS CórdobaMemoria Actividades 2013 CRTS Córdoba
Memoria Actividades 2013 CRTS Córdoba
 

Similaire à Android telecom valley

LOGIC INSTRUMENT Présentation Français - Jan. 2014
LOGIC INSTRUMENT Présentation Français - Jan. 2014LOGIC INSTRUMENT Présentation Français - Jan. 2014
LOGIC INSTRUMENT Présentation Français - Jan. 2014
Daniel Schroeder
 
Workshop android
Workshop androidWorkshop android
Workshop android
'Med Douik
 
01 programmation mobile - android - (introduction)
01 programmation mobile - android - (introduction)01 programmation mobile - android - (introduction)
01 programmation mobile - android - (introduction)
TECOS
 
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
Smile I.T is open
 

Similaire à Android telecom valley (20)

Intro Android
Intro AndroidIntro Android
Intro Android
 
android.pdf
android.pdfandroid.pdf
android.pdf
 
LOGIC INSTRUMENT Présentation Français - Jan. 2014
LOGIC INSTRUMENT Présentation Français - Jan. 2014LOGIC INSTRUMENT Présentation Français - Jan. 2014
LOGIC INSTRUMENT Présentation Français - Jan. 2014
 
Programmation sous Android
Programmation sous AndroidProgrammation sous Android
Programmation sous Android
 
Workshop android
Workshop androidWorkshop android
Workshop android
 
Android Intro-DevFest Yde 2013
Android Intro-DevFest Yde 2013Android Intro-DevFest Yde 2013
Android Intro-DevFest Yde 2013
 
Cours mobiles du Mastère CPM 2011 (Telecom ParisTech/INA)
Cours mobiles du Mastère CPM 2011 (Telecom ParisTech/INA)Cours mobiles du Mastère CPM 2011 (Telecom ParisTech/INA)
Cours mobiles du Mastère CPM 2011 (Telecom ParisTech/INA)
 
Cours mobiles du Mastère CPM 2011 (Telecom ParisTech/INA)
Cours mobiles du Mastère CPM 2011 (Telecom ParisTech/INA)Cours mobiles du Mastère CPM 2011 (Telecom ParisTech/INA)
Cours mobiles du Mastère CPM 2011 (Telecom ParisTech/INA)
 
01 programmation mobile - android - (introduction)
01 programmation mobile - android - (introduction)01 programmation mobile - android - (introduction)
01 programmation mobile - android - (introduction)
 
Développement Android
Développement AndroidDéveloppement Android
Développement Android
 
Windows Phone 8 for Business - Developer Talks
Windows Phone 8 for Business - Developer TalksWindows Phone 8 for Business - Developer Talks
Windows Phone 8 for Business - Developer Talks
 
OS mobiles alternatifs
OS mobiles alternatifsOS mobiles alternatifs
OS mobiles alternatifs
 
Ch1. Développement mobile
Ch1. Développement mobileCh1. Développement mobile
Ch1. Développement mobile
 
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
Meet'up "Linux et Android dans les systèmes embarqués et les objets connectés"
 
OpenPlug Elips Studio Flex Montpellier
OpenPlug Elips Studio Flex MontpellierOpenPlug Elips Studio Flex Montpellier
OpenPlug Elips Studio Flex Montpellier
 
Webinar SMILE : "L'Open Source, un accélérateur d'innovation pour les objets ...
Webinar SMILE : "L'Open Source, un accélérateur d'innovation pour les objets ...Webinar SMILE : "L'Open Source, un accélérateur d'innovation pour les objets ...
Webinar SMILE : "L'Open Source, un accélérateur d'innovation pour les objets ...
 
L’open-source au cœur des magasins d’applications
L’open-source au cœur des magasins d’applicationsL’open-source au cœur des magasins d’applications
L’open-source au cœur des magasins d’applications
 
Séminaire Linagora : poste de travail Libre, décembre 2009
Séminaire Linagora : poste de travail Libre, décembre 2009Séminaire Linagora : poste de travail Libre, décembre 2009
Séminaire Linagora : poste de travail Libre, décembre 2009
 
20131210 - Rex Bouygues Telecom - Integration et inspection continue avec RTC...
20131210 - Rex Bouygues Telecom - Integration et inspection continue avec RTC...20131210 - Rex Bouygues Telecom - Integration et inspection continue avec RTC...
20131210 - Rex Bouygues Telecom - Integration et inspection continue avec RTC...
 
Développer des applications pour la TV
Développer des applications pour la TVDévelopper des applications pour la TV
Développer des applications pour la TV
 

Plus de Pascal Flamand

Plus de Pascal Flamand (20)

Start14 french tech startuffe nation
Start14 french tech startuffe nationStart14 french tech startuffe nation
Start14 french tech startuffe nation
 
Article "Un an de télétravail et de COVID" dans le magazine Start
Article "Un an de télétravail et de COVID" dans le magazine StartArticle "Un an de télétravail et de COVID" dans le magazine Start
Article "Un an de télétravail et de COVID" dans le magazine Start
 
Article "La tyrannie du risque zéro" dans le magazine Start
Article "La tyrannie du risque zéro" dans le magazine StartArticle "La tyrannie du risque zéro" dans le magazine Start
Article "La tyrannie du risque zéro" dans le magazine Start
 
Article "quand les licornes voleront..." dans le magazine Start
Article "quand les licornes voleront..." dans le magazine StartArticle "quand les licornes voleront..." dans le magazine Start
Article "quand les licornes voleront..." dans le magazine Start
 
Article sur "Le temps des c(e)rises" dans le magazine Start
Article sur "Le temps des c(e)rises" dans le magazine StartArticle sur "Le temps des c(e)rises" dans le magazine Start
Article sur "Le temps des c(e)rises" dans le magazine Start
 
TOC training Keycloak RedhatSSO advanced
TOC training Keycloak RedhatSSO advancedTOC training Keycloak RedhatSSO advanced
TOC training Keycloak RedhatSSO advanced
 
TOC training KeyCloak Redhat SSO core
TOC training KeyCloak Redhat SSO coreTOC training KeyCloak Redhat SSO core
TOC training KeyCloak Redhat SSO core
 
Article sur l'Agilité dans le magazine Start
Article sur l'Agilité dans le magazine StartArticle sur l'Agilité dans le magazine Start
Article sur l'Agilité dans le magazine Start
 
Article sur l'IA dans le magazine Start
Article sur l'IA dans le magazine StartArticle sur l'IA dans le magazine Start
Article sur l'IA dans le magazine Start
 
Article sur la Smart City dans le magazine Start
Article sur la Smart City dans le magazine StartArticle sur la Smart City dans le magazine Start
Article sur la Smart City dans le magazine Start
 
TOC training Keycloak RedhatSSO UMA
TOC training Keycloak RedhatSSO UMATOC training Keycloak RedhatSSO UMA
TOC training Keycloak RedhatSSO UMA
 
Article sur les Startup dans le magazine Start
Article sur les Startup dans le magazine StartArticle sur les Startup dans le magazine Start
Article sur les Startup dans le magazine Start
 
TOC training Keycloak RedhatSSO advanced
TOC training Keycloak RedhatSSO advancedTOC training Keycloak RedhatSSO advanced
TOC training Keycloak RedhatSSO advanced
 
TOC training KeyCloak Redhat SSO core
TOC training KeyCloak Redhat SSO coreTOC training KeyCloak Redhat SSO core
TOC training KeyCloak Redhat SSO core
 
TOC training OpenIDM
TOC training OpenIDMTOC training OpenIDM
TOC training OpenIDM
 
Article sur les Pitchs dans le magazine Start
Article sur les Pitchs dans le magazine StartArticle sur les Pitchs dans le magazine Start
Article sur les Pitchs dans le magazine Start
 
Article sur la Transformation Digitale dans le Magazine Start
Article sur la Transformation Digitale dans le Magazine StartArticle sur la Transformation Digitale dans le Magazine Start
Article sur la Transformation Digitale dans le Magazine Start
 
Article sur l'IA dans le magazine Start
Article sur l'IA dans le magazine StartArticle sur l'IA dans le magazine Start
Article sur l'IA dans le magazine Start
 
Tribune paca jaguards 12.12.18
Tribune paca jaguards 12.12.18Tribune paca jaguards 12.12.18
Tribune paca jaguards 12.12.18
 
Partenariat Jaguards - Busit
Partenariat Jaguards - BusitPartenariat Jaguards - Busit
Partenariat Jaguards - Busit
 

Android telecom valley

  • 1. Présentation du système d’ exploitation Open Source ANDROID Commission OpenSource Telecom Valley - Jeudi 2 Juillet 2009 -
  • 2. 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
  • 3. 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
  • 4. 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,développeurs, éditeurs, architectes, juristes, marketing, commerce...)  Un groupe dynamique, ouvert et vivant où chacun apporte son expérience/expertise et apprend des autres...  En résumé une vraie communauté professionnelle sur Sophia....
  • 5. Jeudi 2 Juillet 2009 SOMMAIRE  Introduction : Commission Open Source Telecom Valley  Le marché Android et les enjeux - positionnement et dernières 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
  • 6. 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 ponctuelle et développement au forfait Nos compétences : Consulting, implémentations et déploiement de solutions de gestion des identités (LDAP, SSO, PKI..), Etudes d'opportunités et accompagnement à la migration Open Source, déploiement de solutions d'infrastructures. Développement au forfait, assistance et expertise sur des composants Open Source et embarqués, Consulting réseaux et sécurité, ISO 27001, expertise base de données, cluster et virtualisation Editeur des logiciels CmakeBuilder, Jaguards, JAC, KressourcesWCAP et EZ-Slony.
  • 7. Jeudi 2 Juillet 2009 Android Google     Le marché, le matériel, le potentiel Acteur majeur d'internet 1er moteur de recherche 1er publicité en ligne Solutions d'entreprises: Google Apps, Google Enterprise Appliance...  Services gratuits: gmail, apps, photos, vidéos... 2005 : Rachat d'Android Inc.  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
  • 8. Jeudi 2 Juillet 2009 Android Le marché, 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, 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
  • 9. Jeudi 2 Juillet 2009 Android Le marché, le matériel, le potentiel Open Handset Alliance (OHA)
  • 10. Jeudi 2 Juillet 2009 Android Le marché, le matériel, le potentiel Stratégie Google : • OpenSource Plateforme mobile ouverte Plus de revenus Application Web riche Utilisateurs nombreux • Android Market / Google Checkout • Publicité mobile Développeurs nombreux
  • 11. Jeudi 2 Juillet 2009 Android Le marché, le matériel, le potentiel Android pour qui ?  Constructeurs de matériels (téléphones, GPS, netbook, ebook, lecteur multimédia, bornes internet...)  Opérateurs  Éditeurs de solutions logicielles, SSII... Points forts Développeurs Langage Java Modularité, partage Kit de développement gratuit SDK complet Android Market Constructeurs Linux Open Source Coût de licence nul Adaptabilité Utilisateurs Fonctionnel, intuitif et évolutif Multitâches Applications nouvelles Nombreuses applications par défaut
  • 12. Jeudi 2 Juillet 2009 Android Le marché, le matériel, le potentiel Matériels disponible (Avril 2009) - Orange  HTC Dream G1 Version Orange (FR) –Blanc Version T-Mobile (US) –Noir, 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
  • 13. Jeudi 2 Juillet 2009 Android Le marché, le matériel, le potentiel Matériels disponible (Mai 2009) - SFR  HTC Magic G2
  • 14. Jeudi 2 Juillet 2009 Android Le marché, le matériel, le potentiel Matériels disponible (juin 2009)-BT  Samsung i7500/s8000 (Orion)
  • 15. Jeudi 2 Juillet 2009 Android Le marché, le matériel, le potentiel Matériels à venir        Motorola (fin 2009) LG Sony Ericsson (fin 2009) * Huawei Leonovo Acer … Des téléphones mais aussi     Netbooks La présence d'Android par Fujitsu GPS ** Lecteurs multimédia (Archos annonce pour septembre) TV ! * 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. Elle a choisi pour les remplacer d’ intégrer Android et Windows Mobile.
  • 16. Jeudi 2 Juillet 2009 Android Evolution de l’ IHM  Android M3 –Nov 2007  Android M5 –Mars 2008
  • 17. Jeudi 2 Juillet 2009 Android Evolution de l’ IHM  Android - R1.1RC33 Novembre 2008  Android Cupcake Fevrier 2009
  • 18. Jeudi 2 Juillet 2009 Android Evolution de l’ IHM  Android Cupcake Custom HTC Sense UI Juin 2009
  • 19. Jeudi 2 Juillet 2009 Android Conclusions (provisoire…) Les facteurs potentiellement bloquants :  L'omniprésence de Google peut agacer et faire peur...  La position de leader de l'iPhone et son arrivée il y a déjà plusieurs années sur le marché..  La création d'un véritable app-store avec des milliers d'applications...  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, 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, une opportunité à saisir pour notre communauté....
  • 20. 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
  • 21. Jeudi 2 Juillet 2009 Anatomie d’ Android Android: 2 parties   Système d'exploitation Linux Environnement d'exécution Dalvik (Java) Kit de développement Java disponible depuis 2007   Concours Android Developer Challenge (Google) –4 versions Mai 2009 SDK 1.5 –Décembre 2009 Donut 2.0 Versions disponibles sur les matériels  Souvent personnalisées par l'opérateur ou le constructeur  1.0, puis 1.1_RC33  Cupcake 1.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
  • 22. Jeudi 2 Juillet 2009 Anatomie d’ Android
  • 23. Jeudi 2 Juillet 2009 Anatomie d’ Android OS Android: 2 couches inférieures      Linux kernel 2.6.24 ARM Pas de système natif de fenêtrage Pas de support Glibc Optimisation mémoire, processus et alimentation Gestion utilisateurs Dalvik       VM Android Optimisée embarqué Multi instance Optimisation mémoire, sécurité Optimisation bytecode Fichier Dex
  • 24. 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)
  • 25. Jeudi 2 Juillet 2009 Anatomie d’ Android Développement Environnement    Windows XP/Vista Mac OS 10 Linux J2SE   1.5 1.6 SDK Android Eclipse Ganymede + plugin ADT Optionnel: Outil dev C: Intégration code C/C++ en tant que librairie (JNI)
  • 26. 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.xml Les applications ont pour extension APK (Android Package)
  • 27. 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 Intent   Type d'action possible déclaré auprès du système Indique le besoin ou le service offert Content Provider     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
  • 28. Jeudi 2 Juillet 2009 Anatomie d’ Android Développement Services     Composants sans interface graphique Activité de longue durée Démarrer par context.startService: interne à l'application Démarrer par context.bindService: externe à l'application Broadcast Receiver  Réagit à des évènements externes -  Logiciel: Alarme, notifications... Matériel: Activation puce GPS, exting Réveiller une application, afficher un message, lancer une activity
  • 29. 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.dex Construction du package destiné à être installé
  • 30. Jeudi 2 Juillet 2009 Anatomie d’ Android Hello Android Création d'un nouveau projet
  • 31. Jeudi 2 Juillet 2009 Anatomie d’ Android Hello Android Arborescence du fichier créé Construire le projet via le menu Project/Build
  • 32. 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
  • 33. Jeudi 2 Juillet 2009 Les Activity et leurs interactions Activity Cycle de vie d'une Activity
  • 34. Jeudi 2 Juillet 2009 Les Activity et leurs interactions Activity Différentes Activity disponibles - android.app.*        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
  • 35. 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, EDIT, MAIN,...) 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 Appelant (intent) Activity, Services... Recherche de l'IntentFilter le mieux adapté par l'IntentResolver Activity est lancée
  • 36. 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, ScoreActivity.class));    StartActivityForResult Lancer l'activity Récupérer le résultat
  • 37. Jeudi 2 Juillet 2009 Les Activity et leurs interactions Descripteur d’ application 1 fichier de description de l'application: AndroidManifest.xml Descripteur de l'application     Renseignements sur l'application (nom, version de code, SDK supporté...) Définit le comportement des Activity et leurs actions Déclare auprès du système les Intent accessibles Définit les services, broascat receiver et content provider Déclaration des ressources nécessaires (applications, Internet, matériels, données...)  L'utilisateur est toujours prévenu à l'installation des ressources requises pour le bon fonctionnement de l'application. Il peut accepter ou refuser.
  • 38. Jeudi 2 Juillet 2009 Interface graphique (IHM) IHM : Présentation Différents de J2ME, AWT ou Swing Deux méthodes de création   XML (recommandé) Code Java Avantages XML      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 Large éventail de composants déjà disponibles Personnalisation possible de chaque élément Système de « thèmes » disponible
  • 39. Jeudi 2 Juillet 2009 Interface graphique (IHM) IHM : les layouts, 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 Chaque composant     Dispose d'un identifiant unique (de préférence) Peut être accédé, ajouté, 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 Identification par le fichier R.java (généré par aapt) Compiler sous forme de vue embarquée dans le fichier dex
  • 40. 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.xml Ne pas contenir de majuscule ou de chiffre <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.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>
  • 41. Jeudi 2 Juillet 2009 Interface graphique (IHM) IHM : les layouts, les vues Charger le layout désiré    Référencés sur le nom de fichier (sans extension) dans R.java R.layout.monlayout setContentView(layout) public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); } 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, wrap_content...) android:id, android:text, android:background... Chaque composant dispose de ses arguments propres:  android:orientation pour LinearLayout (vertical, horizontal)
  • 42. 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, /res/values-en contenant un fichier string.xml Utiliser les mêmes clés pour afficher la valeur dans la langue correspondante
  • 43. Jeudi 2 Juillet 2009 Interface graphique (IHM) IHM : Les menus Menu Option Sous menu Menu contextuel
  • 44. 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.monBouton); b.setOnClickListener(evtClickSurMonBoutton); … … OnClickListener evtClickSurMonBoutton = new OnClickListener(){ public void onClick(View v){ // Implémentation } };
  • 45. 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, Texte Icône Boutons Animation, personnalisable Bloquante AlertDialog.Builder Personnalisable à volonté
  • 46. 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)
  • 47. 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
  • 48. 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
  • 49. 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, RIGHT/LEFT_OUTER_JOIN, certaines options ALTER_TABLE SQLITE3   Librairie de manipulation Accessible par adb shell Type de données supportées: NULL, INTEGER, REAL, TEXT, BLOB
  • 50. 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
  • 51. 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)
  • 52. 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); … }
  • 53. 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, fichiers plats, accès distant A partir d'une URI     Create Read Update Delete Utilisation de ContentProvider existant –d'autres applications Créer, 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.hello/user/53
  • 54. 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)
  • 55. 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é bulkInsert() - Tableau d'Uri et tableau de ContentValues pour ajouter plusieurs enregistrements en une seule fois Retourne le nombre d'éléments insérés 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
  • 56. 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 Processus     Utilisation d'un composant gérant un adapter (spinner, listview...) Récupération d'un Cursor Création de l'adapter Affichage En cas de personnalisation de l'affichage, nécessité de créer son propre Adapter
  • 57. Jeudi 2 Juillet 2009 Données persistantes IHM, 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, PROJECTION, null, null, null); startManagingCursor(c); ListAdapter adapter = new SimpleCursorAdapter( this, android.R.layout.two_line_list_item, c, PROJECTION, new int[]{android.R.id.empty, android.R.id.text1, android.R.id.text2} ); setListAdapter(adapter);
  • 58. 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
  • 59. 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 void retrieveInfo(in String nom, out String Info) - 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é
  • 60. Jeudi 2 Juillet 2009 Services et Multithreading Alarmes, 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 NotificationManager   Hardware (son, led, vibreur) Icons / Texte Obtenir une instance du NotificationManager Création de l'objet Notification (icon, message...) Création d'un PendingIntent pour la finalité de la notification (ouverture d'une activity) Attribuer le pendingIntent à la notification Envoyer la notification
  • 61. 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, SMTP... HTTP POST/GET    HttpClient Renseigner les informations sur la requête execute() Requête GET DefaultHttpClient httpclient = new DefaultHttpClient(); HttpGet httpget = new HttpGet(url); try{ HttpResponse response = httpclient.execute(httpget); } catch (ClientProtocolException cpe) { Log.e(TAG, "ClientProtocolException retrieveInfo:" + cpe); }
  • 62. Jeudi 2 Juillet 2009 Services et Multithreading Accès distants Requête POST DefaultHttpClient httpclient = new DefaultHttpClient(); HttpPost httpost = new HttpPost(http://www.monserveur.com); List<NameValuePair> nvps = new ArrayList<NameValuePair>(); nvps.add(new BasicNameValuePair("cle1", valeur1)); nvps.add(new BasicNameValuePair("cle2", valeur2)); httpost.setEntity(new UrlEncodedFormEntity(nvps, null)); HttpResponse response = httpclient.execute(httpost); Envoi de fichier par POST     Utilisation de HttpURLConnection Définition des paramètres de la connexion (entrée, sortie, boundary, méthodes...) 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
  • 63. 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.getContent()
  • 64. 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, calculs... Les threads n'ont pas accès aux IHM          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 Une Thread ne peut être tuée, le système s'en charge  Gestion d'un état permettant ou non d'appeler ou pas le contenu de run()
  • 65. 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 Multimedia    Son Caméra 2D/3D
  • 66. Jeudi 2 Juillet 2009 Livres Busy coder's guide to Android Development –Mark. L. Murphy –Edition CommonsWare – 444 pages + 2 livres tutoriaux et Advanced Development http://www.commonsware.com Hello Android, Introducing Google's mobile development Platform –Ed Burnette –220 pages http://www.pragprog.com Ressources en lignes: site web http://developer.android.com (documentations officielle) http://sites.google.com/site/io/ (recherche sur Mobile, présentations vidéos) http://www.anddev.org (tutoriaux, forums) http://www.androidcommunity.com (actualités) http://www.devx.com/wireless (actualités, tutoriaux) http://www.helloandroid.com (actualités) Ressources en lignes: forums http://groups.google.fr/group/android-developers http://groups.google.fr/group/android-beginners Ressources francophones: actualités et développement http://www.frandroid.com (actualités, forums) http://www.pointgphone.com (actualités, forums)
  • 67. 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
  • 68. 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
  • 69. Jeudi 2 Juillet 2009 Trusted Logic en bref Produits & Solutions pour • Smart Cards & Secure Tokens jTOP • Technologie sans contact Trusted NFC •Plateformes mobiles Trusted Foundations Software Sécurité embarquée Technologies ouvertes Services de consulting et d’valuation en é sécurité
  • 70. Jeudi 2 Juillet 2009 Trusted Foundations Software Monde Normal Monde Sécurisé (trop riche pour être certifié) (certifiable) Applications Services Sécurisés Trusted Foundations Software Environnement ouvert SChannel Plateforme Environnement sécurisé programmable permettant l’ exécution de services haut niveau
  • 71. 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.A. • Ipsec (VPN) • OpenSSL
  • 72. 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.  JCE / JCA = Java Cryptographic Extension / Java Cryptographic Architecture  Un Provider implémente les interfaces spécifiées par les packages JCE / JCA.  Javax.crypto.* fournit les classes et les interfaces pour effectuer des opérations cryptographiques sur les algorithmes symmétriques.  Java.security.* fournit les classes et les interfaces pour le framework de sécurité Java. 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  …
  • 73. 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
  • 74. Jeudi 2 Juillet 2009 Intégration d’ Provider un Cryptographique sur plateforme OMAP3 Module Kernel pour accéder au monde sécurisé (1/2) Kernel Android  Cloner le kernel home# home# home# home# home# git clone git://git.omapzoom.org/repo/omapkernel.git cd omapkernel git checkout --track -b android-2.6.27 origin/android-2.6.27 git checkout android-2.6.27 git pull  Recompiler le kernel : choisir la configuration / “ cross-compiler” avec la chaîne de compilation ARM Code Sourcery ARM Sourcery G++ 2007q3.  Kernel 2.6.27 et bientôt kernel 2.6.29 : le site permet de profiter des dernières nouveauté comme un meilleur support des fonctions de mise en veille.
  • 75. 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, 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.  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.
  • 76. Jeudi 2 Juillet 2009 Intégration d’ Provider un Cryptographique sur plateforme OMAP3 Provider JCE/JCA au dessus de Dalvik (1/2) TestsProviderCrypto.apk Code Java + AndroidManifest.xml + Android.mk JCE / JCA Interfaces ProviderCrypto.jar Code Java + JNI + Android.mk ProviderCrypto.so Code C + Android.mk ProviderCrypto.ko  Application Java (.apk) dans /system/app  Android.mk  AndroidManifext.xml (bibliothèques Java à utiliser, main, ressources …)  Source Java  Bibliothèque Java (.jar) dans /system/framework     Android.mk Source Java Glue JNI Editer le fichier /system/etc/permissions/platform.xml et ajouter cette bibliothèque pour la rendre accessible aux applications  Bibliothèque native (.so) dans /system/lib  Android.mk  Source C au dessus de bionic
  • 77. 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.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.  Android.mk : insérer dans les sources Android un fichier Android.mk (makefile-like) pour générer une Application ou une librairie.
  • 78. 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. 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.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
  • 79. Jeudi 2 Juillet 2009 Intégration d’ Provider un Cryptographique sur plateforme OMAP3 Retour d’ expérience (2/2) Bionic  ucLibc - 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.security.* et javax.crypto.* 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. 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
  • 80. 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.com
  • 81. 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
  • 82. Jeudi 2 Juillet 2009 Intégration d’ une application de navigation « off-board » sous Android SC2 - 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
  • 83. 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, restaurant, radars, etc. Sur le marché en 2005 en France (SFR) et en Allemagne (T-Mobile)
  • 84. 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, Bluetooth, EDGE, 3G, Wifi, etc.  Audio & Vidéo  Camera, GPS, boussole, etc.  Graphismes 2D/3D Google Maps
  • 85. Jeudi 2 Juillet 2009 Intégration d’ une application de navigation « off-board » sous Android Android - Environnement de développement (1/2) Kit de développement  Documentation, exemples et librairies  Outils : émulateur, debugger, moniteur de VM, IHM  Nouveauté : Native Development Kit (NDK) Intégration dans Eclipse (plugin ADT)  Création graphique d’ IHM  Gestion des ressources: images, localisation, spécialisation  Chaine de développement complète
  • 86. Jeudi 2 Juillet 2009 Intégration d’ une application de navigation « off-board » sous Android Android - Environnement de développement (2/2)
  • 87. 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 »
  • 88. 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
  • 89. 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
  • 90. 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.tomasini@altran.com
  • 91. Jeudi 2 Juillet 2009 QUESTIONS / REPONSES Merci pour votre attention