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 -