I. Android 1.5 Platform Highlights

publicité
Remerciements
Je tiens tout particulièrement à remercier mon maître de stage, Joël Sittler,
pour ses précieux conseils.
Je remercie aussi tous ceux qui m’ont aidé et soutenu lors de la rédaction de ce
mémoire, en particulier Émilie Gschwind, Didier Collet, Mathieu Louzi
et Anaïs Danglehant.
Mes pensées vont également à ma famille qui m’a donné des idées quant à
l’élaboration de mon mémoire et m’a soutenu durant toute la période de sa
réalisation.
Et enfin, merci à Supinfo pour les trois années passées dans leur établissement
-2-
Sommaire
I.
Introduction ------------------------------------------------------------------------------------------------------------------- - 7 -
II.
Présentation de l'entreprise ------------------------------------------------------------------------------------------ - 8 -
Activités générales ------------------------------------------------------------------------------------------------------------- - 8 •
Les standards téléphoniques --------------------------------------------------------------------------------------- - 8 -
•
La mobilité -------------------------------------------------------------------------------------------------------------- - 9 -
•
La présélection -------------------------------------------------------------------------------------------------------- - 9 -
•
La création de site internet ----------------------------------------------------------------------------------------- - 9 -
•
Une solution packagée ---------------------------------------------------------------------------------------------- - 9 -
Implantation géographique -------------------------------------------------------------------------------------------------- - 9 •
L'agence de Strasbourg -------------------------------------------------------------------------------------------- - 10 -
Chiffres clés -------------------------------------------------------------------------------------------------------------------- - 10 Historique de l'entreprise --------------------------------------------------------------------------------------------------- - 11 Organigramme ---------------------------------------------------------------------------------------------------------------- - 12 •
Vue --------------------------------------------------------------------------------------------------------------------- - 12 -
•
Analyse ---------------------------------------------------------------------------------------------------------------- - 12 -
Système fiscal ------------------------------------------------------------------------------------------------------------------ - 12 III.
Problématique ---------------------------------------------------------------------------------------------------------- - 13 A.
Contexte actuel ------------------------------------------------------------------------------------------------------ - 13 -
L'objectif ------------------------------------------------------------------------------------------------------------------------ - 13 IV.
Qu'est-ce qu'Android ------------------------------------------------------------------------------------------------- - 14 Introduction -------------------------------------------------------------------------------------------------------------------- - 14 Schéma -------------------------------------------------------------------------------------------------------------------------- - 15 L'Open Handset Alliance ---------------------------------------------------------------------------------------------------- - 16 Le rôle de Google ------------------------------------------------------------------------------------------------------------- - 17 Un système Open Source---------------------------------------------------------------------------------------------------- - 17 Les principales applications ------------------------------------------------------------------------------------------------ - 19 •
La zone de notifications ------------------------------------------------------------------------------------------- - 19 -
•
Le home --------------------------------------------------------------------------------------------------------------- - 20 -
•
Les applications téléphoniques ---------------------------------------------------------------------------------- - 21 -
•
L'Android Market --------------------------------------------------------------------------------------------------- - 22 -
•
Le clavier virtuel ----------------------------------------------------------------------------------------------------- - 26 -
-3-
Dénomination des versions d'Android ----------------------------------------------------------------------------------- - 27 Historique----------------------------------------------------------------------------------------------------------------------- - 28 Les mises à jour --------------------------------------------------------------------------------------------------------------- - 29 -
V.
•
Mise à jour 1.5 (Cupcake) ----------------------------------------------------------------------------------------- - 29 -
•
Mise à jour 1.6 (Donut) -------------------------------------------------------------------------------------------- - 30 -
•
Mise à jour 2.0 (Eclair) --------------------------------------------------------------------------------------------- - 32 -
Le marché -------------------------------------------------------------------------------------------------------------------- - 34 Évolution du marché des smartphones ---------------------------------------------------------------------------------- - 34 Différentes opportunités de marché ------------------------------------------------------------------------------------- - 39 •
Création d'un système personnalisé --------------------------------------------------------------------------- - 39 -
•
Création d'un appareil --------------------------------------------------------------------------------------------- - 39 -
•
Développement d'application ----------------------------------------------------------------------------------- - 40 -
VI.
Le système --------------------------------------------------------------------------------------------------------------- - 45 -
Le dépôt GIT-------------------------------------------------------------------------------------------------------------------- - 45 Les drivers ---------------------------------------------------------------------------------------------------------------------- - 45 L’accès Root -------------------------------------------------------------------------------------------------------------------- - 45 VII.
Développement d'application -------------------------------------------------------------------------------------- - 47 -
Langage ------------------------------------------------------------------------------------------------------------------------- - 47 •
Basé sur le Java ------------------------------------------------------------------------------------------------------ - 47 -
•
Interface XML -------------------------------------------------------------------------------------------------------- - 47 -
Machine virtuelle ------------------------------------------------------------------------------------------------------------- - 48 •
Dalvik Virtual Machine -------------------------------------------------------------------------------------------- - 50 -
La sécurité ---------------------------------------------------------------------------------------------------------------------- - 50 Mise en place de l'espace de travail ------------------------------------------------------------------------------------- - 51 Les outils mis à disposition par le SDK ----------------------------------------------------------------------------------- - 51 •
ADB (Android Debug Bridge) ------------------------------------------------------------------------------------- - 51 -
•
L’émulateur ----------------------------------------------------------------------------------------------------------- - 52 -
•
Les 9-Patchs ---------------------------------------------------------------------------------------------------------- - 57 -
•
DDMS (Dalvik Debug Monitor Server) ------------------------------------------------------------------------- - 60 -
Les différents types d’applications sous Android ---------------------------------------------------------------------- - 62 •
Activity ---------------------------------------------------------------------------------------------------------------- - 62 -
•
Service ----------------------------------------------------------------------------------------------------------------- - 62 -
•
BroadcastReceiver -------------------------------------------------------------------------------------------------- - 62 -
•
ContentProvider----------------------------------------------------------------------------------------------------- - 62 -
-4-
Quelques caractéristiques du SDK d’Android --------------------------------------------------------------------------- - 63 •
Création du projet simplifiée------------------------------------------------------------------------------------- - 63 -
•
Architecture de base d’un projet-------------------------------------------------------------------------------- - 65 -
•
Le fichier AndroidManifest.xml ---------------------------------------------------------------------------------- - 66 -
•
Les ressources ------------------------------------------------------------------------------------------------------- - 68 -
•
Les bases de données SQLite ------------------------------------------------------------------------------------ - 71 -
•
Les Listview ----------------------------------------------------------------------------------------------------------- - 73 -
Publication sur l'Android Market ----------------------------------------------------------------------------------------- - 75 •
Exportation du projet ---------------------------------------------------------------------------------------------- - 75 -
•
Création d’un compte sur Android Market ------------------------------------------------------------------- - 78 -
VIII.
Conclusion --------------------------------------------------------------------------------------------------------------- - 85 -
IX.
Bibliographie ------------------------------------------------------------------------------------------------------------ - 86 Sites internet ------------------------------------------------------------------------------------------------------------------- - 86 Livres----------------------------------------------------------------------------------------------------------------------------- - 86 -
X.
Annexes------------------------------------------------------------------------------------------------------------------- - 87 -
I.
Android 1.5 Platform Highlights --------------------------------------------------------------------------------------- - 87 -
•
User Interface Refinements --------------------------------------------------------------------------------------------- 87
•
Performance Improvements -------------------------------------------------------------------------------------------- 87
•
New Features --------------------------------------------------------------------------------------------------------------- 87
•
New APIs and Manifest Elements-------------------------------------------------------------------------------------- 88
II.
Android 1.6 Platform Highlights -------------------------------------------------------------------------------------- 90
•
New User Features -------------------------------------------------------------------------------------------------------- 90
Quick Search Box for Android --------------------------------------------------------------------------------------------- 90
Camera, Camcorder, and Gallery ----------------------------------------------------------------------------------------- 90
VPN, 802.1x ------------------------------------------------------------------------------------------------------------------- 90
Battery usage indicator ----------------------------------------------------------------------------------------------------- 90
Accessibility ------------------------------------------------------------------------------------------------------------------- 90
•
Android Market Updates ------------------------------------------------------------------------------------------------ 90
•
New Platform Technologies --------------------------------------------------------------------------------------------- 91
Expanded Search Framework --------------------------------------------------------------------------------------------- 91
Text-to-speech engine ------------------------------------------------------------------------------------------------------ 91
Gestures ------------------------------------------------------------------------------------------------------------------------ 91
Accessibility ------------------------------------------------------------------------------------------------------------------- 91
Expanded support for screen densities and resolutions------------------------------------------------------------ 91
-5-
Telephony support for CDMA --------------------------------------------------------------------------------------------- 91
New version of OpenCore ------------------------------------------------------------------------------------------------- 91
2.6.29 Linux kernel----------------------------------------------------------------------------------------------------------- 92
New Framework APIs ------------------------------------------------------------------------------------------------------- 92
III.
Android 2.0 Platform Highlights -------------------------------------------------------------------------------------- 93
•
New User Features -------------------------------------------------------------------------------------------------------- 93
Contacts and accounts ------------------------------------------------------------------------------------------------------ 93
Email ---------------------------------------------------------------------------------------------------------------------------- 93
Messaging --------------------------------------------------------------------------------------------------------------------- 93
Camera ------------------------------------------------------------------------------------------------------------------------- 93
Android virtual keyboard --------------------------------------------------------------------------------------------------- 93
Browser------------------------------------------------------------------------------------------------------------------------- 93
Calendar ------------------------------------------------------------------------------------------------------------------------ 94
•
New Platform Technologies --------------------------------------------------------------------------------------------- 94
Media Framework ----------------------------------------------------------------------------------------------------------- 94
Bluetooth ---------------------------------------------------------------------------------------------------------------------- 94
New Framework APIs ------------------------------------------------------------------------------------------------------- 94
IV.
View sample ------------------------------------------------------------------------------------------------------------- - 95 -
V.
SQLiteOpenHelper -------------------------------------------------------------------------------------------------------- - 96 -
-6-
I.
Introduction
Au cours de mes trois années d’étude au sein de Supinfo, j’ai effectué un partenariat avec
une société strasbourgeoise appelée « IPRECOM ».
Cette jeune société propose plusieurs services aux entreprises autour des communications
incluant la téléphonie d’entreprise, la création de site internet, la mise à disposition de boites
e-mail, etc.
Mon travail dans cette entreprise, aussi divers que varié, fut très enrichissant. J’ai d’abord été
chargé de réaliser un logiciel de télé-prospection, un autre de facturation, et le site internet
de l’entreprise. De plus, IPRECOM proposant aux clients de la présélection téléphonique, le
logiciel de facturation devait interagir avec l’espace client du site internet en proposant,
entre autres : un suivi-conso, les factures, des statistiques, etc.
IPRECOM proposant aussi de la création de site et la gestion simplifiée de boites e-mail, j’ai
pu mettre en place deux serveurs dédiés. Le premier héberge le site internet d’IPRECOM et
le serveur d’e-mails. Quant au second, nous l’avons configuré pour qu’il devienne un serveur
mutualisé sur lequel tous les sites internet de nos clients sont hébergés.
Entre temps, l’entreprise Google a lancé un nouveau système d’exploitation pour appareils
mobiles appelé « Android ». Devant l’intérêt de ce nouveau système, j’ai rapidement
envisagé de nouvelles opportunités pour IPRECOM. J’en ai fait part à mon maitre de stage, M
Joël Sittler, dirigeant d’IPRECOM qui partageant mon approche m’a chargé de développer la
question afin de définir les nouvelles perspectives que pourrait apporter Android à IPRECOM.
J’ai choisi de consacrer mon mémoire de fin d’études autour d’ « Android », car il est de mon
point de vue dans la continuité des travaux que j’ai réalisés durant mon stage. C’est une des
particularités de notre métier de tenir toujours compte de l’évolution très rapide des
innovations.
Après une présentation d’IPRECOM, je présenterai ce qu’est Android, son historique, ses
particularités et sa part de marché. Je détaillerai ensuite certaines possibilités offertes par le
système puis exposerais leurs mises en œuvre.
-7-
II.
Présentation de l'entreprise
La société IPRECOM est une jeune entreprise créée en 2008 par M Joël Sittler suite à une
première entreprise appelée Twist.
Durant ma première année d'ingénieur au sein de Supinfo, j'ai effectué mon stage de fin
d'études chez Twist, une petite entreprise de prospection téléphonique pour le compte
d'autres entreprises. La principale activité de Twist était de fournir des rendez-vous aux
agents commerciaux d'entreprise de télécommunication comme Futur Télécom.
Mon travail consistait à mettre en place toute l'infrastructure informatique, aussi bien du
point de vue du matériel, comme le choix des postes clients et du serveur, que du point de
vue du logiciel, en développant une application de téléprospection et en maintenant les
logiciels et leurs licences.
Par la suite, nous nous sommes aperçus qu'il serait judicieux de devenir nous même
opérateur téléphonique et d'utiliser la plateforme de téléprospection pour notre compte,
s’en suivit la naissance d’IPRECOM.
Avec IPRECOM, nous avons mis en place toute une solution de téléphonie destinée aux
professionnels. Nous devenions alors opérateurs téléphoniques tout en proposant divers
services autour des télécommunications, par exemple la création et l'hébergement de site
internet.
Activités générales
La société IPRECOM propose des solutions dans le domaine de la communication pour les
entreprises. Notre domaine d'expertise, la communication, se divise en quatre parties,
complémentaires pour nos clients :
•
Les standards téléphoniques
Dans une entreprise, afin d'avoir plusieurs postes sur une même ligne téléphonique, il
existe les standards téléphoniques. Ces standards, en complémentarité avec des postes
téléphoniques évolués, permettent les musiques d'attentes, les transferts d'appels, les
conférences, etc.
Grâce à un partenariat avec la société Siemens, nous disposons de tous les produits de leur
catalogue ce qui nous permet de proposer des devis ainsi que l’installation et la maintenance
de leurs installations téléphoniques.
-8-
•
La mobilité
À l'heure d'aujourd'hui, beaucoup d'entreprises ont des besoins spécifiques en téléphonie
mobile et en accès internet mobile. Grâce à nos partenaires (Orange, Bouygues Télécom
Entreprise et Futur Télécom) nous sommes en mesure de proposer des offres comparatives
adaptées à chaque client.
•
La présélection
Notre principale activité est la présélection téléphonique. Cela nous permet de devenir
l'opérateur téléphonique du client sans que cela soit contraignant pour ce dernier. Il n'est pas
nécessaire de modifier l'équipement téléphonique du client ni de lui imposer un préfixe de
numérotation particulier. Ceci est totalement transparent pour le client, les seules
différences étant ses tarifs de communication et ses factures ne provenant plus d'Orange,
mais d'IPRECOM.
•
La création de site internet
Nous proposons aussi la création, la réservation de noms de domaines et l'hébergement
du site internet du client. En fonction des besoins du client, nous leur proposons un site
vitrine ou un site personnalisé et ajustons les tarifs. De plus, nous leur proposons
l'hébergement de leur site Web existant et l'assistance pour une éventuelle configuration de
leurs clients e-mail.
•
Une solution packagée
Nous proposons aux clients des tarifs préférentiels pour une offre groupant ces quatre
domaines. Les clients ont tout de même la possibilité de choisir individuellement ce dont ils
souhaitent profiter.
Implantation géographique
IPRECOM est actuellement présente dans trois villes d'Alsace.
Le siège social est situé dans l'Espace Européen de l’Entreprise, au 7 Avenue de l’Europe à
Schiltigheim, près de Strasbourg.
Deux agences sont présentes à Strasbourg et une à Ingersheim.
Cette implantation très ciblée nous permet d'être suffisamment proches physiquement de
nos clients. Il est cependant prévu à l'avenir d'ouvrir une agence à Lyon afin d'élargir notre
portefeuille client.
-9-
•
L'agence de Strasbourg
L'agence dans laquelle j'ai effectué mon mémoire est implantée au cœur de Strasbourg au
25 Avenue du General de Gaulle. On peut s’y rendre soit par l’autoroute A35 en prenant la
sortie « Kehl - Zone portuaire » puis en suivant les signalisations indiquant l’Esplanade, soit
en tramway en sortant à l’arrêt « Esplanade » sur la ligne C ou E.
(Image provenant de maps.google.fr)
Chiffres clés
IPRECOM est une SARL au capital de 15 000 €. Son effectif comprend six collaborateurs,
dont le dirigeant, deux responsables commerciaux, deux téléprospecteurs, et moi-même
comme stagiaire informaticien. De plus, IPRECOM fait souvent appel à des intérimaires pour
sa plateforme de téléprospection qui comprend cinq postes. Quant aux responsables
commerciaux, ils supervisent les sept agents commerciaux qui travaillent pour leurs comptes.
Son portefeuille client est constitué de 46 clients récurrents comprenant deux succursales
Axa, ainsi que l'hôpital local de Rosheim.
- 10 -
Historique de l'entreprise
La société IPRECOM, étant relativement récente, elle ne dispose pas d’un historique
influant sur son image, sa notoriété ou sur un éventuel savoir-faire séculaire. Voici un
curriculum vitae de la société :
08 Juin 2006 : Création de la société Twist.
10 juillet 2006 : 2ème Salarié
Avril 2007 : obtention d’un contrat national avec l’opérateur FUTUR TELECOM
Juillet 2007 : 3ème salarié
Septembre 2007 : 4ème salarié
Octobre 2007 : 5ème salarié
Janvier 2008: Twist devient IPRECOM
- 11 -
Organigramme
•
Vue
Joël SITTLER
Dirigeant
Géraldine LAFARGUE
Cadre
Responsable Commerciale
Jean-Baptiste LOLL
Responsable Commercial
Téléacteur 1
Téléacteur 2
Agents Commerciaux
Jean KRUGER
Téléprospecteur
Téléprospecteur
Externe
Stagiaire
•
Analyse
Cette structure hiérarchique est couramment utilisée dans les petites entreprises. Ses
principaux avantages sont sa simplicité et la vue d’ensemble qu’elle donne au dirigeant.
Quant aux employés, ils n’ont aucune difficulté pour déterminer à qui s’adresser en cas de
requête. Par contre, cette structure donne une charge plus importante au dirigeant qu’une
structure fonctionnelle simple. C’est donc probablement vers ce type de structure qu’il
faudra se tourner lorsqu’IPRECOM aura atteint le stade de moyenne entreprise.
Système fiscal
La société IPRECOM est une Société à Responsabilité Limitée, elle est soumise à l’impôt
sur les bénéfices, ce dernier est déterminé lors du bilan annuel et du compte de résultat.
L’année fiscale commence le 1er janvier et se finit le 31 décembre.
- 12 -
III.
Problématique
La problématique consiste à découvrir différentes solutions logicielles autour du système
Android. Il s'agira de passer en revue les différentes possibilités qu'apporte le système
Android et d'imaginer d'éventuelles opportunités commerciales pour IPRECOM.
A. Contexte actuel
Comme cité précédemment, les différents domaines d'activités d'IPRECOM gravitent
autour des télécommunications. Nous proposons aussi bien de la présélection téléphonique
que de l'hébergement de site internet. Cependant, pour ce qui est de nos offres en mobilité,
nous sommes relativement restreints en raison du fonctionnement de ce pôle. En effet, nous
revendons simplement les offres de nos partenaires en mobilité.
En ce qui concerne le marché, la plupart des grandes sociétés et des courants d'idées voient
en la communication mobile une technologie naissante qui est à un moment charnière de
son évolution. La plupart des experts qui se sont penchés sur le sujet s'accordent à voir la
communication mobile comme une évolution majeure dans nos nouveaux modes de vie
technologiques. Le téléphone mobile a de grandes chances de devenir l'outil remplaçant
l'ordinateur pour bon nombre de nos utilisations informatiques actuelles.
L'objectif
Afin d'élargir notre pôle mobilité, nous pensions rechercher différentes solutions autour
des systèmes d'exploitations pour appareils mobiles évolués, communément appelés
Smartphone ou Ordiphone.
Notre sentiment s'est concrétisé lors des différentes annonces autour du système
d'exploitation, initié par la société Google, appelé Android. En effet, ce système donne une
possibilité fiable de création ou modification d'appareils mobiles destinés au client ou encore
de création de services supplémentaires pour notre pôle mobilité.
Pour commencer, je mettrai en avant la présentation d'Android en détaillant son histoire, ses
particularités et son rôle. Il est en effet indispensable d'avoir une connaissance globale du
projet pour en imaginer de nouvelles utilités. Il sera aussi utile d'expérimenter les premières
étapes de réalisation de certaines solutions afin d'en déterminer leurs complexités et
estimer leurs coûts.
- 13 -
IV.
Qu'est-ce qu'Android
Introduction
Android est un système d'exploitation pour smartphone, aussi appelé téléphone
intelligent ou Ordiphone. Ce projet est né d'un consortium de 34 entreprises (en 2008), initié
par la société Google le 5 novembre 2007, et appelé l'Open Handset Alliance ou OHA. Son
but consistait à trouver une solution fiable pour concurrencer Apple avec l'IphoneOS,
Microsoft avec Windows Mobile, Nokia avec Symbian et Research In Motion avec Blackberry
OS. En effet à cette époque, la quasi-totalité des smartphones fonctionnait sur ces systèmes
d’exploitation.
Cependant, la principale différence d'Android face aux autres solutions est qu'il soit open
source. Cette particularité le rend donc gratuit, et personnalisable par les constructeurs et les
opérateurs de téléphonie mobile. Malgré des personnalisations accrues en terme d'interface
utilisateur et de fonctionnalité, le cœur du système reste commun ce qui permet une
interopérabilité des applications. De ce fait, si l'on ne prend pas en compte les difficultés
liées aux différences matérielles des périphériques, un téléphone Samsung et un autre SonyEricsson fonctionnant tous les deux sur Android seront en mesure d'exécuter les mêmes
applications sans aucune compilation supplémentaire.
- 14 -
Schéma
Voici un schéma très bref d'un système Android et de son rôle.
Partie matérielle de l'appareil
Spécificité matérielle, par exemple la résolution de l'écran, la présence ou non de
capteurs, etc.
Système d'exploitation Android
Le système d'exploitation provenant des sources officielles et modifiées par le
constructeur pour l'intégration des pilotes et des spécificités de leur appareil.
Le système étant extrêmement modulaire, il peut aussi être modifié par l'opérateur
téléphonique ou encore l'utilisateur final.
Applications Google
Google Market
Gmail
Gtalk
Google Maps
YouTube
Applications tierces
Applications gratuites ou payantes
diffusées à l'aide de Google Market ou
d'autre market alternatif comme
SlideMe.
Ce schéma ne permet pas d'expliquer en détail ce qu'est Android, mais d'avoir une vue
d'ensemble de la solution. Il met l'accent sur la différence entre l'appareil, son système
d'exploitation et ses applications.
En effet, bien qu'il soit courant de différencier la partie matériel et logiciel d'un ordinateur
(par exemple, un ordinateur fonctionnant sous le système d'exploitation Microsoft Windows
n'est pas construit par Microsoft), cette idée n'est pas encore démocratisée pour ce qui
concerne les appareils mobiles.
- 15 -
L'Open Handset Alliance
L'OHA est un consortium de 34 entreprises comprenant des opérateurs de téléphonie
mobile, des fabricants de semi-conducteurs, des fabricants d'appareils, des sociétés de
services internet et des sociétés de développement logiciels.
Voici les sociétés composant l'OHA d'après le site officiel
Mobile Operators
Handset Manufacturers
Bouygues Telecom
China Mobile Communications Corporation
China Telecommunications Corporation
China United Network Communications
KDDI CORPORATION
NTT DoCoMo, Inc.
SOFTBANK MOBILE Corp.
Sprint Nextel
T-Mobile
Telecom Italia
Telefónica
Vodafone
Acer Inc.
Alcatel mobile phones
ASUSTeK Computer Inc.
Foxconn International Holdings Limited
Garmin International, Inc.
HTC Corporation
Huawei Technologies
Kyocera
Lenovo Mobile Communication Technology Ltd.
LG Electronics, Inc.
Motorola, Inc.
Samsung Electronics
Sony Ericsson
Toshiba Corporation
ZTE Corporation
Semiconductor Companies
Software Companies
Commercialization Companies
AKM Semiconductor Inc
Audience
ARM
Atheros Communications
Broadcom Corporation
CSR Plc.
Cypress Semiconductor Corporation
Freescale Semiconductor
Intel Corporation
Marvell Semiconductor, Inc.
MIPS Technologies, Inc.
NVIDIA Corporation
Qualcomm Inc.
Renesas Technology
ST-Ericsson
Synaptics, Inc.
Texas Instruments Incorporated
Via Telecom
Ascender Corp.
eBay Inc.
Google Inc.
LivingImage LTD.
Myriad
Nuance Communications, Inc.
OMRON SOFTWARE Co, Ltd.
PacketVideo (PV)
SkyPop
SONiVOX
SVOX
Aplix Corporation
Borqs
Noser Engineering Inc.
Sasken Communication Technologies Limited
SQLStar International Inc.
TAT - The Astonishing Tribe AB
Teleca AB
Wind River
Wipro Technologies
http://www.openhandsetalliance.com/oha_members.html
- 16 -
Ces sociétés se sont réunies, par l'initiative de Google, dans le but de créer des solutions
matérielles et logicielles mobiles. En effet, à cette époque le marché des smartphones était
principalement partagé entre Apple, Microsoft, Nokia et Research In Motion (Blackberry).
Ce partenariat, unique en son genre, donne un poids non négligeable en termes de
ressources et de recherches et développement allouable au projet Android. Bien qu'il ne soit
pas possible de comparer les ressources d’un consortium de 34 entreprises avec celle d’une
unique société, nous pouvons déjà voir la force d'un tel groupement. À l'heure actuelle :
- Google travaille sur l'amélioration globale du système
- HTC, Samsung et Sony Ericsson créent de nouveaux appareils
- Qualcomm invente de nouveaux processeurs
- Myriad optimise une partie du système promettant une vitesse d'exécution de toutes les
applications multiplié par trois et une consommation d'énergie moindre.
Ajoutons à cela le côté open source du produit et tout porte à croire que ce projet évoluera
de façon exponentielle.
Le rôle de Google
Google, en plus d'initier l'Open Handset Alliance, a entrepris le développement d'Android.
Bien que le système est distribué gratuitement, puisqu'il est sous licence open source,
Google a bien compris l'intérêt financier qui en découlerait. En créant ce système
d'exploitation, ils ont pu y joindre leur écosystème en centrant le navigateur internet sur leur
moteur de recherche, et en y mettant des applications interfaçant leur service Web comme
Gmail, Gtalk, Maps ou encore YouTube. Ceci leur a permis de créer plusieurs valeurs ajoutées
comme la synchronisation des contacts avec le compte Gmail de l'utilisateur ou encore la
géo-localisation des utilisateurs consentant via Latitude.
Un système Open Source
Bien qu'initialement développé par la société Google, le système d'exploitation est open
source sous licence Apache 2.0.
Contrairement à une licence copyleft qui oblige les auteurs de produit utilisant un code
source copyleft ou une partie de celui-ci à appliquer une licence de même type. La licence
Apache autorise l'utilisation du code source pour l'élaboration d'un produit libre,
propriétaire, gratuit ou commercial.
Cependant, la licence oblige le maintien du copyright et du texte de celle-ci pour toutes
modifications ou réutilisation du code source.
- 17 -
De ce fait, bien qu'ayant une totale liberté sur l'utilisation du code source d'Android, il est
obligatoire de :
- faire apparaître une copie de la licence d'origine
- détailler toutes les modifications apportées au code source d'origine
- mentionner les marques déposées, les brevets, les notes d'attribution et les copyright
concernant le code distribué
- mettre à disposition l'éventuel fichier NOTICE fourni avec la licence d'origine.
De plus, bien que le système d'exploitation soit entièrement open source, ce n'est pas le cas
des applications fournies avec la plupart des téléphones. En effet, les applications Google
telles que Google Market, Gtalk, Gmail, Maps ou encore YouTube sont propriétaires et
nécessitent l'accord de Google pour leur diffusion. Cependant, à l'instar de la société Archos
avec sa tablette internet Archos 5, il est tout à fais possible de profiter du système Android
sans les applications propriétaires de Google. La société Archos a d'ailleurs développé une
application similaire au Google Market pour le déploiement d'applications.
- 18 -
Les principales applications
Le système Android tout seul ne rend pas l'appareil réellement utilisable. Il fonctionne
donc étroitement avec plusieurs applications, provenant de Google ou d’autres éditeurs et
permettant une utilisation complète d'un smartphone. Ce type d'architecture donne aussi la
possibilité aux développeurs et le choix à l'utilisateur final de remplacer les applications de
base de leur appareil.
Parmi ces applications, nous détaillerons quelques exemples.
•
La zone de notifications
La zone de notification n'est pas une application comme les autres puisqu'elle ne permet
pas son remplacement. Bien qu'elle soit stylisable par l’utilisation de thèmes, elle ne peut
pas être modifiée fondamentalement sans en modifier
le système d’exploitation.
Dans cette capture d'écran, nous voyons la partie
Barre de notification pliée
haute
de
l'interface
Android qui constitue la
zone de notification. Elle informe l'utilisateur des différentes
notifications invoquées par les applications par exemple la
réception d'un nouvel e-mail ou d'un SMS.
Lorsque l'utilisateur glisse son doigt sur cette barre afin de la
faire coulisser vers le bas, elle affiche les détails des
notifications et permet,
lors d'une pression sur ces
notifications, l'ouverture de l'application concernée. Bien
que le SDK donne la possibilité au développeur de cacher
cette barre lors de l'affichage de leurs applications, cette
fonctionnalité est rarement utilisée puisqu'elle ne facilite pas
Barre de notification dépliée
l'expérience utilisateur. En effet, à part pour quelques cas
précis comme la lecture de vidéo ou les jeux, cette barre ne gêne pas de par son apparence
plutôt discrète et très pratique puisqu'elle permet de voir d'un simple coup d'œil les
différents événements nécessitant l'action de l'utilisateur.
- 19 -
•
Le home
Le home est l'application principale du système. Elle peut s'apparenter au bureau d'un
système d'exploitation pour ordinateur.
L'équipe de
Google ayant développé le système a aussi développé un
home sous licence open source. Ce home est représenté
par trois bureaux coulissants de gauche à droite sur
lesquels il est possible d'y placer des raccourcis vers les
applications installées
et des widgets, sorte
d'interface minimaliste
d'application.
Cette solution de home
sous
forme
d'application donne la
possibilité à l'utilisateur
Home d'origine avec un widget
représentant une horloge et la météo
de
changer
en
installant simplement de
nouvelles applications. On pourrait comparer cette
fonctionnalité au système d'interface graphique utilisé
sous les systèmes Linux permettant le choix entre
plusieurs
interfaces
complètement
Possibilité de choisir son home
différentes comme Gnome ou KDE.
Lorsque l'utilisateur installe une autre application home,
le système lui propose de choisir lequel il souhaite utiliser
et de se souvenir de son choix. Par la suite, l'utilisateur
pourra repasser à un autre home déjà installé en allant
dans les paramètres des applications.
Plusieurs homes alternatifs on fait leurs apparitions, par
exemple, OpenHome, GDE, dxTop, SweeterHome, etc.
Certains de ces homes sont payants, d’autres non ; open
Home alternatif, GDE
Home alternatif GDE
source ou propriétaire. Chacun apporte ses lots de
nouveautés et il est nécessaire de les tester ou de faire
- 20 -
des recherches sur internet pour faire un choix correspondant à ses attentes.
Pour ce qui est de GDE, celui pris en exemple ci-dessus, il propose 7 bureaux plutôt que les 3
par défaut, l'utilisation de thèmes ou encore des transitions entre les bureaux un peu plus
peaufinés.
Certaines sociétés commencent déjà à imaginer des homes
complètement différents de celui d'origine comme par exemple la
société TAT avec l'annonce de TAT Home. Un home composé aussi de
plusieurs bureaux, mais primant sur les effets 3D.
Nous sommes qu'au début d'Android et
beaucoup de homes alternatifs sont déjà
apparus. Ces applications proposent pour
la plupart des concepts et des visuels
Passage d'un bureau à l'autre
avec TAT Home
vraiment innovants pour ce qui est de
l'interface graphique d'un smartphone.
Cette possibilité d'utiliser des homes alternatifs aussi facilement
donne à Android une force que peu de ses concurrents ont. On
pourrait imaginer des systèmes Android totalement différents
visuellement, mais ayant tous l’avantage d'un système commun,
comme des fonctionnalités similaires et une compatibilité des
Widget permettant le contrôle du
lecteur de musique par TAT
Home
applications.
La plupart des constructeurs, ayant compris cette opportunité, proposent des homes
personnalisés.
•
Les applications téléphoniques
Sur Android, les applications pour toutes les utilités téléphoniques sont aussi
remplaçables. C’est aussi vrai pour le répertoire des contacts, que pour le dialer ou la gestion
des SMS et MMS.
Ainsi, il existe plusieurs applications gratuites pour remplacer l'application d'origine qui gère
les SMS et les MMS. Ces applications fournissent plusieurs avantages comme une
personnalisation accrue de l'apparence, la gestion des MMS intégrés dans les fils de
discussions ou encore la possibilité de dicter le message et de le lire par TextToSpeech.
- 21 -
Application SMS par défaut
•
Application SMS par défaut
Application SMS Handcent
Application SMS Handcent
L'Android Market
Afin que les développeurs puissent mettre à disposition de manière simple et efficace
leurs applications aux utilisateurs du monde entier, Google à développé l'Android Market.
Cette application, similaire à l'AppStore d'Apple pour
l'iPhone, est le portail d’application par défaut des
téléphones Android. Elle n’est pas Open source, il n'est
donc pas légal de vendre un appareil ou publier une version
d'Android avec l'Android
Market
sans
l'autorisation de Google.
Le Market permet la
mise
à
disposition
d'applications gratuites
ou payantes et de les
parcourir par catégorie.
Chaque
Android Market sur Cupcake et
inférieur
application
affiche une icône, un nom
d'application, une description, deux captures d'écrans et
les commentaires des utilisateurs.
Pour ce qui est du mode de paiement utilisé par Google
pour l'Android Market, il s'agit sans trop de surprises de
Google Checkout, un concurrent direct de Paypal pour le
Android Market sur Cupcake et
inférieur
paiement en ligne. Tout comme ce dernier, Google Checkout permet la mémorisation des
informations bancaires afin de payer sur les sites marchands sans devoir ressaisir ses
- 22 -
coordonnées bancaires. Ce choix est relativement bien
fait pour inciter les utilisateurs à acheter des applications.
En effet, après quelques pressions sur l'écran, l'utilisateur
achète une application et en profite dans la minute qui
suit.
Cependant, l'Android Market est sujet à quelques
controverses. Étant un outil primordial dans l'utilisation
de l'appareil par son utilisateur, certains reprochent à
Google de ne pas avoir été totalement juste dans leur
principe de rendre le système Open Source et accessible.
De plus, le système
d'achat
Android Market sur Cupcake et
inférieur
applications
des
favorise
grandement l'utilisateur
au détriment du développeur. En effet, lorsqu’un
utilisateur achète une application sur le Market, il a la
possibilité de revenir sur son achat dans les vingt-quatre
heures. Bien que l'utilité d'une telle démarche soit
indispensable pour que les utilisateurs soient satisfaits de
leurs achats, il peut être utilisé dans le but de voler
l'application. Il est relativement simple de récupérer le
fichier correspondant à l'application avant de faire une
demande de remboursement pour ensuite le réinstaller,
ou même, le diffuser. Certaines applications par exemple
Astro qui est avant tout un gestionnaire de fichiers,
Android Market sur Donut et
supérieur
permettent même en quelques clics de sauvegarder les
applications sur la carte mémoire du téléphone.
Bien sûr, Google avait prévu ceci et a créé deux types de publications sur le Market :
-
L'application non protégée contre la copie sera installée dans un dossier accessible
par d'autres applications tout en stockant les paramètres de l'utilisateur dans un
dossier uniquement accessible par elle-même
-
L'application protégée contre la copie sera, quant à elle, disposée dans un dossier
privé et accessible uniquement par le système. Elle prendra un peu d'espace
mémoire supplémentaire.
- 23 -
Si les développeurs prennent ceci en considération, ils
ont donc la possibilité de permettre ou non la sauvegarde
de leurs applications. Cependant, il est possible, pour la
plupart des appareils du marché, de modifier le système de
façon à pouvoir accéder à tous ses fichiers. Cette solution,
que l'on détaillera dans le chapitre traitant du système,
permet donc de récupérer une application protégée pour se
la faire rembourser puis la réinstaller.
En plus de ces deux points, certains voient le contrôle de
Google sur l'Android Market de façon négative. Bien que
leur politique de validation des applications est beaucoup
plus souple que celle de son principal concurrent, Apple
avec l’AppStore, Google a aussi le pouvoir de refuser une
application pour des raisons politiques ou commerciales.
Android Market sur Donut et
supérieur
Enfin, Google utilise son service CheckOut pour le règlement des applications payantes sur
l'Android Market. Pour le moment, ce service est accessible pour seulement huit pays du
monde qui sont l'Australie, l'Autriche, la France, l'Allemagne, les Pays-Bas, l'Espagne, le
Royaume-Uni, et les États-Unis. Lorsqu'un développeur décide de rendre son application
payante, son marché est donc relativement limité.
Pour ces différentes raisons, plusieurs Market alternatifs
ont vu le jour comme SlideMe ou encore AppsLib de la
société Archos.
Pour ce qui est de AppsLib, son principal rôle était de
fournir un market spécialisé pour les MID (soit les Mobile
Internet Device), sorte de mi-chemin entre un téléphone
et un ordinateur, représenté le plus souvent pas une
unique dalle tactile. Ces MID sont de taille supérieure aux
téléphones et ont donc généralement une résolution plus
élevée. Ceci donne la possibilité de faire des interfaces
utilisateurs plus riches en éléments.
En ce qui concerne SlideMe, il a été créé dans le but de
compléter certaines lacunes de l'Android Market. Il fournit
Market alternatif SlideMe
un système de paiement plus complet en acceptant les
paiements par virement bancaire, Amazon Payments, Paypal, Ukash, Moneybookers,
SnapCard, Western Union et PaySafeCard. Ils ont aussi mis en place le SlideLock, une librairie
- 24 -
à joindre aux sources du projet permettant de vérifier
l'autorisation de l'utilisateur pour exécuter l'application.
Ceci constitue une bonne solution pour protéger ses
applications payantes contre la copie puisque cela
entraine la nécessité de cracker l'application au lieu de
simplement en faire une copie. Enfin, SlideMe permet
d’afficher une meilleure description des applications
avec, par exemple, la possibilité d'y joindre une vidéo
hébergée sur YouTube.
Cependant, le gros problème avec tous ces markets
alternatifs est leur diffusion. D'une part, la majorité des
utilisateurs n'y accède pas sans l'installation préalable du
market en question.
Market alternatif SlideMe
développeurs devront
D'autre
part,
les
référencer leurs applications sur
chaque market pour lesquels ils souhaitent être présents.
Ceci peut rendre certaines tâches, comme les mises à jour,
assez rébarbatives pour les développeurs.
Bien que ces markets soient une bonne solution pour la
diffusion des applications et de leurs mises à jour, il est tout
à fait possible de distribuer les applications via un simple
site internet.
En effet, la compilation d’une application pour Android
génère un fichier compressé contenant les sources
compilées et les ressources (images, sons, …) avec comme
Market alternatif SlideMe
extension « apk ». Après avoir été téléchargé sur Android, l'utilisateur peut utiliser d’autres
applications, comme le gestionnaire de fichiers Astro, pour l’installer. Cependant, avec une
telle méthode, il sera nécessaire que l'application gère par elle-même les notifications de
mise à jour. En effet, les notifications de mises à jour des markets ne concernent que les
applications installées via ces derniers.
- 25 -
•
Le clavier virtuel
À partir de la version 1.5, Android offre à l’utilisateur le choix de son
clavier tactile. C’est une très bonne chose puisque cela pousse les éditeurs à
trouver des solutions innovantes de saisie. Alors que certains tentent
d’améliorer le clavier virtuel en mettant l’accent sur la correction à l’aide du
T9 ou sur la réactivité et la prise en charge de la multitouche ; d’autres
créent de nouveaux concepts de saisie allant d’une simple modification de
la disposition des touches à de nouveaux concepts de saisis.
C’est ainsi que la société Swype Inc. a créé une méthode basée sur le
Clavier Swype
glissement du doigt sur chaque lettre composant un mot. Tout comme le reste des
applications, l’installation d’un clavier virtuel se fera via un market et il sera possible de
choisir quel clavier utiliser.
Clavier Android par défaut
Choix du clavier
Clavier Samsung
Clavier SlideType
- 26 -
Dénomination des versions d'Android
À partir de la version 1.5 d'Android, Google a décidé de nommer les différentes versions
par des noms de pâtisseries. C'est ainsi que la version 1.5 est communément appelée
Cupcake, puis Donut pour la 1.6 et enfin Eclair pour la 2.0 et la 2.1.
En ce qui concerne les prochaines mises à jour, ce sera Froyo puis, bien que cela ne soit pas
confirmé officiellement, Gingerbread.
Enfin, la société n'a pas hésité à installer dans les jardins du Googleplex 1 plusieurs
représentations sous forme de statues représentant ces pâtisseries. Ces statues sont
ajoutées au fur est à mesure des sorties des nouvelles versions ce qui donne une solution
plutôt originale pour signaler les évolutions du système.
1
Le Googleplex est le siège social de Google, situé au 1600 Amphitheatre Parkway à Mountain View, en
Californie (Source : Wikipedia)
- 27 -
Historique
– Juin 2005
Google rachète la startup Android Inc., spécialisé dans le développement d'applications
mobile. Les cofondateurs d'Android Inc. Andy Robin, Rich Miner, Nick Sears et Chris White
ont été embauchés pour continuer leur projet.
– 5 Novembre 2007
Création du l'Open Handset Alliance et annonce d'Android.
– 12 novembre 2007
Première mise à disposition du SDK 2
– 17 avril 2008
Création du concours Android Developer Challenge I, premier concours de création
d'applications pour Android. À cette date, 1788 inscriptions avaient été reçues, et 20
gagnants étaient annoncés le 28 aout suivant. Les gagnants ont reçu des récompenses sous
forme d'argent variant entre deux cent cinquante mille dollars et vingt-cinq mille dollars. Le
montant déclarer par Google pour tous les concours ADC s’élève à cinq millions de dollars.
– 28 aout 2008
Annonce de l'Android Market, un système de distribution d'application dans la lignée de
l'AppStore d'Apple pour l’iPhone.
– 23 septembre 2008
Mise à disposition du SDK 1.0 et annonce du premier smartphone sur Android, le HTC G1.
– 21 octobre 2008
Mise à disposition du code source d'Android.
– 22 octobre 2008
Mise en vente du HTC G1.
–
30 avril 2009
Mise à disposition des sources et du SDK 1.5.
–
15 septembre 2009
Mise à disposition des sources et du SDK 1.6.
–
26 octobre 2009
Mise à disposition des sources et du SDK 2.0.
–
2
3 décembre 2009
Un kit de développement ou trousse de développement logiciel est un ensemble d'outils permettant aux
développeurs de créer des applications de type défini. (Source : Wikipedia)
- 28 -
Mise à disposition des sources et du SDK 2.0.1.
–
12 janvier 2010
Mise à disposition des sources et du SDK 2.1.
Les mises à jour
•
Mise à jour 1.5 (Cupcake)
Nouveautés
Peu de temps avant la sortie du deuxième téléphone sur Android, le HTC Magic, le code
source et le SDK ont eu une mise à jour importante en termes de fonctionnalités.
Ainsi, l'interface utilisateur a été retouchée, et des animations de transition ont été ajoutées.
Les performances générales ont aussi été améliorées avec par exemple l'optimisation de la
vitesse d'ouverture et de déclenchement de l'appareil photo.
Parmi les nouvelles fonctionnalités sont arrivées : la possibilité de remplacer le clavier virtuel
avec des applications tierces, l’enregistrement de vidéos, l’utilisation des périphériques
Bluetooth, ou encore les « Live Folders ». Parmi les applications utilisant cette fonctionnalité,
l'application Facebook met à disposition un raccourci pour lister ses contacts Facebook qui
ont spécifié leur numéro de téléphone. Cet exemple d'utilisation des « Live Folders » permet
donc à Facebook de proposer un répertoire de contacts supplémentaire à l'utilisateur.
Le navigateur internet a aussi été mis à jour avec la gestion des copier-coller qui ne lui était
pas implantée.
Cette mise à jour majeure était vraiment indispensable pour avoir un système complet.
Heureusement, la plupart des appareils étaient au moins sur cette version lors de leurs mises
sur le marché. Pour ce qui concerne les quelques appareils en service avec la version 1.1, les
personnes la possédant étaient essentiellement des passionnés. Ils n’ont donc pas dû
omettre de faire une mise à jour lorsqu'ils en avaient la possibilité. En effet, comme cité dans
le chapitre suivant, seul 0,3 % des téléphones Android sont encore en 1.1.
Pour consulter l'intégralité des améliorations, veuillez vous référer à l'annexe I.
- 29 -
•
Mise à jour 1.6 (Donut)
Nouveautés
Quatre mois et demi après la sortie de la première mise à jour majeure, Donut a fait son
apparition.
Cette mise à jour, un peu moins importante que la précédente, apportera tout de même son
lot d'améliorations. Parmi les plus importantes, la recherche globale est apparue. Tout en
ayant le focus 3 en dehors d’un champ de saisie ou sur le champ de recherche, l'utilisation du
clavier provoque une recherche dans l’historique des sites visités, les favoris, sur Google,
mais aussi parmi les noms des applications et des contacts.
De plus, les interfaces utilisateurs pour la prise de photos et de vidéo ainsi que celle de la
galerie multimédia ont changé pour devenir plus intuitives. Et comme avec la mise à jour
précédente, la vitesse de lancement du logiciel de prise de photo et son utilisation ont été
améliorées. Google affirme d'ailleurs une accélération de 39 % pour l'ouverture de
l'application et de 28 % pour l'enregistrement d'une photo.
Pour tout utilisateur de smartphone, l’autonomie relativement faible de ces appareils est un
réel problème. Pour ce qui est d'Android, cela peut être encore plus problématique du fait
que c’est un système multitâche. Certaines applications, pour des raisons plus ou moins
valables, consomment une quantité non négligeable d'énergie lorsqu'elles fonctionnent en
arrière-plan. Afin d'avoir une idée de l'impact de ses applications sur sa batterie, un outil a
été mis à disposition. Cet outil s'occupe d'évaluer les consommations d'énergies de chaque
application afin de savoir lesquelles sont responsables d'une autonomie anormalement
réduite.
Une nouveauté concernant l’Android Market se faisant attendre est enfin arrivée avec cette
mise à jour. Jusqu’à la version 1.5 d’Android, le market reprenait la charte graphique du
système soit du blanc sur fond noir. Bien que ce choix soit justifiable pour son visuel
reposant, cela ne mettait pas en valeur les applications diffusées via le Market. De plus, les
captures d'écran des applications ont fait leur apparition ce qui peut être, un bon vecteur de
communication pour les éditeurs, comme une bonne information supplémentaire pour
l'utilisateur. En effet, l'interface utilisateur est primordiale pour les nouvelles applications
mobiles et une capture d'écran la met en valeur. Cependant, on regrettera l'absence de
démonstration sous forme de vidéo.
3
En informatique, focus est un anglicisme désignant la cible de saisie d'une interface utilisateur graphique,
contrôle fenêtré auquel s'appliquera la prochaine saisie de l'utilisateur. Le terme est le plus souvent utilisé pour
identifier la cible des caractères entrés par le biais du clavier. (Source : Wikipedia)
- 30 -
Pour consulter l'intégralité des améliorations, veuillez vous référer à l'annexe II.
Captures d'écrans
Voici différentes captures d'écrans de quelques nouveautés apportées par Donut.
New Android Market UI
Battery Usage Indicator
Quick Search Box
New Camera / Camcorder UI
(Source : http://developer.android.com/sdk/android-1.6-highlights.html)
- 31 -
•
Mise à jour 2.0 (Eclair)
Nouveautés
Dernièrement une nouvelle mise à jour, apportant elle aussi son lot de nouveautés, a fait
son apparition. Cette mise à jour 2.0 est communément appelée Eclair.
Ainsi, la gestion des contacts a été grandement améliorée. En plus de permettre la
synchronisation de plusieurs comptes Gmail, il est possible de synchroniser ses contacts avec
une multitude de sources de données comme, par exemple, un serveur Microsoft Exchange.
De plus, le SDK ayant été modifié dans ce sens, il est offert aux développeurs la possibilité de
fournir leurs propres sources de données pour la synchronisation. C’est une très grande
avancé pour les sociétés souhaitant se passer des différentes applications Google et donc de
la synchronisation des contacts avec un compte Gmail.
Pour ce qui est du client e-mail, les comptes Microsoft Exchange sont maintenant gérés
nativement. En ce qui concerne la recherche globale, elle prend maintenant en compte le
contenu des SMS et des MMS.
Le logiciel gérant l’appareil photo a de nouveau était amélioré en proposant un zoom
numérique, la gestion d'un flash (en fonction de l'appareil) et l'application de divers filtres
d’images comme l'effet sépia par exemple.
Le navigateur est aussi monté en niveau avec la gestion native de plusieurs balises HTML 5
comme la balise <vidéo> ou encore la géo-localisation.
Enfin, quelques éléments du système en général ont été revus comme l'accélération
graphique, la gestion du Bluetooth 2.1 et une profonde retouche du clavier virtuel diminuant
les fautes de frappe et prenant en compte le multitouch (à condition que le matériel le
supporte) pour une saisie plus agréable et réactive.
Les mises à jour 2.0.1 et 2.1 ont surtout apporté des patchs pour des failles de sécurité ou
d’instabilité. La seule réelle nouveauté de la version 2.1 est l’ajout des Live Wallpaper. Ce
sont des fonds d'écran animés et programmables. Il existe par exemple un Live Wallpaper
affichant une étendue d'eau, sur laquelle des feuilles d’arbres en automne tombent.
Contrairement à ce que l’on pourrait penser en voyant un Live Wallpaper à l’œuvre, ce n’est
pas simplement une animation. Dans notre exemple, chaque pression sur l’écran génère une
onde de propagation sur l’étendue d’eau et les feuilles tombent aléatoirement. Bien que
cette fonctionnalité soit plus ressentie comme un simple gadget plutôt qu’une fonctionnalité
utile, son rendu est vraiment d'un bel effet.
- 32 -
Pour consulter l'intégralité des améliorations, veuillez vous référer à l'annexe III.
Captures d'écrans
Voici différentes captures d'écrans de quelques nouveautés apportées par Eclair.
Messaging Search
Email Combined Inbox
Quick Contacts For Android
Camera Mode
Multiple Accounts
(Source : http://developer.android.com/sdk/android-2.0-highlights.html)
- 33 -
V.
Le marché
Évolution du marché des smartphones
Bien qu’Android soit utilisé pour une multitude de types d’appareil, du smartphone au
netbook, nous allons nous concentrer sur le marché des smartphones puisque c’est sa
principale cible.
D’autre part, plutôt que de différencier les smartphones par leur constructeur, nous allons le
faire en fonction de leur système d’exploitation. En effet, une répartition par constructeur
n’est pas intéressante dans notre cas puisqu’Android est un système d’exploitation destiné à
une multitude de constructeurs.
2007
Linux
9.6%
RIM
9.6%
2008
Autres
1.1%
RIM
16.6%
IPhone
OS 2.7%
Linux
7.6%
Win.
Mobile
12,0%
IPhone
OS 8.2%
Palm
1.4%
Symbian
63.6%
Source : Gartner
Autres
0.6%
Win.
Mobile
11.8%
Symbian
52,4%
Source : Gartner
100.00%
2009
Android
3.9%
RIM
19.9%
Symbian
46.9%
Linux
4.7%
IPhone
OS
14.4%
Autres Android
2.9% 0.5%
50.00%
0.00%
Win.
Mobile
8,7%
Palm
WebOS
0,7%
Source : Gartner
2007
Symbian
2008
Palm
2009
Windows Mobile
IPhone OS
Linux
RIM
Autres
Android
- 34 -
Les graphiques ci-dessus sont basés sur les chiffres avancés par Gartner, entreprise de
conseil américaine souvent prise comme exemple lors des études autour des nouvelles
technologies.
Nous pouvons en interpréter l’évolution du marché des systèmes d’exploitation pour
smartphones basée sur les ventes à l’utilisateur final. Malgré l’implantation confortable de
Nokia avec son système Symbian, l’évolution est plutôt favorable pour RIM (Blackberry),
Apple avec l’IPhoneOS et Android.
Cependant, Android est un système très jeune donc les précédentes données provenant de
Gartner seraient plus représentatives si elles correspondaient aux chiffres de la fin de l’année
2009. De plus, ces données ne sont pas géographiquement localisées.
Voici donc des données plus récentes, mais provenant de la société AdMob, une société
proposant de la publicité pour des sites internet et des applications tous deux destinés aux
mobiles. Ces données sont basées sur le trafic relevé par AdMob lors du quatrième trimestre
2009.
Source : http://metrics.admob.com/wp-content/uploads/2010/01/AdMob-Mobile-Metrics-Dec-09.pdf
Avec ces données de la société AdMob, la répartition des systèmes d’exploitation pour les
smartphones est complètement différente qu’avec les données de Gartner. Ceci est
principalement dû la différence de méthode entre Gartner et AdMob. En effet, les premiers
se basent sur les ventes alors que les seconds se basent sur le trafic internet engendré par les
- 35 -
smartphones. Malheureusement, Gartner n’ayant pas publié les résultats du quatrième
trimestre 2009, nous allons prendre en compte les chiffres d’AdMob.
Ce qui est vraiment intéressant avec ce graphique est la répartition géographique des
systèmes d’exploitation pour smartphone. Nous voyons clairement que Symbian est
principalement implanté en Afrique, en Asie et en Europe de l’Est alors que l’IPhone est
beaucoup plus présent que ce que nous montrent les chiffres de Gartner. Cependant, avec la
méthode de recueillement utilisée par AdMob, l’IPhone doit être surtout plus utilisé pour
parcourir le Web que les smartphones sous Symbian. Tout en sachant qu’il est probable que
l’Afrique et l’Asie n’ont pas l’infrastructure pour l’internet mobile qu’ont les pays de l’Europe
de l’Ouest et de l’Amérique du Nord.
Ces chiffres nous font aussi dire qu’il y a beaucoup plus de téléphones sous Android que ce
que nous pensions. Cette différence s’explique en partie par la sortie très communicante du
Motorola Droid, appelé Motorola Milestone en Europe. En effet, ce smartphone sorti en
novembre 2009 a été accompagné d’une très grosse campagne de publicité puisque
Motorola y misait sa relance.
Une autre étude, réalisée cette fois par la société ChangeWave, est basée sur un sondage
comprenant l’avis de 4068 consommateurs sur leur prochain achat d’un smartphone.
Source : http://www.changewave.com/freecontent/2010/01/android-roils-smart-phone-market-01-04-10.html
Bien que cette étude soit sujette à controverse à cause de son panel de sondage
relativement faible, elle indique l’attrait que pourraient avoir les utilisateurs pour les
smartphones Android.
Pour revenir à la société Gartner, ils estiment que le nombre de smartphones sous Android
ne va cesser d’augmenter d’ici 2012 pour atteindre 14,5 % des parts de marché contre 39 %
- 36 -
pour Symbian et 13,7 % pour l’IPhone. Bien que ces estimations soient à prendre avec
méfiance, elles restent probables puisque le nombre de modèles de smartphones sous
Android ne cesse d’augmenter. D’après un article de « CNetFrance » « Ce sont aujourd’hui 26
modèles de smartphones qui sont équipés du système d’exploitation mobile de Google. Un
logiciel traduit en 19 langues et vendu dans 48 pays par 59 opérateurs» 4. Il parait logique
qu’un système présent sur plusieurs appareils atteigne des parts de marché supérieur à celle
d’un système comme l’IphoneOS ou Symbian destiné aux appareils d’une seule société.
Nokia et Microsoft ont bien compris cela et c’est pour ces raisons que les premiers ont
déclarées l’ouverture du code source de Symbian et les seconds l’élaboration d’une
prochaine version de leur système d’exploitation mobile Windows Phone 7. Ce nouveau
système d’exploitation pour mobile n’a rien de commun avec son prédécesseur. La firme a
annoncé une refonte complète du code source et a, pour l’occasion, modifié le nom de
système passant de Windows Mobile à Windows Phone. De plus, il n’est pas prévu d’assurer
une rétro compatibilité avec les applications pour Windows Mobile 6.5, ce qui prouve sa
différence.
Aperçu de Microsoft Windows Phone 7 Series
La sortie de smartphones embarquant ce nouveau système d’exploitation signé Microsoft est
prévue pour la fin de l’année 2010. Il est fort possible qu’il redevienne un concurrent fiable
dans l’univers des smartphones.
4
Source : http://www.cnetfrance.fr/news/60000-smartphones-android-vendus-par-jour-39713128.htm
- 37 -
Le marché des smartphones étant en pleine expansion, il est extrêmement difficile de
prévoir l’évolution de ses parts de marché. Cependant, il y a fort à parier que le système
initié par Google prenne de l’ampleur. Lorsque l’on voit l’engouement que peuvent avoir
certains professionnels comme Motorola, Samsung, Gartner, Parrot ou encore Archos vis-àvis de la sphère Android, quand on sait que le projet est chaperonné par l’Open Handset
Alliance, et quand on consulte les différentes études sur le sujet, tout laisse à croire
qu’Android à de beaux jours devant lui.
- 38 -
Différentes opportunités de marché
•
Création d'un système personnalisé
Un peu comme la plupart des constructeurs et des opérateurs, nous pourrions
personnaliser le système des smartphones sous Android à destination des employés et des
clients d’IPRECOM. Ceci nous permettrait par exemple d’afficher notre logo au démarrage du
téléphone, ou encore d’y placer des applications qui resteraient présentes malgré une remise
à zéro du smartphone.
Le fait qu’Android soit open source donne en effet la possibilité de personnaliser dans les
détails le système d’exploitation du téléphone. Ceci étant, il sera nécessaire que le
constructeur de l’appareil fournisse les drivers correspondants au modèle en question.
•
Création d'un appareil
À l’image de la startup espagnole Geeks’Phone, Android facilite grandement la création de
smartphones par de nouvelles sociétés. Cette startup a su profiter
de
ce
système
actuellement
appelé
un
et
propose
smartphone,
Geeks’Phone
One,
fonctionnant pour le moment sous
Android
1.6.
Parmi
les
particularités de ce produit, on
retrouve un clavier physique, un
prix raisonnable et bien sûr l’accès
aux applications Android.
Cependant, leur philosophie étant la création d’un
téléphone libre et ouvert, et n’ayant probablement pas eu
l’accord de Google pour la fameuse suite d’applications
propriétaires, ce smartphone est fourni avec le market
alternatifs SlideMe.
Une autre information intéressante à propos de cet appareil
provient
d’un
commentaire
d’un
article
du
blog
« Nous voudrions préciser
que le “ONE” de Geeks’Phone
ne sera pas livré de base avec
Android 2.0 Eclair, mais avec
un logiciel que nous avons
développé (Geeks’Phone
Upgrade System) et qui vous
permet d’actualiser votre
Android ainsi que les
applications complémentaires
de façon régulière et simple
Merci.
Geeks’Phone »
PointGPhone (http://www.pointgphone.com/geeksphoneone-informations-officielles-9360). En effet, un employé
- 39 -
aurait annoncé un service de mise à jour manquant cruellement à la plupart des appareils
Android existant.
Bien qu’aux États-Unis, Google met à disposition un service de mise à jour « Over The
Air » pour le système afin de migrer les téléphones d’une version d’Android à l’autre, pour le
reste du monde ce n’est malheureusement pas encore aussi simple. La plupart des
constructeurs ou des opérateurs se contentent d’une annonce que seuls les utilisateurs
initiés peuvent apprendre. De plus, certains se permettent des méthodes d’installation
imposant l’utilisation de Microsoft Windows ce qui a tendance à irriter la communauté
s’intéressant à Android. En effet, cette communauté est au courant des mises à jour OTA
proposé par Google aux États-Unis et est composée de beaucoup de personnes prônant les
systèmes libres.
Or, la société Geeks’Phone a peut-être développé un utilitaire permettant justement d’être
alerté d’une nouvelle version du système et donnant probablement la possibilité de
télécharger et d’installer cette mise à jour simplement via la connexion 3G de l’appareil. Bien
que ceci n’ait pas clairement été annoncé, c’est tout à fait possible à réaliser et au vu de
l’expertise de cette société, il est probable qu’elle se soit dirigée dans ce sens.
•
Développement d'application
Un même système d'exploitation pour une multitude
d'appareils
Android étant gratuit et open source, il offre une personnalisation accrue, tout en
profitant de la fiabilité d’un système commun et d’une interopérabilité des applications.
De par ces particularités, les applications développées pour Android fonctionnent sur tous
les appareils embarquant Android. Cependant, pour un bon fonctionnement, il est nécessaire
de respecter certaines règles de programmation comme, par exemple, prendre en compte la
résolution des écrans qui peut différer d'un appareil à l’autre. Il sera donc judicieux d'utiliser
des unités de mesure adaptatives telles que des pourcentages plutôt que des pixels.
Une autre différence d’un appareil à l’autre peut être la version d'Android. Bien que les
évolutions des versions d'Android apportent essentiellement des améliorations du SDK, il est
judicieux de développer, dans la mesure du possible, pour la plus petite version d'Android.
- 40 -
Répartition actuelle des versions d'Android
Android Platform
Android 1.1
Android 1.5
Android 1.6
Android 2.0
Android 2.0.1
Percent of Devices
0.3%
31.0%
47.6%
0.7%
20.4%
http://developer.android.com/resources/dashboard/platform-versions.html
D'après les données officielles collectées via le Market pendant deux semaines en janvier
2010, 99.7% des appareils fonctionnant sous Android utilisent une version supérieure ou
égale à la version 1.5 soit Cupcake. Il est donc judicieux lors du développement d'une
application d'utiliser le SDK 1.5 pour profiter de la rétrocompatibilité et avoir une cible
conséquente.
Nous pourrions penser que tous les appareils vendus sous Android sont mis à jour avec les
nouvelles versions du système, mais ce n’est pas le cas. Les constructeurs devant adapter
leurs personnalisations et leurs drivers ne proposent pas la mise à niveau de toutes leurs
gammes.
Grâce à la mise sur le marché de nouveaux appareils et à la mise à jour de certains existants,
cette répartition est amenée à évoluer. Il sera donc judicieux de consulter ce graphique avant
de commencer tout projet de développement.
- 41 -
Possibilités offertes par le SDK
Les possibilités offertes par le SDK regroupent, entre autres,
l’accès à toutes les
fonctionnalités de l’appareil comme l’accès à internet, à la
partie téléphonie (appel, gestion des contacts et des SMS), à
l’appareil photo, au GPS, à l’accéléromètre ou encore à la
boussole numériques.
Lors
des
chapitres
traitant
du
développement
d’applications
nous
reviendrons
sur
les
différentes
sécurités
mises en œuvre pour
Google Sky Map
contrôler l’accès aux
fonctionnalités
Les opportunités de marché du développement sur
Android, sont extrêmement nombreuses et de
nouveaux concepts sont découverts au fur et à mesure
Layar Reality Browser
que les appareils sont enrichis en divers capteurs et que le SDK est mis à jour.
Les applications mobiles sont à leurs débuts et ont toutes les
chances de devenir incontournables dans un futur proche. Qui
pourrait trouver inutile les pages jaunes par exemple ? N’est-ce
pourtant pas beaucoup plus pratique d’avoir le contenu de ses
centaines de pages dans votre poche ? Ajoutons à la simple
fonctionnalité de recherche une géo-localisation et la
possibilité aux utilisateurs de laisser des commentaires et la
prochaine fois que vous serez à la recherche d’un restaurant en
vacances vous ne vous contenterez pas d’un fastfood...
Beaucoup d’experts s’accordent sur le fait que l’informatique
mobile est l’avenir de l’informatique grand publique. Certes les
supports seront multiples, il sera difficile de se contenter d’un
Google Sky Map
écran de quelques pouces pour une utilisation intensive.
Cependant, la plupart des utilisateurs d’ordinateur et d’internet font des tâches ne
nécessitant pas un poste de travail comme nous le connaissons. Une tablette tactile d’une
- 42 -
dizaine de pouces de diagonale conviendrait très bien à leurs utilisations si les applications
existaient.
Afin de rentabiliser les applications, trois possibilités s’offrent à l’éditeur, nous allons donc les
énumérer et citer leurs avantages et inconvenants.
Rémunération fixe
La rémunération fixe est la plus évidente. Elle consiste à fixer un prix pour l’obtention de
l’application. Cependant, plusieurs méthodes s’offrent à l’éditeur pour vendre son
application.
La méthode la plus simple consiste simplement à diffuser l’application sur les différents
market en y spécifiant son prix. Cependant, en plus de réduire la cible aux différents pays
auxquels le market en question donne accès aux applications payantes, un pourcentage sera
prélevé sur les ventes par la société fournissant le market. À titre d’exemple, l’Android
Market fourni par Google conserve 30% du prix payé par l’acheteur.
Une autre solution serait alors de fournir une version de démonstration sur les différents
market que l’utilisateur pourrait débloquer à l’aide d’un numéro de série qu’il aurait
préalablement acheté sur un site de e-commerce. Cette solution, bien que plus
contraignante pour l’utilisateur final à l’avantage d’éliminer la diffusion de l’application.
D’autant que pour éviter l’utilisation de générateur de clé, cette clé peut être générée au
moment de l’achat, stockée dans une base de données, et liée à un compte client créé pour
l’achat. Au niveau de l’application, il suffit alors de demander, en plus du numéro de série, les
identifiants de l’utilisateur.
Rémunération par la publicité
Une solution qui à l’avantage d’élargir sensiblement sa cible et de rémunérer l’application
par la publicité plutôt que par un coût d’achat. Bien que la plupart des gens aient horreurs de
la publicité, nous l’acceptons tous les jours, par tous les moyens. Un bandeau de publicité a
certainement moins de chance de repousser un utilisateur qu’un prix à payer, aussi minime
soit-il. Parmi les régies publicitaires proposant actuellement de la publicité pour les
applications Android, il existe AdMob ou encore AdSense de Google.
- 43 -
Rémunération par abonnement
Pour certains services, il peut être souhaitable de distribuer l’application gratuitement,
mais de demander un abonnement à l’utilisateur pour utiliser le service. Il est clair que ceci
ne peut avoir d’intérêt que pour le cas d’application interfaçant un service web. Parmi les
applications fonctionnant sur ce principe il y a Deezer et Spotify qui propose tous deux
l’accès à leurs musiques en streaming contre un abonnement. Pour les personnes utilisant
beaucoup leur smartphone comme lecteur de musique, cette fonctionnalité peut leur être
très avantageuse.
- 44 -
VI.
Le système
Comme nous l’avons vu précédemment, il est possible de modifier le système
d’exploitation d’un téléphone déjà existant pour le personnaliser ou y mettre des
applications qui seront installées par défaut. Pour les téléphones vendus aux clients
d’IPRECOM, nous pourrions, par exemple, afficher notre logo au démarrage et en fond
d’écran, installer par défaut des applications de lecture de documents de bureautique, ou
encore y mettre nos applications.
Le dépôt GIT
Google a mis à disposition les sources d’Android sur un dépôt GIT. Ceci est un système de
gestion des versions décentralisées. Un peu comme Subversion, cela permet de conserver
toutes les versions des fichiers. Cette méthode de stockage est très utile pour la mise à
disposition de codes sources puisqu’elle permet de voir toutes les modifications apportées
de façon détaillée.
Une procédure pour récupérer le dépôt GIT est expliquée en détail par Google à l’adresse
http://source.android.com/download.
Les drivers
Chaque constructeur de matériel développe ses drivers pour faire fonctionner Android sur
leurs appareils. Les drivers sont en quelque sorte l’interface entre le système et les
composants matériels de l’appareil.
Il est donc absolument indispensable que le constructeur fournisse le code source des drivers
de son appareil pour pouvoir modifier en profondeur son système.
L’accès Root
Sous Linux, l’utilisateur « root » a le plein pouvoir sur le système, il permet d'administrer
celui-ci grâce à un accès complet à tous les fichiers présents sur le système. Aucun des
smartphones commercialisés, excepté le GeekPhone One, ne permet d’accéder au compte
root. Ceci est principalement pour la sécurité des applications. En effet, chaque application
fonctionne avec un utilisateur unique afin qu’elle ne puisse pas accéder aux données d’une
autre application ou au système sans autorisations particulières. Si une application accédait
au compte root, elle serait en mesure de lire et modifier tous fichiers présents sur le
système.
Cependant, il y a un certain avantage à activer l’accès root sur Android. Certaines
applications particulières, comme le partage de la connexion 3G à un ordinateur, nécessitent
cet accès. Des communautés de passionnés travaillent donc dans le but de trouver des
- 45 -
solutions pour obtenir un accès root sur la plupart des téléphones du marché. Ces personnes
proposent ensuite leurs solutions à destination des utilisateurs souhaitant le faire sur leurs
terminaux.
Une application open source, appelé SuperUser (http://code.google.com/p/superuser/)
permet de sécuriser l’accès au compte root après sa réactivation. Cette application
fonctionne comme un pare-feu demandant à l’utilisateur d’autoriser ou non l'accès au
système via l'utilisateur root. Cette solution écarte donc le problème lié à la sécurité des
applications. Cependant, les constructeurs et opérateurs préfèrent désactiver le compte root
afin de limiter le vol et l’utilisation d’applications ne les arrangeant pas. Cela leur permet de
garder un certain contrôle sur les appareils.
SuperUser
OverClocker
Wifi Tether
- 46 -
VII.
Développement d'application
Langage
•
Basé sur le Java
Pour développer sur Android, Google à mis à disposition un SDK 1 permettant d’accéder à
toutes les fonctionnalités des appareils, par exemple l’accéléromètre ou l’écran tactile et ceci,
de manière simple en utilisant des librairies existantes. L’ensemble de ces librairies constitue
le Framework Android.
Ce SDK, basé sur du Java, demande quelques mises à niveau, mais est à la portée de tout
développeur ayant des connaissances en développement orienté objet.
Pour des jeux ou des librairies demandant un maximum de ressources ou ayant besoin d’une
optimisation accrue, un NDK3 est mis à disposition. Ce NDK permet de compiler du code C++
offrant une exécution beaucoup plus rapide qu’avec le Java.
•
Interface XML
Dans la lignée du Flex d’Adobe ou du XAML de Microsoft, les interfaces utilisateurs sous
Android sont définies dans un langage balisé de type XML1. Cette approche donne la
possibilité au développeur d’écrire son interface, d’utiliser un outil de création d’interface ou
encore de le développer lui même. Ce format étant ouvert et humainement compréhensible,
il est facilement traitable dans un script ou une application pour, par exemple, remplacer en
masse un élément présent dans plusieurs interfaces.
- 47 -
Voici un exemple du code XML d’une interface utilisateur basique.
<?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:text="@string/hello"
android:layout_height="100px"/>
<Button
android:text="This is a button"
android:id="@+id/Button01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
Sortie
Comme nous pouvons le voir, sur cet exemple, la création d’une interface utilisateur sur
Android se rapproche plus d’un code écrit en HTML qu’en C++. Bien qu’il demande une
période d’apprentissage, il parait évident qu’elle est assez simple à prendre en main.
Machine virtuelle
Comme toute application développée en Java, une machine virtuelle permet son exécution.
Cette machine virtuelle traduit en temps réel le code précompilé en code interprétable par la
machine. Bien que cette solution ralentisse sensiblement la vitesse d’exécution du
programme, elle résout, à l’aide de librairies de classes extensibles, beaucoup de problèmes
de programmation rencontrés avec un langage comme le C ou le C++. En effet, elle met à
disposition des fonctionnalités permettant d’augmenter la productivité du développeur et
fournit le Garbage Collector.
Le Garbage Collector s’occupe de gérer la mémoire de manière optimale en supprimant
automatiquement les ressources qui ne sont plus utilisées. Lors de la programmation dans
des langages compilés comme le C ou le C++, le développeur a l’importante tâche de libérer
la mémoire qu’il n’utilise plus.
- 48 -
Cette obligation est la cause de bon nombre de bugs dans les programmes. Si par exemple,
le développeur supprime une variable puis tente de l’utiliser par la suite, l’application ne
résistera pas.
Wikipedia fournis une très bonne explication du Garbage Collector que voici.
Cet élément contribue à la robustesse et à la performance des programmes, le ramasse-miettes
est appelé régulièrement et automatiquement pendant l'exécution du programme. Sur les systèmes
multiprocesseurs et/ou multicœurs, celui-ci emploie même des threads multiples à faible priorité
afin de perturber le moins possible l'exécution de programme. En outre, le programmeur peut au
besoin suggérer de lancer le ramasse-miettes à l’aide de la méthode System.gc().
Un grief récurrent à l’encontre de langages comme C++ est la lourde tâche d’avoir à programmer
manuellement la gestion de la mémoire. En C++, la mémoire allouée par le programme pour créer
un objet est désallouée lors de la destruction de celui-ci (le plus souvent par un appel explicite à
l'opérateur delete). Si le programmeur oublie de coder la désallocation, ceci aboutit à une « fuite
mémoire », et le programme en consomme de plus en plus. Pire encore, si par erreur un
programme demande plusieurs fois une désallocation, ou emploie une zone de mémoire après avoir
demandé sa désallocation, celui-ci deviendra très probablement instable et se plantera.
En Java, une grande partie de ces problèmes est évitée grâce au ramasse-miettes. L'espace
mémoire nécessaire à chaque objet créé est alloué dans un tas de mémoire (en anglais : memory
heap) réservé à cet usage. Le programme peut ensuite accéder à chaque objet grâce à sa référence
dans le tas. Quand il n'existe plus aucune référence permettant d'atteindre un objet, le ramassemiettes le détruit automatiquement — puisqu’il est devenu inaccessible — libérant la mémoire et
prévenant ainsi toute fuite de mémoire.
Le ramasse-miettes emploie un algorithme de marquage puis libération (en anglais : mark and
sweep) qui permet de gérer les cas complexes d'objets se référençant mutuellement ou de boucles
de références (cas d'une liste à chaînage double par exemple). En pratique il subsiste des cas
d'erreur de programmation où le ramasse-miettes considèrera qu'un objet est encore utile alors que
le programme n'y accèdera plus, mais dans l’ensemble, le ramasse-miettes rend plus simple et plus
sûre la destruction d’objets en Java (en supprimant la nécessité de placer au bon endroit du code
l'appel à l'opérateur delete).
Source : http://fr.wikipedia.org/wiki/Java_(langage)#M.C3.A9canisme_du_ramasse-miettes_.28Garbage_Collector.29
- 49 -
•
Dalvik Virtual Machine
La machine virtuelle Dalvik est une machine virtuelle se basant sur celle de Sun pour le
Java, mais optimisée pour Android. Sa particularité est de précompiler les applications dans
un format, appelé Dalvik Dex Format, de manière à optimiser la gestion de la mémoire.
Pour l’anecdote, le nom Dalvik provient du nom d’un village d’Islande où auraient vécu
certains ancêtres de Dan Bornstein, développeur de la machine virtuelle.
Son code source étant ouvert c’est ce que Myriad (une société faisant partie de l’Open
Handset Alliance) a optimisé pour promettre une vitesse d’exécution des applications trois
fois supérieure qu’avec la Dalvik machine actuelle.
La sécurité
Le système Android donne la possibilité au développeur d’accéder à une multitude
d’informations ainsi qu’au contrôle du système et des autres applications. À titre d’exemple,
il permet d’accéder aux SMS, à la liste des contacts, au GPS ou encore à l’accès à internet.
Afin de limiter les utilisations frauduleuses de ces fonctionnalités chaque application
fonctionne dans ce que l’on appelle une « Sandbox », soit traduite littéralement, un bac à
sable. Le principe de la sandbox est de limiter l’accès de l’application à ses seuls fichiers. Par
défaut, une application Android ne peut donc accéder qu’aux fichiers qu’elle a créés dans un
dossier qui lui est réservé.
Afin d’utiliser des services particuliers comme demander l’accès aux contacts ou au GPS, il
faut spécifier dans le fichier de configuration de l’application quels services seront utilisés. De
cette manière, l’utilisateur sera informé des accès que demande l’application à son
installation.
La liste complète des permissions est disponible sur http://developer.android.com/intl/zhTW/reference/android/Manifest.permission.html.
Cependant,
d’autres
applications
proposant leurs services peuvent aussi définir leurs propres permissions.
- 50 -
Mise en place de l'espace de travail
La mise en place d’un espace de travail pour développer sur Android est relativement
aisée. Contrairement au développement pour l’IPhone qui exige l’utilisation d’un ordinateur
Mac fonctionnant sous MacOS X, il est possible d’avoir un environnement de développement
pour Android sous Linux, Microsoft Windows et Mac OS.
Pour développer sur Android, il faut commencer par télécharger l’EDI Eclipse gratuitement
disponible sur le site officiel (http://www.eclipse.org/downloads/). Ensuite, il faut
télécharger
le
SDK
sur
le
site
officiel
de
développement
sous
Android
(http://developer.android.com) et suivre les instructions d’installation.
Les outils mis à disposition par le SDK
•
ADB (Android Debug Bridge)
ADB est un outil disponible en ligne de commande. Comme son nom l’indique, il permet
de se connecter à l’émulateur ou au téléphone à l’aide d’un câble USB standard.
En outre, il donne la possibilité d’installer ou de désinstaller des applications, d’envoyer ou
de récupérer des fichiers et de se connecter en ligne de commande sur l’appareil. Il est aussi
utilisé par le SDK pour publier et débugger les applications en développement et peut-être
aussi sollicité par certaines applications, par exemple, « Remote SMS » qui permet d’envoyer
des SMS depuis le navigateur d’un ordinateur.
Nous allons détailler quelques commandes souvent utilisées.
Pour lancer un Shell distant. Semblable à une connexion à un serveur par SSH ou encore
exécuter une commande unique..
adb shell
adb shell <command> (Exemple : adb shell restart)
Pour envoyer et recevoir un fichier sur/de l’appareil.
adb push <local> <remote>
adb pull <remote> <local>
- 51 -
Pour installer ou désinstaller une application via son fichier APK et son « package name ».
adb install anotepad.apk
adb uninstall fr.chronosweb.android.anotepad
Afin de récupérer les logs ou toutes les informations systèmes, deux commandes peuvent
être utiles. Cependant, le résultat de ces commandes est directement disponible sous
Eclipse.
adb logcat ou adb logcat filter
adb bugreport
Cette liste n’étant pas exhaustive, il est possible de voir toutes les commandes offertes par
ADB accompagnées d’une description en lançant simplement une des deux commandes
suivantes.
adb
adb help
•
L’émulateur
Le SDK d’Android met aussi à disposition des développeurs un outil en ligne de commande
appelé « emulator ». Cet outil permet de configurer puis de lancer un émulateur de
smartphone sous Android. L’avantage de cet outil est qu’il donne la possibilité de développer
une application pour Android sans avoir de matériel particulier, comme un smartphone. De
plus, il est entièrement intégré graphiquement sous Eclipse.
Voici comment se créer puis lancer un émulateur.
Pour lancer le gestionnaire d’émulateur, il
suffit de cliquer sur l’icône représentant
un téléphone sous Eclipse.
- 52 -
Ensuite s’affiche la liste
des
émulateurs
déjà
configurés. Pour un créer
un nouveau, il faut cliquer
sur le bouton New.
Après avoir spécifié un nom et la version d’Android
souhaité, il est possible de créer l’émulateur.
Cependant, il peut être nécessaire de spécifier la taille
de la carte SD ou encore des spécificités matérielles
particulières.
Après avoir cliqué sur « Create AVD », une fenêtre
récapitulative s’affiche.
- 53 -
Le nouvel émulateur étant dans la liste, il ne reste plus qu’a le sélectionner puis cliquer sur
Start pour le lancer.
Une fenêtre vous demande alors les options de lancement. « Scale display to real size »
peut-être utile pour émuler un modèle de téléphone avec une densité d’écran plus élevé que
la normale comme un Google Nexus One ou un Motorola Droid qui on des densités d’écran
de 240 au lieu de 160. Comme la densité d’écran représente le nombre de points dans un
pouce, un émulateur avec une densité de 240 fera plus de mille pixels de haut. Cette option
permet donc de redimensionner l’émulateur pour que son apparence soit cohérente.
Enfin,
après
patienté
avoir
durant
changement
le
du
système d’exploitation,
l’émulateur
affiche
l’interface.
- 54 -
Il est aussi possible de télécharger des skins pour l’émulateur. En plus d’apporter un
aspect visuel plus attrayant, ils sont en mesure de spécifier des caractéristiques de l’appareil
comme la présence ou non d’un GPS, ou encore la densité de l’écran.
Skin du Samsung Galaxy I7500
Une autre solution pour lancer l’émulateur consiste à utiliser la ligne de commande de la
manière suivante.
emulator –avd Emulateur2.0.1
Cette solution à l’avantage de ne pas nécessiter l’ouverture d’Eclipse pour lancer un
émulateur. Cependant, il y a peu d’intérêt à lancer un émulateur si ce n’est pas pour utiliser
le debuggage fourni par Eclipse.
- 55 -
L’émulateur permet aussi d’utiliser un autre service contrôlé via l’application « telnet ».
Telnet est disponible sous Linux, Microsoft Windows et Mac OS X. Cependant, pour une
utilisation sous Microsoft Windows, il sera nécessaire de le télécharger sur internet.
Bien qu’initialement utiliser pour se connecter à une machine distante, telnet a peu à peu
été délaissé au profit d’SSH, un protocole similaire mais sécurisé et plus complet. Cependant,
il est encore couramment utilisé pour communiquer avec des périphériques locaux comme
des routeurs ou des imprimantes. En vous connectant via telnet à l’émulateur à l’aide de la
commande suivante, il est possible, par exemple, de lancé un appel fictif, de spécifier des
coordonnées GPS fictives ou encore interagir sur le fonctionnement « matériel » de
l’émulateur.
Voici quelques exemples de commandes.
Pour se connecter au serveur telnet de l’émulateur
telnet localhost 5554
Pour lancer un appel entrant fictif sur l’émulateur
gsm call 1010
Pour envoyer un SMS sur l’émulateur
sms send 555 It’s a SMS.
Pour « débrancher » l’alimentation de l’émulateur
Power status discharging
Pour une liste complète des possibilités offertes par Telnet et l’émulateur Android, la
documentation officielle est très bien renseignée. http://developer.android.com/intl/zhTW/guide/developing/tools/emulator.html#console
- 56 -
•
Les 9-Patchs
Un des gros soucis du développeur Android est la multitude d’appareils ayant des
spécificités différentes. Une de ses principales difficultés consiste alors à réaliser des
interfaces graphiques redimensionnables. En effet, même pour un seul et unique appareil,
l’utilisateur peut par exemple le tourner afin d’obtenir une vue au format paysage.
Pour répondre à ce besoin, le SDK d’Android est pourvu de plusieurs fonctionnalités comme
la possibilité de spécifier des interfaces en fonction d’une résolution particulière ou de la vue
en paysage. Nous verrons plus en détail cette approche lors de l’explication de
l’internationalisation qui est fondée sur le même principe.
Avec les interfaces utilisateurs devenant de plus en plus graphiques, il à fallut trouver une
solution pour redimensionner correctement les images. C’est là qu’est apparu l’excellent outil
9-Patchs.
9-Patchs dispose d’une interface graphique très intuitive et est rapidement pris en main. Son
principe est simple. Il permet d’ouvrir un fichier au format PNG, et d’y spécifier à l’aide de la
souris quelles tranches de pixels sont étirables puis il stocke ces informations dans le fichier
PNG. Au final, le fichier garde la même apparence, mais contient les coordonnées des pixels
redimensionnables qu’Android utilisera.
Voici à quoi ressemble l’application.
- 57 -
L’interface de 9-Patchs se divise en deux parties. La partie de gauche correspond à l’image
d’origine, recouverte d’un calque permettant de voir les pixels étirables. Sur la vue ci-dessus,
aucun pixel étirable n’est placé. La partie de droite de l’application montre des aperçus de
l’image étirée.
Ainsi, lorsque l’on place un pixel étirable en dessous du mot Android, on voit bien que le logo
et le texte ne sont plus étirés.
La grande force de cette application est la possibilité de placer plusieurs zones étirables.
Chaque zone sera alors étirée proportionnellement en fonction du nombre de pixels
étirables. Par exemple, si l’on place deux pixels étirables au dessus du logos et que l’on en
laisse en seul en dessous, lors de l’étirement le logo et le texte se placeront aux deux tiers
verticaux de l’image.
- 58 -
Pour donner un aperçu des possibilités de 9-Patch , voici un exemple d’utilisation.
Nous souhaitons que le logo et le texte ne s’étirent pas. De plus, nous
voudrions que l’emplacement du logo et du texte soit proportionnel. De
ce fait, il ne suffit pas de faire en sorte que le logo et le texte soient centrés.
Voici ce que cela donnerait avec 9-Patchs :
- 59 -
Comme on peut le voir sur cet exemple, nous avons placé deux colonnes et quatre lignes.
Pour ce qui est des colonnes, on observe sur la figure en haut à droite comment elles sont
prises en compte lors de l’étirement. Chaque pixel supplémentaire est équitablement réparti
à travers les colonnes spécifiées.
Il en est de même avec les lignes. Afin que le logo reste centré, il a donc fallu en disposer
deux au dessus pour compenser les deux lignes du dessous.
Finalement, notre logo est bien centré et le texte reste positionné entre le logo et le bas de
l’image.
•
DDMS (Dalvik Debug Monitor Server)
Le DDMS est l’outil indispensable de tout développeur Android. Il est totalement intégré à
Eclipse mais il est aussi possible de le lancer en lançant la commande « ddms ». Il est
l’interface graphique d’ADB.
- 60 -
C’est grâce à cet outil que l’on pourra surveiller et manager les processus s’exécutant sur
l’appareil ou l’émulateur, surveiller les journaux de log grâce au « logcat », envoyer et
recevoir des fichiers, ou encore faire des captures d’écrans. Il fait aussi office d’interface
graphique pour la connexion netstat à l’émulateur en permettant de lancer des appels,
spécifier le type de réseau ou sa qualité, etc.
- 61 -
Les différents types d’applications sous Android
Une application sur Android hérite toujours d’un des quatre types définis ci-dessous.
•
Activity
L’activity est l’application de base sous Android. Comme une application avec une
interface pour l’utilisateur dépend toujours d’une activity, la plupart des applications en ont
donc au moins une. L’activity va permettre d’afficher une vue contenants des contrôles. Ces
contrôles sont simplement les listes, images, bouton, champs de saisie, etc. Dans le modèle
MVC (Model, View, Controller), l’activity est le controller. C’est donc en quelque sorte le
moteur de l’application. Une activity peut en ouvrir une autre, lui fournir des données et en
récupérer à sa fermeture. Nous verrons plus en détail le fonctionnement des activity.
•
Service
Un service est une application sans interface pour l’utilisateur puisque fonctionnant en
arrière-plan. C’est justement avec ces services que le multitâche d’Android à un sens. Le
service permettra par exemple de lire un morceau de musique tout en faisant autre chose.
Ou encore continuer le téléchargement d’un fichier malgré la fermeture de l’application.
•
BroadcastReceiver
Les broadcast receiver sont une alternative aux services. C’est une sorte de service
endormi qui se réveille suite à une demande spécifiée. Ils ont été créés pour répondre au
besoin d’économie d’énergie que demandent les appareils comme les smartphones. Il est
possible de placer des broadcast receiver sur des alarmes pour réaliser des actions différées
ou périodiques comme la mise à jour d’un widget météo. Ils permettent aussi d’écouter des
messages du système ou d’autres applications comme la réception d’un SMS. Il est bien sûr
possible d’envoyer ses propres messages broadcast.
•
ContentProvider
Les ContentProvider, comme leur nom l’indique, sont des gestionnaires de données. Ils
permettent la mise à disposition de données filtrables aux autres applications. Ils sont
utilisés pour récupérer la liste des SMS ou encore la liste des contacts. Il est aussi possible de
créer ses propres ContentProvider afin de rendre disponibles les données de l’application en
question. Par exemple, pour une application de carte de visite, il peut être judicieux de
proposer un accès contrôlé aux données constituant les cartes de visite.
- 62 -
Quelques caractéristiques du SDK d’Android
•
Création du projet simplifiée
La création de projet Android est très
simple grâce à l’assistant fourni par le
SDK.
Pour
ce
faire,
il
suffit
de
sélectionner le menu File > New >
Android Project.
Il faut commencer par saisir le « Project
name ». Cela correspond au nom du
projet sous Eclipse et pas au nom de
l’application. Il est donc possible d’y
mettre un nom correspondant à une
nomenclature particulière.
La case à cocher « Create project from
existing sample » permet de charger les
sources d’un des nombreux exemples
fournis par le SDK.
Parmi ces exemples, il y a « ApiDemos » qui est une
application regroupant le code source permettant
d’utiliser la plupart des fonctionnalités du SDK. Cela
démontre comment utiliser la boussole, le GPS ou
encore utiliser le moteur de rendu 3D.
Il y a aussi « GestureBuilder », un code source pour
s’initier à la gestion des détections de formes
dessinées aux doigts sur l’écran tactile. Cette
fonctionnalité, apparue avec le SDK 1.6 Donut, peutêtre très intéressante pour proposer une navigation
rapide dans l’application.
GestureSearch,
Recherche globale avec Gesture
- 63 -
Sont aussi présents deux exemples, « Home » et « SoftKeyboard », pour s’initier au
développement de home et de clavier alternatif. Ces projets de démonstration sont une
bonne source d’information pour découvrir par l’exemple le SDK Android.
La sélection du « build target » n’est pas à prendre à la légère. Comme nous l’avions déjà
vu, il faudra choisir un compromis entre les nouvelles fonctionnalités offertes par chaque
SDK et la cible d’utilisateurs souhaitée. En effet, choisir d’utiliser le SDK 2.0.1 peut-être très
intéressant voir indispensable pour certain projet, mais seulement un utilisateur sur cinq
aura la possibilité d’utiliser l’application. Il faut donc toujours se référer au graphique de
répartition des versions disponibles sur le site officiel « Android Developers »
http://developer.android.com/intl/zh-TW/resources/dashboard/platform-versions.html.
Enfin, il ne reste plus qu’à spécifier les propriétés du projet.
L’ « Application name » correspond au nom réel de l’application C’est celui qui sera affiché
sur le terminal de l’utilisateur après l’installation. Il est toute fois possible de le changer
ultérieurement.
Le » package name » est un élément important de l’application. Il permet de différencier une
application d’une autre donc il doit être impérativement unique. Afin de s’en assurer, il est
convenu d’utiliser le nom de domaine de l’éditeur suivi du nom de l’application. Ainsi, pour
un éditeur dont le nom de domaine serait domain.tld, le « package name » devrait être
tld.domain.applicationname.
L’option « Create Activity » permet de créer automatiquement « l’activity » principale de
l’application. Ça sera donc « l’activity » lancer à son démarrage
Enfin, « Min SDK Version » est renseigné automatiquement lors de la sélection du « Build
Target ». Il représente le numéro de version d’Android à avoir ou dépasser pour accéder à
l’application.
- 64 -
•
Architecture de base d’un projet
Afin de voir les différents éléments composant un projet, nous allons détailler
l’architecture d’un nouveau projet Android.
La zone surlignée en bleu correspond aux sources
Java du projet. C’est dans ce dossier src que sont
disposées les « Activity », les classes d’accès aux
données et toute la partie moteur du projet.
La zone surlignée en rouge comprend les fichiers
générés par le SDK et les librairies qu’utilise le
projet. Les fichiers générés ne doivent pas être
modifiés puisqu’ils sont souvent mis à jour
automatiquement par le SDK. Le fichier « R.java »
permet au SDK de faire le lien entre les identifiants
utilisés dans les sources et les ressources auquel ils
correspondent.
La zone surlignée en vert contient les différentes ressources du programme. Il peut s’agir
d’image, de son, de vue ou de n’importe quels fichiers devant être utilisés par l’application.
Plus précisément, le dossier « assets » permet la copie de fichiers de tous types alors que le
dossier « res » correspond aux ressources identifiables par le SDK. Les ressources
contrairement aux « assets » sont prises en compte par le SDK. Elles doivent être classées
dans des sous-dossiers spécifiques et seront accessibles dans le code de manière simplifiée.
C’est dans le fichier « R.java » que le SDK se chargera de renseigner l’ajout ou la modification
de ressources.
La dernière zone, surlignée en jaune, correspond au fichier définissant les propriétés de
l’application et du projet. Le fichier « AndroidManifest .xml » comprend toutes les propriétés
de l’application comme son nom, son « package name », ou encore sa version. C’est aussi
dans ce fichier que l’on va spécifier les permissions demandées par l’application. Le fichier
« default.properties » est un fichier générer automatiquement par Eclipse et contient les
propriétés du projet. Ce fichier n’est donc pas à prendre en considération.
- 65 -
•
Le fichier AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="fr.chronosweb.android.anotepad"
android:versionCode="2"
android:versionName="1.0.1">
<application android:icon="@drawable/icon" android:label="@string/app_name"
android:theme="@android:style/Theme.Light">
<activity android:name=".Main" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="Edit" />
<activity android:name="About" />
</application>
<uses-sdk android:minSdkVersion="3" />
</manifest>
Le fichier « manifest » contient toutes les propriétés de l’application que l’on a spécifiées
lors de la création du projet. De plus, il contient une référence de chaque « activity »
composant l’application. Pour chacune d’elles, il est possible de spécifier des propriétés.
Ainsi, l’activité principale appelée « .Main » aura une propriété « action » spécifiant que c’est
l’activité principale du projet et une propriété « category » pour préciser que l’application
sera une application présente dans le « launcher », soit la liste des applications installées sur
l’appareil de l’utilisateur.
Il est indispensable de spécifier toutes les « activity » de l’application dans ce fichier.
C’est aussi dans ce fichier que seront spécifiées les permissions que demande l’application.
Le SDK propose une interface graphique pour remplir ce fichier. Bien qu’avec le temps il est
plus productif d’écrire directement dans le fichier, les assistants sont toujours utiles pour
découvrir les possibilités offertes par le système.
- 66 -
- 67 -
•
Les ressources
Les ressources regroupent tout ce qui n’est pas du code source. Elles permettent de
charger facilement des images, créer des interfaces utilisateurs, des animations, des styles.
Leur architecture propose aussi une solution très simple pour l’internationalisation.
Ci-contre, les différentes ressources
d’un petit projet.
Les Drawables
Les « drawables » sont des images au format PNG, JPG ou encore BMP. On peut ensuite les
appeler par le code à l’aide de « R.drawable. ressource_name ». Ainsi, pour afficher l’image
« note.png » nous utiliserions l’identifiant « R.drawable. Note » au sein du code ou
« @drawable/note » dans une vue.
- 68 -
Les Layouts
Les « layouts » sont les vues et les contrôles de notre application. Il est possible de
construire ces layouts à l’aide d’une interface graphique ou les écrire au format XML.
D’autant que l’écriture du code XML est aidée par une « auto-complétion 5 » fournie par
Eclipse.
Comme nous pouvons le voir sur l’illustration ci-dessus, la création d’interface utilisateur
sous Android est à la porter de tous. En effet il est possible, après une courte période
d’apprentissage, de dessiner ses "layout" à l’aide de glissé-déplacé. Bien que ce « designer »
ne soit pas aussi efficace que ceux proposer par Microsoft avec Visual Studio ou Expression
Blend, il permet l’essentiel. Ainsi, il donne la possibilité de placer les contrôles sur le layout et
de spécifier leurs propriétés comme : leur identifiant, leur label ou leur taille.
Pour obtenir l’équivalent XML de cette vue, veuillez vous référer à l’annexe IV.
5
Le complètement ou complètement automatique, ou encore par anglicisme complétion ou auto-
complétion, est une fonctionnalité informatique permettant à l'utilisateur de limiter la quantité d'informations
qu'il saisit avec son clavier, en se voyant proposer un complément qui pourrait convenir à la chaîne de
caractères qu'il a commencé à taper. (Source: Wikipedia)
- 69 -
L’internationalisation
Grâce à l’architecture des ressources sous Android l’internationalisation est extrêmement
simplifiée. Une solution vraiment efficace a été mise en place afin d’inciter les développeurs
à le faire.
Pour gérer l’internationalisation, il suffit de créer les dossiers
de ressources terminant par le code ISO de la langue. Ainsi,
pour un multilangage anglais-français, nous aurons « valuesfr » et « values-en ». Il est aussi possible de créer un dossier
commun « values ». La grande force de ce système réside dans
son application sur tous les dossiers de ressources. Ainsi, avec
les deux dossiers « drawable », nous pourrions avoir une icône
d’application correspondant à la langue de l’appareil. Il en est
de même pour les « layout », les styles, ou toute autre
ressource.
Contenu du fichier « values » commun situé dans /res/values/strings.xml :
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">applicationName</string>
</resources>
Contenu du fichier « values » en anglais situé dans /res/values-en/strings.xml :
<? xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World !</string>
</resources>
Contenu du fichier « values » en français situé dans /res/values-fr/strings.xml :
<? xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Bonjour le monde !</string>
</resources>
Ensuite, il ne reste plus qu’à utiliser les identifiants des strings dans le code source avec
« R.strings.name » et dans les layouts avec @string/name pour afficher le texte en fonction
de la langue de l’appareil.
- 70 -
•
Les bases de données SQLite
Android permet l’utilisation de base de données SQLite 6 et le SDK fournit tout le
nécessaire pour créer et utiliser une ou plusieurs bases de données par application. Pour se
faire, il faut simplement créer une classe héritant la classe « SQLiteOpenHelper » intégrée au
« framework ».
Lorsque l’on étend la classe « SQLiteOpenHelper », il est indispensable d’ « overrider » les
méthodes « OnCreate » et « OnUpgrade » comme le montre l’exemple ci-dessous.
@Override
public void OnCreate (SQLiteDatabase db) {
String sql = "";
sql = "CREATE TABLE tableName ("
+ "_id INTEGER PRIMARY KEY AUTOINCREMENT, "
+ "date INTEGER NOT NULL, "
+ "title TEXT NOT NULL, "
+ "body TEXT NOT NULL)";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
int currentVersion = oldVersion + 1;
while (currentVersion < oldVersion){
switch (currentVersion) {
case 2:
//Update from version 1 to version 2
break;
case 3:
//Update from version 2 to version 3
break;
default:
break;
}
currentVersion++;
}
}
La méthode « OnCreate » est exécutée à la première exécution de l’application et permet de
créer les différentes tables constituant la base de données.
6
SQLite est une bibliothèque écrite en C qui propose un moteur de bases de données relationnelles
accessibles par le langage SQL. SQLite implémente en grande partie le standard SQL-92 et des propriétés ACID.
Contrairement aux serveurs de bases de données traditionnels, comme MySQL ou PostgreSQL, sa
particularité est de ne pas reproduire le schéma habituel client-serveur, mais d'être directement intégrée aux
programmes. L'entièreté de la base de données (déclarations, tables, index et données) est stockée dans un
fichier indépendant de la plateforme. (Source : Wikipedia)
- 71 -
La méthode « OnUpdate » est appelée pour mise à jour de la base de données suite à une
mise à jour de l’application. Elle permettrait par exemple de réaliser des « ALTER TABLE ».
Après ouverture de la base de données, il est possible d’exécuter des requêtes à l’aide de
diverses méthodes de l’objet « SQLiteDatabase ». Par exemple, pour récupérer tous les
éléments de la table « tableName » il suffira d’écrire la ligne suivante.
Cursor cursor =
db.query("tableName", null, null, null, null, null, "date DESC");
Le « cursor » que renvoie cette fonction est un objet pointant sur des données de la base de
données. Il pourra être utilisé avec un « CursorAdapter » similaire à l’ « ArrayAdapter » que
nous allons aborder dans le chapitre suivant.
- 72 -
•
Les Listview
Les « Listview » sont des listes d’éléments. Sous Android, ces dernières sont extrêmement
personnalisables. Chaque « Listview » peut avoir comme élément n’importe quel contrôle du
« Framework Android ». Il sera donc très simple de faire une liste de boutons ou même une
liste de « LinearLayouts » contenant plusieurs contrôles.
Voici un exemple d’utilisation d’une « ListeView ».
Définition de la vue main.xml contenant la listeview :
<?xml version="1.0" encoding="utf-8"?>
<ListView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/listView1"
android: layout_width="fill_parent"
android:layout_height="fill_parent"
/>
Définition de la vue list_item.xml correspondant à un élément de la liste :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<CheckBox
android:id="@+id/itemCheckBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
<TextView
android:id="@+id/itemTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
</LinearLayout>
- 73 -
Code source de l’activité principale :
import
import
import
import
import
import
java.util.ArrayList;
java.util.HashMap;
android.app.Activity;
android.os.Bundle;
android.widget.ListView;
android.widget.SimpleAdapter;
public class Demo extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ListView listView1 = (ListView)findViewById(R.id.listView1);
ArrayList listItems = new ArrayList<HashMap>();
HashMap<String, Object> item1 = new HashMap<String, Object>();
HashMap<String, Object> item2 = new HashMap<String, Object>();
item1.put("title", "Item 1");
item1.put("checked", true);
item2.put("title", "Item 2");
item2.put("checked", false);
listItems.add(item1);
listItems.add(item2);
String[] from = new String[] { "title", "checked" };
int[] to = new int[] { R.id.itemTextView, R.id.itemCheckBox };
SimpleAdapter sa = new SimpleAdapter(this, listItems,
R.layout.list_item, from, to);
listView1.setAdapter(sa);
}
}
Comme nous pouvons le voir sur cet exemple, la création de liste est plutôt simple. Pour faire
un court exemple, nous avons utilisé le « BaseAdapter» « SimpleAdapter », cependant nous
aurions pu utiliser un « SimpleCursorAdapter » pour remplir la liste avec un « Cursor »
provenant d’une base de données.
Pour des cas plus complexes, il est possible de créer une classe dérivant « BaseAdapter » ou
« CursorAdapter » et de traiter les données avant leurs affichages dans la liste.
- 74 -
Publication sur l'Android Market
Afin de démontrer la simplicité et la force de l’Android Market, nous allons montrer les
différentes étapes pour publier une application.
•
Exportation du projet
Pour exporter un projet sous Android, il suffit de faire un clic droit sur le projet dans
Eclipse, puis de sélectionner « Export Signed Application Package » dans « Android Tools ».
Ceci ouvre un assistant.
On sélectionne le projet que
l’on souhaite exporter
Pour éviter qu’une personne mal intentionnée ayant récupéré les identifiants GMail du
développeur fournisse une fausse mise à jour vérolée d’une application, il est nécessaire de
signer une application pour sa mise en ligne sur le Market.
- 75 -
L’assistant propose donc de
créer un magasin de clés ou
d’en utiliser un déjà existant.
L’utilisation du magasin de clé
est ensuite protégée par un
mot de passe.
Ensuite, il faut spécifier les
informations du certificat
utilisé pour signer
l’application.
Un autre mot de passe, propre
à ce certificat, est demandé.
Les mises à jour devront donc
être signées avec le même mot
de passe de certificat et le
même magasin de clés.
- 76 -
La dernière étape de cette
assitant propose simplement
d’exporter le fichier « apk »
signé.
- 77 -
•
Création d’un compte sur Android Market
Pour créer un compte sur Android Market, il est nécessaire d’avoir un compte Gmail. Il
suffit alors de se rendre sur http://market.android.com/publish.
Après connexion avec le compte Gmail, un formulaire d’enregistrement permet de saisir ses
informations personnelles.
Le numéro de téléphone et l’adresse e-mail spécifiés dans ce formulaire sont uniquement
pour que Google puisse contacter le développeur en cas de besoin. Ces informations ne sont
pas retransmises à un tiers, ni à portée des utilisateurs de l’Android Market.
- 78 -
Le cout d’inscription à l’Android Market est de 25$. Il est nécessaire de payer cette somme
pour ouvrir le compte de développeur, mais la conservation de celui est gratuite. Il n’y a donc
pas d’abonnement à payer pour conserver son compte de développeur.
Après paiement et validation des conditions, le compte de développeur Android est tout de
suite opérationnel.
- 79 -
Pour publier une application, il suffit de cliquer sur le bouton « Upload Application » puis de
saisir le formulaire que nous allons détailler.
- 80 -
La première chose à faire est d’envoyer le fichier « apk » à l’aide du formulaire. Il est aussi
possible d’envoyer deux screenshots.
- 81 -
Ensuite, il faut saisir le nom de l’application et le texte de description.
Il est aussi possible de spécifier plusieurs autres langues. Les descriptions seront alors
automatiquement en français pour les utilisateurs ayant leurs appareils en français.
- 82 -
Après avoir saisi les derniers éléments demandés, il ne reste plus qu’a cliquer sur « Publish »
pour publier l’application sur le market. Il est aussi possible de sauvegarde la fiche en
attendant de la publier.
- 83 -
Tout de suite après la publication, l’application est disponible sur l’Android Market dans le
monde entier.
Comme nous venons de le voir, la publication d’application sur l’Android Market est vraiment
à la portée de tous. Le site créer pour l’occasion par Google est très bien fait et expliqué
comme il le faut.
- 84 -
VIII.
Conclusion
Nous sommes actuellement dans une étape de transition de l’informatique fixe à
l’informatique mobile. Les ordinateurs de bureau ont peu à peu été délaissés au profit des
ordinateurs portables. Sont apparus ensuite les « netbook », des ordinateurs très basiques,
petits et légers, ayant un intérêt basé sur l’utilisation exclusive de contenu multimédia et
d’utilisation de services sur internet. Les smartphones, ces téléphones se rapprochant d’un
ordinateur, qui ont connu un succès progressant de jour en jour. Nous devons d’ailleurs ce
succès à la société Apple qui a révolutionné l’utilisation de smartphone.
Bien que la technologie de miniaturisation évolue de manière très rapide, la partie logicielle
de ces appareils est tout aussi importante. De nouvelles utilisations de l’informatique mobile
sont découvertes fréquemment et il est indispensable, pour leurs impacts sur nos habitudes
en société, qu’elle soit de plus en plus intuitive. C’est ce qu’on comprit Apple en créant
l’IPhone et ce que Google a affirmé en initiant l’Open Handset Alliance.
Bien que le marché des systèmes d’exploitation mobiles soit déjà bien réparti au travers de
plusieurs produits provenant de grands acteurs de l’informatique actuelle, Android a
beaucoup d’avantages sur ses concurrents. Comme nous avons pu le voir, il est gratuit,
modulaire, open source, maintenu par une des plus grandes entreprises au monde et
chaperonné par un consortium de 34 sociétés. Tout porte à croire qu’Android à de beaux
jours devant lui.
Pour IPRECOM, ce système pourrait apporter une très bonne plus value. Comme nous l’avons
vu au cours de ce mémoire, nous pourrions aussi bien proposer un système mobile
personnalisé pour nos collaborateurs et pour nos clients, que diverses applications. Nous
pourrions par exemple réaliser un accès au suivi-conso en temps réel, proposer la
notification de nouvelles factures ou encore créer un nouveau mode de communication
entre le client et son agent commercial. Il serait aussi possible de proposer des services de
géocalisation des employés en déplacement ou encore, chose inimaginable il y a deux ans
pour une structure comme la nôtre, réaliser notre propre smartphone comme l’a fait la
société GeekPhones.
Nous sommes à la naissance du système Android et malgré toutes les opportunités que nous
apporte ce produit, nous n’avons encore aucune idée de ses multiples possibilités.
Seule notre imagination freine le développement du système Android.
- 85 -
IX.
Bibliographie
Sites internet
http://www.android.com/
http://www.wikipedia.fr
http://www.20minutes.fr
http://www.planete-android.com/
http://developer.android.com/
http://android.smartphonefrance.info/
http://sosandroid.fr/
http://www.openhandsetalliance.com/
http://www.frandroid.com
http://www.pointgphone.com
Livres
Hackez Google Android - editions Eyrolles
L’art du developpement Android – editions Pearson
- 86 -
X.
Annexes
I.
Android 1.5 Platform Highlights
(http://developer.android.com/sdk/android-1.5-highlights.html)
April 2009
The Android 1.5 platform introduces many new features for users and developers. The list
below provides an overview of the changes.
•
User Interface Refinements
• System-wide:
• Refinement of all core UI elements
• Animated window transitions (off by default)
• Accelerometer-based application rotations
• UI polish for:
•
•
•
•
•
•
•
•
•
•
•
•
•
•
In-call experience
Contacts, Call log, and Favorites
SMS & MMS
Browser
Gmail
Calendar
Email
Camera & Gallery
Application management
Performance Improvements
Faster Camera start-up and image capture
Much faster acquisition of GPS location (powered by SUPL AGPS)
Smoother page scrolling in Browser
Speedier GMail conversation list scrolling
•
New Features
•
•
•
•
•
•
•
On-screen soft keyboard
Works in both portrait and landscape orientation
Support for user installation of 3rd party keyboards
User dictionary for custom words
Home screen
Widgets
Bundled home screen widgets include: analog clock, calendar, music player, picture
frame, and search
•
•
•
•
Live folders
Camera & Gallery
Video recording
Video playback (MPEG-4 & 3GP formats)
- 87 -
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Bluetooth
Stereo Bluetooth support (A2DP and AVCRP profiles)
Auto-pairing
Improved handsfree experience
Browser
Updated with latest Webkit browser & Squirrelfish Javascript engines
Copy 'n paste in browser
Search within a page
User-selectable text-encoding
UI changes include:
Unified Go and Search box
Tabbed bookmarks/history/most-visited screen
Contacts
Shows user picture for Favorites
Specific date/time stamp for events in call log
One-touch access to a contact card from call log event
System
New Linux kernel (version 2.6.27)
SD card filesystem auto-checking and repair
SIM Application Toolkit 1.0
Google applications (not available in the Android 1.5 System Image that is included in the
Android SDK)
View Google Talk friends' status in Contacts, SMS, MMS, GMail, and Email applications
Batch actions such as archive, delete, and label on Gmail messages
Upload videos to Youtube
Upload photos on Picasa
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
New APIs and Manifest Elements
UI framework
Framework for easier background/UI thread interaction
New SlidingDrawer widget
New HorizontalScrollview widget
AppWidget framework
APIs for creating secure home screen AppWidgets. For information about how to use
AppWidgets, see the Developer's Guide AppWidgets documentation. Also see Introducing
home screen widgets and the AppWidget framework on the Android Developer's Blog.
APIs for populating Live Folders with custom content.
Media framework
Raw audio recording and playback APIs
Interactive MIDI playback engine
Video Recording APIs for developers (3GP format).
Video and photo sharing Intents
Media search Intent
Input Method framework
Input Method Service framework
88
• Text-prediction engine
• Ability to provide downloadable IMEs to users
• Application-defined hardware requirements
Applications can now use a new element in their manifest files, <uses- configuration> to
indicate to the Android system what hardware features they require in order to function
properly. For example, an application might use the element to specify that it requires a
physical keyboard or a particular navigation device, such as a trackball. Prior to installing the
application, the Android system checks the attributes defined for the <usesconfiguration> element and allows the installation to continue only if the required hardware is
present.
• Speech recognition framework
• Support for using speech recognition libraries via Intent. See RecognizerIntent.
• Miscellaneous API additions
• LocationManager - Applications can get location change updates via Intent
• WebView - Touch start/end/move/cancel DOM event support
• Redesigned Sensor Manager APIs
• GLSurfaceView - convenience framework for creating OpenGL applications
• Broadcast Intent for app update install succeeded - for smoother app upgrade experience
89
II.
Android 1.6 Platform Highlights
(http://developer.android.com/sdk/android-1.6-highlights.html)
The Android 1.6 platform introduces new features for users and developers. This page
provides an overview of some new features and technologies.
•
New User Features
Quick Search Box for Android
Android 1.6 includes a redesigned search framework that provides a quick, effective, and
consistent way for users to search across multiple sources—such as browser bookmarks &
history, contacts, and the web—directly from the home screen.
The system constantly learns which search results are more relevant based on what is clicked.
So popular contacts or apps that have previously been picked will bubble up to the top when a
user types the first few letters of a relevant query.
The search framework also provides developers a way to easily expose relevant content from
their applications in Quick Search Box.
Camera, Camcorder, and Gallery
An updated user interface provides an integrated camera, camcorder, and gallery experience.
Users can quickly toggle between still and video capture modes. Additionally, the gallery
enables users to select multiple photos for deletion.
Android 1.6 also provides a much faster camera experience. Compared to the previous
release, launching the camera is now 39% faster, and there is a 28% improvement in the time
from completing one shot to the next.
VPN, 802.1x
A new Virtual Private Network (VPN) control panel in Settings allows users to configure and
connect to the following types of VPNs:
•
•
•
•
L2TP/IPSEC pre-shared key based VPN
L2TP/IPsec certificate based VPN
L2TP only VPN
PPTP only VPN
Battery usage indicator
A new battery usage screen lets users see which apps and services are consuming battery
power. If the user determines that a particular service or application is using too much power,
they can take action to save the battery by adjusting settings, stopping the application, or
uninstalling the application.
Accessibility
Users will be able to download new accessibility services built on the new accessibility
framework and enable them in Settings.
• Android Market Updates
New Android Market UI
For devices with Android Market, the latest version improves the overall user experience and
90
makes it easier for users to discover great apps and games from developers.
• At the homescreen, users can choose among Apps, Games, and Downloads.
• Inside a category, users can explore titles that are Top paid, Top free, and Just in.
• For each title, users can now see screenshots submitted by developers in addition to
reviews from other users.
•
New Platform Technologies
Expanded Search Framework
The Android search framework has been redesigned and expanded to provide third-party
applications the opportunity to surface content from their applications in Quick Search Box,
the global search tool. To do this, developers will need to make their app "searchable" and
provide suggestions in response to user queries. To enable application search suggestions,
users simply select each application from which they'd like to receive suggestions, under
Searchable items in the Search settings.
Text-to-speech engine
Android 1.6 features a multi-lingual speech synthesis engine called Pico. It allows any
Android application to "speak" a string of text with an accent that matches the language. The
engine supports the following languages: English (American and British accents), French,
Italian, German and Spanish. If you're using a T-Mobile G1 or Dream device, you'll need to
download the SpeechSynthesis Data Installer from Android Market, which includes the
"voices" needed by the text-to-speech engine.
Gestures
A new gestures framework provides application developers with a framework for creating,
storing, loading, and recognizing gestures and associating them with specific actions.
Developers can use the new GestureBuilder tool included in the Android 1.6 SDK to generate
libraries of gestures to include with their application.
Accessibility
Android 1.6 provides a new accessibility framework. With this framework, developers can
create accessibility plugins that respond to user input, such as making a sound when a new
window is shown, vibrating when navigating to the top of a list, and providing spoken
feedback.
Expanded support for screen densities and resolutions
Android 1.6 adds screen support that enables applications to be rendered properly on different
display resolutions and densities. Developers can also specify the types of screens supported
by their application.
Telephony support for CDMA
Android 1.6 includes support for CDMA in the telephony stack.
New version of OpenCore
Android 1.6 includes the updated OpenCore 2 media engine, which has:
• Support for OpenMAX encoders
• Support for additional audio codecs in AuthorEngine
91
• Improved buffering model supports shared buffers allocated in the decoder
2.6.29 Linux kernel
Android 1.6 upgrades the Linux kernel from 2.6.27 to 2.6.29.
New Framework APIs
For a detailed overview of new APIs, see the Version Notes. For a complete report of all API
changes, see the API Differences http://developer.android.com/sdk/api_diff/4/changes.html.
92
III.
Android 2.0 Platform Highlights
(http://developer.android.com/sdk/android-2.0-highlights.html)
The Android 2.0 platform introduces many new and exciting features for users and
developers. This document provides a glimpse at some of the new features and technologies
in Android 2.0.
•
New User Features
Contacts and accounts
• Multiple accounts can be added to a device for email and contact synchronization,
including Exchange accounts. (Handset manufacturers can choose whether to include
Exchange support in their devices.)
• Developers can create sync adapters that provide synchronization with additional data
sources.
• Quick Contact for Android provides instant access to a contact's information and
communication modes. For example, a user can tap a contact photo and select to call,
SMS, or email the person. Other applications such as Email, Messaging, and Calendar can
also reveal the Quick Contact widget when you touch a contact photo or status icon.
Email
• Exchange support.
• Combined inbox to browse email from multiple accounts in one page.
Messaging
• Search functionality for all saved SMS and MMS messages.
• Auto delete the oldest messages in a conversation when a defined limit is reached.
Camera
•
•
•
•
•
•
Built-in flash support
Digital zoom
Scene mode
White balance
Color effect
Macro focus
Android virtual keyboard
• An improved keyboard layout to makes it easier to hit the correct characters and improve
typing speed.
• The framework's multi-touch support ensures that key presses aren't missed while typing
rapidly with two fingers.
• A smarter dictionary learns from word usage and automatically includes contact names as
suggestions.
Browser
• Refreshed UI with actionable browser URL bar enables users to directly tap the address
bar for instant searches and navigation.
93
•
•
•
•
•
•
•
Bookmarks with web page thumbnails.
Support for double-tap zoom.
Support for HTML5:
Database API support, for client-side databases using SQL.
Application cache support, for offline applications.
Geolocation API support, to provide location information about the device.
<video> tag support in fullscreen mode.
Calendar
• Agenda view provides infinite scrolling.
• Events indicate the attending status for each invitee.
• Invite new guests to events.
•
New Platform Technologies
Media Framework
Revamped graphics architecture for improved performance that enables better hardware
acceleration.
Bluetooth
• Bluetooth 2.1
• New BT profiles: Object Push Profile (OPP) and Phone Book Access Profile (PBAP)
New Framework APIs
Android 2.0 includes several new developer APIs. For an overview of new APIs, see
the Android 2.0 version notes : http://developer.android.com/sdk/android-2.0.html#api.
For a complete report of all API changes, see the API Differences Report :
http://developer.android.com/sdk/api_diff/5/changes.html.
94
IV.
View sample
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="5dip"
>
<EditText
android:id="@+id/editTextEditTitle"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="@string/title"
/>
<EditText
android:id="@+id/editTextEditBody"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:padding="10dip"
android:scrollbars="vertical"
android:fadingEdge="vertical"
android:gravity="top|left"
android:hint="@string/content"
/>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<Button
android:id="@+id/btnSave"
android:text="@string/save"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
/>
<Button
android:id="@+id/btnCancel"
android:text="@string/cancel"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
/>
<Button
android:id="@+id/btnDel"
android:text="@string/delete"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:enabled="false"
/>
</LinearLayout>
</LinearLayout>
- 95 -
V.
SQLiteOpenHelper
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DatabaseHelper extends SQLiteOpenHelper{
private final static String dbName = "dbName";
private final static int version = 1;
private SQLiteDatabase database;
public DatabaseHelper(Context context){
super(context, dbName, null, version);
}
public void openDatabase(){
this.database = this.getWritableDatabase();
}
public void closeDatabase(){
this.database.close();
}
public SQLiteDatabase getDatabase(){
return this.database;
}
@Override
public void onCreate(SQLiteDatabase db) {
String sql = "";
sql = "CREATE TABLE tableName ("
+ "_id INTEGER PRIMARY KEY AUTOINCREMENT, "
+ "date INTEGER NOT NULL, "
+ "title TEXT NOT NULL, "
+ "body TEXT NOT NULL)";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int
newVersion) {
int currentVersion = oldVersion + 1;
while (currentVersion < oldVersion){
switch (currentVersion) {
case 2:
//Update from version 1 to version 2
break;
case 3:
//Update from version 2 to version 3
break;
case 4:
//Update from version 3 to version 4
break;
default:
break;
}
currentVersion++;
}
}
}
- 96 -
Téléchargement