Créer un projet
Lancez l'IDE Android Studio s'il n'est pas encore ouvert. Vous serez accueilli par l'écran d'ouverture (Figure 3-1).
Figure 3-1. Welcome to Android Studio
Vous pouvez faire plusieurs choses à partir de cette fenêtre de dialogue d'ouverture, mais la seule chose que nous ferons est de démarrer un nouveau projet Android. Nous explorerons les autres options à mesure que nous avancerons. Cliquez sur «Démarrer un nouveau projet Android Studio» pour lancer l'assistant de création de projet. Avant d'aller plus loin, assurez-vous d'être connecté à Internet. Android Studio utilise un outil de construction appelé Gradle. Il extrait plusieurs fichiers des référentiels Internet chaque fois que vous créez un nouveau projet (Figure 3-2).
Figure 3-2. Create new project
Vous devrez fournir quelques éléments à l’assistant. Vous devez taper le nom de l'application et le domaine de l'entreprise.L’Assistant illustré à la Figure 3-2 accepte les entrées concernant les détails du projet que vous souhaitez créer. il sera rempli de valeurs par défaut que vous pourrez accepter ou modifier si vous le souhaitez.
application name |
Qu'est-ce que vous voulez appeler l'application. Ceci est également appelé nom du projet. Le nom de l'application devient non seulement le nom du dossier de niveau supérieur qui contient tous les fichiers de projet sur votre disque, mais devient également une partie de l'identité de votre application si vous le publiez dans Google Play. |
company domain |
Il s’agit du nom de domaine de votre organisation ou de votre entreprise en notation DNS inversée. Si vous n’avez pas de nom de société, saisissez un nom de domaine Web (par exemple, monnom.com). Étant donné que nous essayons simplement de démarrer pour le moment et que nous ne publierons pas cette application sur Google Play, peu importe que le domaine de la société soit réel ou non. |
package name |
Il s’agit du domaine de la société et du nom de l’application. Cela identifiera de manière unique votre application si vous choisissez de la diffuser dans Google Play. Vous ne saisirez pas ce champ; ceci est automatiquement construit à partir du nom de l'application et du domaine de l'entreprise. L’assistant le remplira automatiquement pour vous, mais vous pouvez le modifier si vous le souhaitez. Généralement, il vaut mieux laisser cela seul |
project location |
C’est un emplacement dans votre lecteur de disque où les fichiers de projet seront conservés. Cela ressemble presque à l'idée d'espace de travail d'Eclipse, si vous l'avez déjà utilisée. Contrairement à Eclipse, l’emplacement du projet est tout simplement un emplacement pour vos fichiers de projet. Il ne contient pas d'informations sur les paramètres comme dans Eclipse. |
Nous devons spécifier la version d'Android à cibler (Figure 3-3). Nous allons simplement choisir Marshmallow pour le moment (API niveau 23). Cela ne signifie pas que notre application ne fonctionnera que sur Marshmallow; au lieu de cela, cela signifie que notre application sera exécutée sur des appareils dotés de versions Marshmallow ou supérieures. L’entrée sdk minimale dans cet écran dictera la version la plus basse d’Android prise en charge par notre application. Il n’existe pas de règle stricte sur la manière de sélectionner le sdk minimum, mais il suffit de se rappeler que plus la version du sdk est basse, plus le nombre de périphériques pris en charge par votre application est élevé. Gardez à l'esprit également que les versions inférieures d'Android peuvent offrir moins de fonctionnalités d'application. D'autre part, les bibliothèques de support nous permettent d'utiliser de nouvelles fonctionnalités sur les anciennes versions d'Android. La sélection d'un sdk min pourrait être davantage une décision commerciale que technique, car vous devez prendre en compte l'étendue de votre public d'utilisateurs cibles.
Figure 3-3. Select target version
Laissez les autres cases à cocher intactes. Nous sommes seulement intéressés par l'application téléphone / tablette pour le moment.La prochaine chose à faire est de choisir un type d'activité. Une activité est un composant Android facilitant l’interaction de l’utilisateur. C'est la partie visible de votre application. Comme vous pouvez le constater à l'aide des options de l'assistant illustrées à la figure 3-4, il existe de nombreux types d'activités. Toutefois, pour ce faire, nous sélectionnons l'option «activité vide».
Figure 3-4. Choose type of activity
Choisir l’option «activité vide» ne signifie pas que nous n’obtiendrons aucune classe d’activité. L'assistant va générer une classe d'activité pour nous, mais elle sera vide. Il n’existera aucun widget ou contrôle, à l’exception d’un seul champ de texte portant la mention «Hello World». L'activité vide est la pierre angulaire des autres activités. C'est une bonne idée de se familiariser avec cette version la plus élémentaire de la classe d'activité.
Figure 3-5. Configure activity
Une fois que nous avons choisi le type d’activité, il reste deux autres entrées: le nom de l’activité et le nom de la structure (Figure 3-5). Le nom de l'activité sera utilisé pour générer un fichier Java qui contiendra toute la logique du programme pour cette activité. Le nom de la structure sera utilisé pour générer un fichier XML qui contiendra la définition de l'interface utilisateur.
Lorsque vous cliquez sur le bouton “Terminer”, AS3 passe à la vitesse supérieure pour générer le projet. Vous devez être connecté à Internet à ce moment-là, car AS3 utilisera assez de ressources du Web.Lors de la toute première exécution d'AS3, certains messages d'erreur peuvent s'afficher. c’est juste le résultat du processus de construction. AS3 vous indiquera généralement comment corriger ces erreurs. Cela peut être aussi simple que de cliquer sur un lien en haut à droite de l'EDI en jaune, qui affiche le message d'erreur lui-même.
Utiliser Android Studio
Lorsque les choses seront enfin réglées, vous verrez un écran similaire à celui de la figure 3-6.
Figure 3-6. Main AS3 window
À l'extrême gauche de la fenêtre principale d'AS3, vous verrez une section avec une disposition arborescente dans laquelle les fichiers et les dossiers de notre application sont affichés (voir la figure 3-7). Vous pouvez l'utiliser pour naviguer dans le projet et ouvrir un fichier en double-cliquant dessus.
Figure 3-7. Project window
La zone d'édition principale utilise des onglets. Lorsque vous ouvrez un fichier pour le modifier, il devient un onglet ici.Vous pouvez utiliser les onglets pour passer d'un fichier à un autre. Deux onglets sont actuellement ouverts: choisissez l'onglet activity_main.xml afin que nous puissions voir à quoi ressemble notre application (Figure 3-8).
Figure 3-8. Tabbed editing area
Vous remarquerez que lorsque vous avez basculé pour afficher activity_main, le contexte de AS3 a également changé. Une fois que la disposition de l'interface utilisateur est devenue disponible pour l'édition, la «palette» est également devenue visible. La Figure 3-9 montre un rendu de l’interface utilisateur de notre application. Cette interface utilisateur est définie sur un fichier XML (activity_main.xml). Comme vous pouvez le constater, il n’existe pas encore beaucoup de choses, mais un simple «Hello World» que l’assistant a créé pour nous.
Figure 3-9. activity_main.xml
Figure 3-10. Palette
La zone "Palette" contient toutes les vues ou widgets que nous pouvons utiliser pour notre application. L'idée de base est de simplement faire glisser des vues de cette palette vers le canevas de conception.Pendant que vous consultez encore activity_main, vous remarquerez qu'il y a deux onglets dans la partie inférieure gauche de AS3. Ces onglets correspondent à deux modes d'affichage de l'écran de disposition. Le mode «Conception» affiche un rendu visuel de l'interface utilisateur et le mode «Texte» nous montre le code XML. Le fichier de mise en page peut être manipulé dans les deux cas. Basculer entre la conception et le mode texte est un excellent moyen d’apprendre et de vous familiariser avec le balisage XML.
Figure 3-11. viewing modes of activity_main.xml
La figure 3-12 illustre le contenu du balisage XML du fichier de présentation (activity_main.xml).
Figure 3-12. Textual view of activity_main.xml
Nous n'avons pas besoin d'ajouter ou de faire quoi que ce soit à cette application. Le but de ce premier exercice est simplement de se familiariser avec les fonctionnalités les plus courantes de AS3. Les étapes que nous avons suivies jusqu’à présent sont plutôt rigides. La plupart des applications que vous allez créer suivront les mêmes étapes.La prochaine chose à faire est d'exécuter l'application. Nous allons exécuter l'application dans un AVD (appareil virtuel Android). L'AVD est un émulateur. il exécute l'image réelle d'un système d'exploitation Android plutôt que de simplement simuler son comportement. Pour exécuter l'application, cliquez sur le bouton "Exécuter" de la barre d'outils.
Figure 3-13. Run button
AS3 recherchera soit un périphérique physique connecté, soit un émulateur en cours d'exécution. Comme nous n’avons ni l’un ni l’autre, aucun n’est répertorié dans «Périphériques connectés». Il y a déjà quelques entrées dans «Périphériques virtuels disponibles» car je les ai déjà créées. Votre configuration sera assez vide puisque vous n’avez jamais créé d’AVD.Créez un nouvel émulateur en cliquant sur «Créer un nouveau périphérique virtuel», comme illustré à la Figure 3-14.
Figure 3-14. Deployment target
Choisissez une définition de périphérique. Dans cet exemple, j'ai choisi le 4.7 "Nexus 4. Cliquez sur" Suivant ".
Figure 3-15. AVD configuration
Nous devrions choisir une image de système d'exploitation pour notre nouvel émulateur. Ce projet a été créé avec un sdk minimal de 23 (Marshmallow), nous allons donc choisir l’API 23 comme image système. Sur votre poste de travail, l'entrée Marshmallow peut apparaître avec un lien «Télécharger» cliquable; Si tel est le cas, cliquez simplement sur «Télécharger» pour que l'image du système d'exploitation soit téléchargée. Lorsque cela est fait, cliquez sur “Suivant” pour configurer le nouvel émulateur.
Figure 3-16. Select system image
Vous pouvez modifier le nom de l'émulateur nouvellement créé ou simplement accepter le nom par défaut. Cliquez sur «Afficher les paramètres avancés» si vous souhaitez voir plus d'options de configuration.
Figure 3-17. AVD configuration
Vous pouvez modifier quelques options supplémentaires lorsque les paramètres avancés sont visibles. Vous pouvez modifier ces valeurs ultérieurement en fonction des besoins de votre application. Vous pouvez donner à votre émulateur plus de mémoire ou d'espace de stockage interne si vous devez le tester dans votre application. Pour le moment, nous accepterons simplement les valeurs par défaut. Une fois l’AVD créé, vous devriez revenir à l’écran «Select Deployment Target».
Figure 3-18. Advanced settings
Sélectionnez le nouvel émulateur créé, puis cliquez sur «OK». Le démarrage de l'émulateur peut prendre un certain temps, mais une fois l'opération terminée, vous devriez voir (Figure 3-20) une représentation de machine virtuelle du Nexus 4 s'exécutant dans une fenêtre distincte.
Figure 3-19. Select deployment target
Retournez à AS3 et cliquez sur le bouton «Exécuter» afin que nous puissions exécuter l'application sur l'émulateur avec notre application «Hello World» en cours d'exécution.
Figure 3-20. Hello World running in the emulator
Compilation et Exécution
Les composants Android sont écrits en langage Java ou Kotlin; C'est pourquoi AS3 est livré avec son propre JDK intégré. Toutefois, le processus de compilation n’est pas le même que celui auquel vous avez peut-être été habitué avec Java SE ou Java EE.Les exécutables Android sont des fichiers dex et non des fichiers de classe. La compilation du programme est un processus en deux étapes sous Android. Les fichiers source Java sont d'abord compilés en fichiers de classe, comme ce que vous avez fait dans Java SE / EE. Après cela, les fichiers de classe résultants sont convertis en fichiers dex avec l'outil DX. Les fichiers Dex sont ceux qui sont exécutés dans le runtime Android (ART).
Figure 3-21. Compilation and runtime
Composants Android
Les applications dans Android ne sont pas tout à fait les mêmes que les applications écrites pour le bureau. Ils peuvent présenter des similitudes frappantes en ce qui concerne les apparences, mais structurellement, ils diffèrent beaucoup. Les applications de bureau sont quasiment autonomes. Les fichiers exe contiennent toutes les routines et sous-routines nécessaires. De temps en temps, il peut s’appuyer sur une bibliothèque chargée dynamiquement, mais l’exécutable est quasiment autonome. Ce n'est pas le cas avec les applications Android.Une application Android n'est pas un package monolithique, comme un fichier EXE dans Windows. Il s'agit d'un ensemble de composants et d'autres ressources vaguement liés ou faiblement couplés, qui sont maintenus ensemble dans un fichier APK (fichier de package Android).
Figure 3-22. Logical view of an Android app
Table 3-1 describes an Android app and its composition in detail.
Table 3-1. An Android App
APK file |
Le fichier de package Android a l'extension .apk. Il s’agit essentiellement d’une forme d’archive basée sur le fichier jar (archive Java), elle-même basée sur un fichier compressé. Il contient tout dans une application Android. Ce fichier est ce qui est téléchargé sur le périphérique d’un utilisateur lorsqu’il installe une application. |
Resources |
Vous pouvez inclure d'autres ressources telles que de l'audio, de la vidéo ou des images dans votre application. |
Manifest |
Le manifeste Android est un fichier XML. Il définit un certain nombre de choses: par exemple, ce que l'application peut faire, à quels types de demandes ou d '«intentions» peut-elle répondre, ce qui la compose, si elle peut aller sur Internet, etc. Voici quelques autres éléments que vous trouverez dans le fichier manifeste: |
Components |
• le nom de l'application |
Intents |
• Quel écran apparaîtra en premier lorsqu'un utilisateur clique sur l'application |
Components
Les composants sont des éléments de base pour toute application Android. Ce sont des abstractions de haut niveau d'objets utiles, comme montrer un écran à l'utilisateur, exécuter une tâche en arrière-plan, diffuser un événement, etc. Ce sont des classes Java précodées avec un comportement très spécifique. Nous devons bien sûr les étendre pour pouvoir ajouter des fonctionnalités uniques à notre application.Pensez à créer une application Android comme si vous construisiez une maison. Certaines personnes construisent des maisons à la manière traditionnelle: ils assemblent des poutres, des contrefiches, des panneaux de plancher, etc. Ils fabriquent les portes et autres accessoires à partir de matières premières, à la main, comme un artisan. Si nous construisions des applications Android de cette façon, cela nous prendrait beaucoup de temps et cela pourrait être assez difficile. Les compétences nécessaires pour créer des applications à partir de rien pourraient ne pas être à la portée de nombreux programmeurs. Sous Android, les applications sont construites à l'aide de composants. Pensez-y comme des pièces préfabriquées d'une maison. Les pièces fabriquées à l'avance et tout ce dont elle a besoin, c'est de l'assemblage. Nous ne construisons pas la maison à partir de matières premières. Au lieu de cela, nous utilisons des composants préconfigurés et les assemblons. Si vous vous souvenez des parties du système d'exploitation Android du chapitre 1, le système d'exploitation comprend de nombreuses choses, pas seulement des pilotes de matériel et des applications, mais également des composants préconfigurés. Nous pouvons construire nos propres applications par-dessus ces composants, nous permettant ainsi de gagner un temps précieux. La figure 3-23 illustre une représentation logique de l'architecture Android.
Table 3-2. Android Components
Component |
Ce qu'il fait exemple | |
Activity base class: android.app.Activity |
En attente, affiche l'utilisateur Afficher un seul message électronique, des éléments d'interface (Afficher les notes de prise | |
Service base class: android.app.Service |
et ViewGroups). C’est une chose qu'un utilisateur peut faire avec votre application |
Download a large file from the Internet, play background music |
BroadcastReceiver base class: android.content.BroadcastReceiver |
Exécuter un processus en arrière-plan Télécharger un fichier volumineux depuis Internet, écouter de la musique en arrière-plan |
Display a warning message when the device battery dips to below 10% |
ContentProvider base class: android.content.ContentProvider |
Recevoir des messages du système Android ou des applications Afficher un message d'avertissement |
Contacts or address book on your phone. Any application can look up and add data to the phonebook |
Activités
Une activité est une tâche unique qu'un utilisateur peut faire (cette définition provient du site Web de développeur Android, developer.android.com). C’est une définition très succincte du composant Activité car c’est exactement cela, une chose focalisée qui interagit avec un utilisateur. L'équivalent d'une activité sur le bureau de votre PC serait une fenêtre qui apparaît en plein écran. Il attire votre attention et vous permet de vous concentrer.Le composant activité fait partie du cadre des applications, comme illustré à la figure 3-1. L'idée de base pour utiliser ce composant est d'étendre (hériter) de la classe android.app.Activity puis de composer l'interface utilisateur en agrégeant des éléments d'interface utilisateur (champs de texte, boutons, etc.) à l'intérieur de la classe d'activité. Tous ces éléments d'interface utilisateur sont capables de réagir à des événements tels que cliquer et glisser.Certaines applications ont une seule activité et d'autres applications auront plus d'un écran. Pour les applications comportant plusieurs écrans, vous aurez besoin d’un moyen de lancer des activités. Il arrive également que vous deviez transmettre des données d'une activité à une autre. Nous allons répondre à ces besoins en utilisant Intents.
Services
Parfois, vous devrez écrire du code invisible pour l’utilisateur, qui ne possède pas d’interface utilisateur. Vous devrez sûrement la lancer d'une certaine manière à partir d'une activité, mais une fois lancée, l'application continue de s'exécuter, même si l'interface utilisateur qui l'a lancée a déjà disparu. Un lecteur de musique est un exemple de ce type d'application. Une application compatible GPS qui met à jour votre position de temps en temps est un autre exemple.Si vous devez créer ce type d'applications, vous utiliserez des services. Ce sont des opérations longues qui sont exécutées en arrière-plan. Un service est indépendant de l'activité qui a été lancée. Même si l'écran de l'interface utilisateur utilisé pour lancer le service est déjà mort, le code de service continue de fonctionner.
Fournisseurs de contenu
Chaque application s'exécute sur son propre processus: sa propre machine virtuelle. Ce comportement d'Android protège chaque application. Si une application mal écrite ne fonctionne pas correctement, elle ne peut pas arrêter les autres applications en cours d'exécution. C'est bon pour la stabilité de l'application. Cependant, il est pratiquement impossible pour une application d’accéder aux données d’une autre.Les fournisseurs de contenu résolvent le problème du partage de données entre les applications. Il vous est possible d'écrire une application et de partager toutes les données qu'elle contient avec d'autres applications. Les applications Contacts et Calendrier sur Android sont de bons exemples d'applications utilisant des fournisseurs de contenu.Ne confondez pas Content Provider avec votre propre base de données. Si vous créez une application qui utilise une base de données SQLite, votre application peut bien sûr y accéder. Si, par exemple, vous souhaitez autoriser d’autres applications à accéder aux données de votre application, vous pouvez créer un fournisseur de contenu. Votre application rendra les données disponibles aux autres applications utilisant des URI standard.
Récepteurs de diffusion
Les récepteurs de diffusion sont utilisés si vous souhaitez exécuter une logique de programme dans votre application en réponse à des événements générés par le système Android ou d'autres applications. Vous pouvez, par exemple, initier une écriture dans la base de données lorsque le téléphone reçoit un message SMS. Vous voudrez probablement examiner le message SMS et, s'il répond à certains critères, vous l'enregistrerez dans la base de données. Voici un exemple d'utilisation des récepteurs de diffusion.Vous pouvez faire en sorte que votre application écoute certains événements. Pour ce faire, vous devez enregistrer votre application pour écouter un événement spécifique. C'est le même concept lorsque vous vous abonnez à une liste de diffusion. Quand il y a un nouveau courrier, vous êtes averti.Outre l'écoute d'événements diffusés, vous pouvez également faire en sorte que votre application diffuse des événements spécifiques. Pour ce faire, vous allez étendre une classe Android spécifique appelée BroadcastReceiver.BroadcastReceivers n’a généralement pas d’interface utilisateur. Mais vous pouvez créer des notifications qui apparaîtront dans la barre d'état.