Développer sous AndroidImage non trouvée !

 

Préambule

Le système d'exploitation Android est utilisé sur différents appareils. Les plus connus étant les smartphones ou les tablettes sous Android. Vous pouvez trouver une petite liste d'appareils que j'ai pu tester.

Pour ceux qui ne connaissent pas le monde Android à 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 Android. Mais avant de commencer, il faut avoir des connaissances JAVA de base pour pouvoir comprendre le développement Android...

 

Développer Android

Il existe différents outils pour développer sous Android. 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 !

Image non trouvée !

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 Linux, Windows 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.

 

Le système d'exploitation d'un appareil tournant sous Android est un système Unix (Linux). Cependant, les applications qui seront développées sur cette plateforme seront généralement exécutées dans une JVM spécifique: Dalvik ou ART (depuis Android 5.0).

Conséquence: Une application JAVA standard ne pourra pas tourner directement sous Dalvik ou ART. 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 Android ne pourra pas tourner sous une JVM 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 JAVA, mais produit du code totalement incompatible avec JAVA. Donc vous ne retrouverez pas toutes les librairies de JAVA SE. Mais par contre, vous en trouverez d'autres spécifiques à l'environnement Android.

 

Image non trouvée !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 android, 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

Mon premier programme

Explication sur "Mon premier programme"

Activity

- Présentation d'une activité
- Cycle de vie
- Création d'une activité
- Mettre fin à une activité
- Les différentes classes d'activité
- Fragment

View et ViewGroup

- Différents fichiers de configurations pour différents types d'écrans
- ViewGroup/Layouts (ou comment positionner des objets graphiques)
- View/widgets (Les objets graphiques)

Styles et Thèmes

- Regrouper les styles dans un fichier XML

Les logs

- La classe Log
- Visualiser les Logs

Les Intents

- 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

- Les threads
- Le Handler
- Le Looper
- AsyncTask

Toasts et messages d'alerte

- Toast
- Message d'alerte
- Complément sur les messages d'alerte
- Exemple

Notifications

- Afficher un message/définir une intention
- Vibration
- Allumer la LED tricolor
- Produire un son

FullScreen

- Désactivation de la barre de titre
- Désactivation de la décoration d'une fenêtre, barre de notification

Wake Locks

- Interdire la mise en veille de l'écran.

La 2D sous Android

- Opérations graphiques de bases (point, droite, rectangle et cercle)
- Utilisations des bitmaps
- Afficher du texte
- Animation 2D
- Live wallpaper

Input

- Toucher l'écran
- Accéléromètre
- Clavier

Rotation de l'écran

- Interdire la rotation (c'est radical !)
- Laisser Android 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

Broadcast

- 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

PendingIntent

- 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

Internationalisation

- Introduction
- Les autres répertoires sous res
- Répertoires res/xxx obligatoires

SQLite

- Introduction
- SQLite sous Android
- Exemple de code
- SQLiteQueryBuilder
- Problème base relationnelle et l'objet
- Rendre accessible la base de donnée hors de votre application

ContentProvider

- 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

Musique et son

- Effet sonore
- Jouer une musique
- Jouer une musique via intention vers un player multimédia

Les services

- Tout d'abord, les bases
...
- Démarrer un service après le boot de l'appareil

Les alarmes

- Les différents types d'alarme
- Programmer une alarme unique
- Programmer une alarme répétitive
- Interrompre une alarme

Les capteurs

- Liste (non exhaustive) des capteurs
- Exemples de code

Les caméras

- La caméra comme appareil photo
- La caméra pour filmer

AppWidget

- 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

La batterie

- Introduction
- Changement d'état de la batterie
- Etre informé de certaines modifications de l'état de la batterie

La 3D avec openGL SE

- 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 android !)

- File (Voir La classe Environment sous Android en complément à la classe File)

- Filtrage des fichiers

- Zip, un autre filtrage

- API standard ZIP
- Zip4J

- Expressions régulières

 

Annexes

- Les répertoires d'un projet Android

- Structure rect

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

- Les Listener

- Gestion des versions sous Android

- Les fichiers de ressources Android

- Passer en ligne de commandes pour administrer un android (terminal emulator/adb)

- 9-patch ou nine-patch

- Les informations exif d'un jpeg

- Changement de configuration

- Matrice 2D

- Annotations Android

- Android Support Library

- 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 JAVA. Vérifiez la variable d'environnement JAVA_HOME sous Windows, elle doit pointer sur un JAVA de SUN ou Oracle version 5 ou 6 (relancez eclipse si vous la changez).

Erreur au lancement d'un émulateur Android (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 Windows):

C:\Users\<user>\.android\avd\<avd-profile-name>.avd\config.ini

ou c:\Documents and settings\<user>\.android\avd\<avd-profile-name>.avd\config.ini

ou <user> est le nom de votre profil utilisateur Windows, 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

tutos-android.com

site du zéro

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