Développer sous Android
Préambule
Le système d'exploitation AndroidSystème d'exploitation basé sur le noyau Linux conçu initialement pour les smartphones et tablettes et qui peut être trouvé sur d'autres appareils (Android TV, Android Auto, ...) est utilisé sur différents appareils. Les plus connus étant les smartphones ou les tablettes sous AndroidSystème d'exploitation basé sur le noyau Linux conçu initialement pour les smartphones et tablettes et qui peut être trouvé sur d'autres appareils (Android TV, Android Auto, ...). Vous pouvez trouver une petite liste d'appareils que j'ai pu tester.
Pour ceux qui ne connaissent pas le monde AndroidSystème d'exploitation basé sur le noyau Linux conçu initialement pour les smartphones et tablettes et qui peut être trouvé sur d'autres appareils (Android TV, Android Auto, ...) à l'utilisation, vous trouverez ici le B.A.Ba des menus et manipulations sur ces appareils.
Il s'agit de cours pour développer sous AndroidSystème d'exploitation basé sur le noyau Linux conçu initialement pour les smartphones et tablettes et qui peut être trouvé sur d'autres appareils (Android TV, Android Auto, ...). Mais avant de commencer, il faut avoir des connaissances JAVA de base pour pouvoir comprendre le développement AndroidSystème d'exploitation basé sur le noyau Linux conçu initialement pour les smartphones et tablettes et qui peut être trouvé sur d'autres appareils (Android TV, Android Auto, ...)...
Développer Android
Il existe différents outils pour développer sous AndroidSystème d'exploitation basé sur le noyau Linux conçu initialement pour les smartphones et tablettes et qui peut être trouvé sur d'autres appareils (Android TV, Android Auto, ...). Ici, nous utiliserons eclipse ADT (c'est ce qui est préconisé par Google, mais ce n'est pas obligatoire). Je pars du principe que vous connaissez déjà cet environnement !

- Le 15/05/2013 Google a présenté un nouvel environnement de développement pour Android basé sur IntelliJ IDEA Community Edition de Jetbrains.
Cet environnement devient l'environnement officiel de développement depuis juillet 2015 et le plugin ADT utilisé sous l'environnement Eclipse ne sera plus maintenu à partir de la fin de l'année 2015.
Cet environnement sera disponible pour LinuxSystème d'exploitation multitâche et multi-utilisateur(1969). UNIX est une marque déposée de l'Open Group. D'autres systèmes "compatibles UNIX" existent: BSD, Linux, Android, OS X pour les plus connus du grand public., WindowsSouvent associé au système d'exploitation de Microsoft pour les PC compatibles. Initialiement, un simple gestionnaire de fenêtres fonctionnant sous DOS. Windows ou au singulier Window peut aussi représenter une fenêtre (traduction du mot anglais Window !) dans d'autres gestionnaires de fenêtres pour d'autres systèmes d'exploitation. Window peut aussi représenter la touche Windows sur un clavier pour PC compatible (il y a deux touchent "window": Entre Ctrl et Alt à gauche du clavier ou entre Alt Gr Ctrl à droite par exemple). et OS X et devrait permettre entre autre de visualiser directement vos écrans sous différentes résolutions ou encore l'internationalisation (visualisation sous différents langues). Cette version est encore en version béta.
- Septembre 2016, Android Studio 2.2 est disponible !
Le système d'exploitation d'un appareil tournant sous AndroidSystème d'exploitation basé sur le noyau Linux conçu initialement pour les smartphones et tablettes et qui peut être trouvé sur d'autres appareils (Android TV, Android Auto, ...) est un système UnixSystème d'exploitation multitâche et multi-utilisateur(1969). UNIX est une marque déposée de l'Open Group. D'autres systèmes "compatibles UNIX" existent: BSD, Linux, Android, OS X pour les plus connus du grand public. (LinuxSystème d'exploitation multitâche et multi-utilisateur(1969). UNIX est une marque déposée de l'Open Group. D'autres systèmes "compatibles UNIX" existent: BSD, Linux, Android, OS X pour les plus connus du grand public.). Cependant, les applications qui seront développées sur cette plateforme seront généralement exécutées dans une JVMLangage JAVA est un langage de programmation orienté objet qui s'exécute sur une JVM (Java Virtual Machine ou machine virtuelle JAVA.) spécifique: Dalvik ou ART (depuis AndroidSystème d'exploitation basé sur le noyau Linux conçu initialement pour les smartphones et tablettes et qui peut être trouvé sur d'autres appareils (Android TV, Android Auto, ...) 5.0).
Conséquence: Une application JAVALangage JAVA est un langage de programmation orienté objet qui s'exécute sur une JVM (Java Virtual Machine ou machine virtuelle JAVA.) standard ne pourra pas tourner directement sous DalvikDalvik est equivalent à une JVM mais pour Android. Il va donc permettre d'exécuter du code dans une machine virtuel. ou ARTL'ART (Android RunTime) est le remplaçant de DALVIK et permet de lancer des applications Android. Par contre, il sera possible d'utiliser certains JAR du moment qu'il n'y a pas d'interfaces graphiques dedans et qu'elles ne soient pas trop lourdes. De même, une application AndroidSystème d'exploitation basé sur le noyau Linux conçu initialement pour les smartphones et tablettes et qui peut être trouvé sur d'autres appareils (Android TV, Android Auto, ...) ne pourra pas tourner sous une JVMLangage JAVA est un langage de programmation orienté objet qui s'exécute sur une JVM (Java Virtual Machine ou machine virtuelle JAVA.) JAVALangage JAVA est un langage de programmation orienté objet qui s'exécute sur une JVM (Java Virtual Machine ou machine virtuelle JAVA.).
Il ne s'agit pas d'un JAVA pour mobile, mais bien plus, limite du JAVA SE. En fait, c'est une version spécifique qui utilise la syntaxe du JAVALangage JAVA est un langage de programmation orienté objet qui s'exécute sur une JVM (Java Virtual Machine ou machine virtuelle JAVA.), mais produit du code totalement incompatible avec JAVALangage JAVA est un langage de programmation orienté objet qui s'exécute sur une JVM (Java Virtual Machine ou machine virtuelle JAVA.). Donc vous ne retrouverez pas toutes les librairies de JAVALangage JAVA est un langage de programmation orienté objet qui s'exécute sur une JVM (Java Virtual Machine ou machine virtuelle JAVA.) SE. Mais par contre, vous en trouverez d'autres spécifiques à l'environnement AndroidSystème d'exploitation basé sur le noyau Linux conçu initialement pour les smartphones et tablettes et qui peut être trouvé sur d'autres appareils (Android TV, Android Auto, ...).
IMPORTANT:
Volontairement dans les exemples qui vont suivre, les programmes ont tous le même package fr.free.supertos. Ce qui évitera d'avoir une multitude de programmes installées sur votre appareil. En effet, sous androidSystème d'exploitation basé sur le noyau Linux conçu initialement pour les smartphones et tablettes et qui peut être trouvé sur d'autres appareils (Android TV, Android Auto, ...), une application est nommée par son package. Donc s'ils portent tous le même nom, le dernier package installé va tout simplement écraser le précédent.
Chapitres
Configuration du poste de travail
Explication sur "Mon premier programme"
- Présentation d'une activité
- Cycle de vie
- Création d'une activité
- Mettre fin à une activité
- Les différentes classes d'activité
- Fragment
- Différents fichiers de configurations pour différents types d'écrans
- ViewGroup/Layouts (ou comment positionner des objets graphiques)
- View/widgets (Les objets graphiques)
- Regrouper les styles dans un fichier XML
- La classe Log
- Visualiser les Logs
- Les filtres d'intention
- Définir un filtre d'intention
- Premier type d'intention: le routage en interne/intention explicite
- Second type d'intention: le routage en externe/intention implicite
- Différentes solutions pour exécuter une activité
- Gérer les erreurs causées par absence d'activité répondant à l'intention
- Définir les mimes pour nos activités
- Développer une activité exploitable par intention implicite
- Forcer le choix par l'utilisateur d'une activité si plusieurs activités présentes
- Installer un .apk par code
La classe Environment sous Android (complément à la classe File)
- Les répertoires de l'application, des données, des téléchargements ou racine d'Android
- Les répertoires dédiés à l'utilisateur
- L'état du volume externe
- Les threads
- Le Handler
- Le Looper
- AsyncTask
- Toast
- Message d'alerte
- Complément sur les messages d'alerte
- Exemple
- Afficher un message/définir une intention
- Vibration
- Allumer la LED tricolor
- Produire un son
- Désactivation de la barre de titre
- Désactivation de la décoration d'une fenêtre, barre de notification
- Interdire la mise en veille de l'écran.
- Opérations graphiques de bases (point, droite, rectangle et cercle)
- Utilisations des bitmaps
- Afficher du texte
- Animation 2D
- Live wallpaper
- Toucher l'écran
- Accéléromètre
- Clavier
- Interdire la rotation (c'est radical !)
- Laisser AndroidSystème d'exploitation basé sur le noyau Linux conçu initialement pour les smartphones et tablettes et qui peut être trouvé sur d'autres appareils (Android TV, Android Auto, ...) gérer la rotation mais sauver l'état de l'activité
- Traiter personnellement la rotation
Live Wallpaper en 2D (déjà traité dans La 2D sous Android)
- Les grandes lignes
- Première étape - création du projet
- Deuxième étape - création d'une ressource wallpaper
-Troisième étape - le wallpaper service
- Quatrième étape - Le fichier ManifestAndroid.xml
- Exemple
- Le setup du wallpaper
- Installation automatique d'un live wallpaper
- Diffuser un évènement
- Déclarer les broadcast receivers de votre application
- Créer un broadcast receiver
- Permission sur les intentions
- Priorisation de l'ordre d'appel des broadcast receivers
- Intention sur activité, service et broadcast
- Autres méthodes
- Exemple
Le téléphone, internet, SMS...
- Informations sur le téléphone
- Composer un numéro
- SMS
- Navigateur internet
- Introduction
- Les autres répertoires sous res
- Répertoires res/xxx obligatoires
- Introduction
- SQLite sous AndroidSystème d'exploitation basé sur le noyau Linux conçu initialement pour les smartphones et tablettes et qui peut être trouvé sur d'autres appareils (Android TV, Android Auto, ...)
- Exemple de code
- SQLiteQueryBuilder
- Problème base relationnelle et l'objet
- Rendre accessible la base de donnée hors de votre application
- ContentProvider
- Accéder à un ContentProvider (généralité)
- Déclaration du ContentProvider dans AndroidManifest
- Création de son propre content provider
- Traitement de l'URI
- ContentProvider et SQLite
- Exemple
- Effet sonore
- Jouer une musique
- Jouer une musique via intention vers un player multimédia
- Tout d'abord, les bases
...
- Démarrer un service après le boot de l'appareil
- Les différents types d'alarme
- Programmer une alarme unique
- Programmer une alarme répétitive
- Interrompre une alarme
- Liste (non exhaustive) des capteurs
- Exemples de code
- La caméra comme appareil photo
- La caméra pour filmer
- Le développement des app widgets
- C'est quoi une AppWidget
- Les bases de l'AppWidget
- Les différentes intents/méthodes pour un appWidget
- Maj le contenu des appWidgets
- Aspect des appWidgets
- Risques d'ANR
- Lancer des maj périodiques ou non
- Introduction
- Changement d'état de la batterie
- Etre informé de certaines modifications de l'état de la batterie
- Les bases d'OpenGL SE
Exemple d'application Android
Une application de rappel des anniversaires.
D'autres API plus standards sont disponibles
(JAVA bases, donc à adapter pour vos programmes sous androidSystème d'exploitation basé sur le noyau Linux conçu initialement pour les smartphones et tablettes et qui peut être trouvé sur d'autres appareils (Android TV, Android Auto, ...) !)
- File (Voir La classe Environment sous Android en complément à la classe File)
- API standard ZIP
- Zip4J
Annexes
- Les répertoires d'un projet Android
- Permissions d'accès aux ressources
- Exécuter des commandes avec les privilèges du root en java
- Gravity, poids, positionnement et surface occupée par un objet
- Gestion des versions sous Android
- Les fichiers de ressources Android
- Passer en ligne de commandes pour administrer un android (terminal emulator/adb)
- Les informations exif d'un jpeg
- Un .apk
Des erreurs
Erreur lors de la compilation:
Si vous obtenez un message sous la forme Errors running builder 'Android Package Builder' on project "le nom de votre projet", alors vous avez un souci de version de JAVALangage JAVA est un langage de programmation orienté objet qui s'exécute sur une JVM (Java Virtual Machine ou machine virtuelle JAVA.). Vérifiez la variable d'environnement JAVA_HOME sous WindowsSouvent associé au système d'exploitation de Microsoft pour les PC compatibles. Initialiement, un simple gestionnaire de fenêtres fonctionnant sous DOS. Windows ou au singulier Window peut aussi représenter une fenêtre (traduction du mot anglais Window !) dans d'autres gestionnaires de fenêtres pour d'autres systèmes d'exploitation. Window peut aussi représenter la touche Windows sur un clavier pour PC compatible (il y a deux touchent "window": Entre Ctrl et Alt à gauche du clavier ou entre Alt Gr Ctrl à droite par exemple)., elle doit pointer sur un JAVALangage JAVA est un langage de programmation orienté objet qui s'exécute sur une JVM (Java Virtual Machine ou machine virtuelle JAVA.) de SUN ou Oracle version 5 ou 6 (relancez eclipse si vous la changez).
Erreur au lancement d'un émulateur AndroidSystème d'exploitation basé sur le noyau Linux conçu initialement pour les smartphones et tablettes et qui peut être trouvé sur d'autres appareils (Android TV, Android Auto, ...) (AVD):
Si au lancement d'une AVD, vous obtenez une erreur "Failed to allocate memory: 8", le problème est certainement lié à un bug dans l'émulateur. Lors du paramétrage de votre appareil virtuel, l'unité de mesure de votre mémoire vive à allouer à l'AVD n'a certainement pas été enregistrée. Lors du lancement de cet AVD, celuic-ci cherche alors à allouer de la mémoire dans une unité bien plus grande que celle que vous vouliez certainement utiliser:GB(?) au lieu de votre choix initial. Le système ne peut évidemment pas répondre favorablement à la requète d'où le message d'erreur.
La solution consiste à modifier manuellement ces informations en allant sous (suivant la version de WindowsSouvent associé au système d'exploitation de Microsoft pour les PC compatibles. Initialiement, un simple gestionnaire de fenêtres fonctionnant sous DOS. Windows ou au singulier Window peut aussi représenter une fenêtre (traduction du mot anglais Window !) dans d'autres gestionnaires de fenêtres pour d'autres systèmes d'exploitation. Window peut aussi représenter la touche Windows sur un clavier pour PC compatible (il y a deux touchent "window": Entre Ctrl et Alt à gauche du clavier ou entre Alt Gr Ctrl à droite par exemple).):
C:\Users\<user>\.androidSystème d'exploitation basé sur le noyau Linux conçu initialement pour les smartphones et tablettes et qui peut être trouvé sur d'autres appareils (Android TV, Android Auto, ...)\avd\<avd-profile-name>.avd\config.ini
ou c:\Documents and settings\<user>\.androidSystème d'exploitation basé sur le noyau Linux conçu initialement pour les smartphones et tablettes et qui peut être trouvé sur d'autres appareils (Android TV, Android Auto, ...)\avd\<avd-profile-name>.avd\config.ini
ou <user> est le nom de votre profil utilisateur WindowsSouvent associé au système d'exploitation de Microsoft pour les PC compatibles. Initialiement, un simple gestionnaire de fenêtres fonctionnant sous DOS. Windows ou au singulier Window peut aussi représenter une fenêtre (traduction du mot anglais Window !) dans d'autres gestionnaires de fenêtres pour d'autres systèmes d'exploitation. Window peut aussi représenter la touche Windows sur un clavier pour PC compatible (il y a deux touchent "window": Entre Ctrl et Alt à gauche du clavier ou entre Alt Gr Ctrl à droite par exemple)., et <avd-profile-name> le nom que vous avez donné à votre émulateur.
Rechercher dans ce fichier l'attribut hardware nommé hw.ramSize et précisez l'unité à utiliser après la valeur (par exemple hw.ramSize=1024 par hw.ramSize=1024MB).
Liens intéressants
developer.android.com indispensable, mais en anglais !
Le livre andBook au format PDF gratuit, en anglais aussi !
et des tutoriels français
www.pointgphone.com/page/3?s=tutoriel
http://android.developpez.com/cours/
Il y a en fait peu de littérature en français sur le net pour le moment (janvier 2012). Eventuellement des généralités en provenance d'universités...
Trouvé ceci en Anglais:
http://www.tutorialspoint.com/android/index.htm
http://www.vogella.com/tutorials/android.html