PROGRAMMATION
MOBILE
Introduction à
ANDROID
[Link]@[Link]
I PRÉSENTATION DU COURS
P R O G R A M M A T I O N M O B I L E - I N T R O D U C T I O N À A N D R O I D | 2
PRÉSENTATION DU COURS
I
OBJECTIFS
Stockage de données
Enregistrer des données
localement, dans la
mémoire du
périphérique Android.
Android Studio
Prendre en main
Interface utilisateur
l'environnement de
Être en mesure de créer
développement
une interface utilisateur
intégré (EDI) conçu
simple. API Rest
pour Android
Se connecter et
échanger des
informations à distance
à l'aide d'une API Rest.
Capteurs embarqués
Accéder aux
informations renvoyées
par les capteurs
présents sur le La base pour créer des
périphérique Android.
applications Android
P R O G R A M M A T I O N M O B I L E - I N T R O D U C T I O N À A N D R O I D | 3
PRÉSENTATION DU COURS
I
ENSEIGNEMENTS
CM
3 Pour poser les bases
TD
3 Pour découvrir l'environnement Android
TP
12 Pour développer un projet
P R O G R A M M A T I O N M O B I L E - I N T R O D U C T I O N À A N D R O I D | 4
PRÉSENTATION DU COURS
I
ENSEIGNEMENTS
CM
31 Pour poser les bases
TD
35 Pour découvrir l'environnement Android
TP
12 Pour développer un projet
P R O G R A M M A T I O N M O B I L E - I N T R O D U C T I O N À A N D R O I D | 5
PRÉSENTATION DU COURS
I
ÉVALUATIONS
Évaluation théorique Évaluation pratique
Aléatoirement au début Mise en pratique des
des séances de TD/TP. connaissances acquises
sous la forme d'un projet.
P R O G R A M M A T I O N M O B I L E - I N T R O D U C T I O N À A N D R O I D | 6
II ANDROID
P R O G R A M M A T I O N M O B I L E - I N T R O D U C T I O N À A N D R O I D | 7
ANDROID
II
PILE ANDROID
Ensemble de logiciels indispensables
au fonctionnement d'Android : Luncher,
Téléphone, Messagerie, Navigateur, Logiciels
Contacts, Paramètres...
Ensemble de bibliothèques et de
ANDROID SDK services nécessaires au développement
Machine virtuelle en charge de des applications Android
l'exécution des applications Android.
Utilise la compilation Ahead of Time Android Runtime (ART)
(AOT) pour convertir le bytecode en
code machine dès l'installation.
Couche d'abstraction servant d'interface
Hardware Abstraction Layer (HAL) entre le noyau Linux et le matériel.
Android repose sur un Noyau Linux
légèrement modifié pour les
environnements mobiles (économie Noyau Linux adapté à l'embarqué
d'énergie, gestion de la mémoire, sécurité, ...).
P R O G R A M M A T I O N M O B I L E - I N T R O D U C T I O N À A N D R O I D | 8
ANDROID
II
OPEN SOURCE ET GRATUIT ?
OPEN SOURCE
Le code source d'Android est disponible en Open Source. Chacun est donc libre de créer sa propre
version d'Android gratuitement à partir du projet AOSP (Android Open Source Project).
MAIS
Les Google Mobile Services (Play, Maps, GMail, Chrome, Google Drive, ...) sont des applications
propriétaires de Google et nécessitent une licence.
La licence GMS est "gratuite" mais nécessite une certification qui, elle, est payante.
P R O G R A M M A T I O N M O B I L E - I N T R O D U C T I O N À A N D R O I D | 9
ANDROID
II
AVEC QUELLE VERSION TRAVAILLER ?
TOUT DÉPEND DU PARC CIBLE
Disponible sur Google Play ?
Devra être fonctionnel sur un maximum de périphériques
Android.
Maîtrise du parc matériel ?
A définir avec le client en fonction des API requises.
P R O G R A M M A T I O N M O B I L E - I N T R O D U C T I O N À A N D R O I D | 10
III APPLICATIONS MOBILES
P R O G R A M M A T I O N M O B I L E - I N T R O D U C T I O N À A N D R O I D | 11
Applications mobiles
III
PLUSIEURS APPROCHES
NATIVE HYBRIDE PWA
P R O G R A M M A T I O N M O B I L E - I N T R O D U C T I O N À A N D R O I D | 12
Applications mobiles
III
APPLICATIONS NATIVES
Développées spécifiquement pour la plateforme cible (iOS ou Android)
Utilisent un langage de programmation pris en charge par la plateforme :
▪ Swift pour iOS
▪ Java ou Kotlin pour Android
Offrent les meilleures performances
Permettent un accès à toutes les fonctionnalités du périphérique (appareils
NATIVE photo, capteurs, contacts, ...)
Distribuées via la boutique d'applications de la plateforme cible
P R O G R A M M A T I O N M O B I L E - I N T R O D U C T I O N À A N D R O I D | 13
Applications mobiles
III
APPLICATIONS HYBRIDES
Développées sous la forme d'une application Web (HTML, CSS, JS) puis
encapsulée dans une application native intégrant juste un navigateur
configuré pour ne charger que l'application Web associée.
Offrent de moins bonnes performances qu'une application native.
L'accès aux fonctionnalités du périphérique (appareils photo, capteurs, ...)
est possible via des appels JavaScript au runtime de l'application native.
HYBRIDE
Distribuées via la boutique d'applications de la plateforme cible
P R O G R A M M A T I O N M O B I L E - I N T R O D U C T I O N À A N D R O I D | 14
Applications mobiles
III
PROGRESSIVE WEB APPLICATIONS (PWA)
Développées sous la forme d'une application Web (HTML, CSS, JS)
Utilisent un Service Worker pour mettre en cache les éléments nécessaires
à leur fonctionnement de manière déconnectée.
Offrent des performances intermédiaires entre celles des applications
natives et hybrides.
L'accès aux fonctionnalités du périphérique est limité et se fait via les API
Web disponibles.
PWA
Distribuées via le Web (pas d'installation nécessaire) ou via le store de la
plateforme (nécessité de créer une Trusted Web Activity).
P R O G R A M M A T I O N M O B I L E - I N T R O D U C T I O N À A N D R O I D | 15
Applications mobiles
III
FRAMEWORKS NATIFS MULTIPLATEFORMES
P R O G R A M M A T I O N M O B I L E - I N T R O D U C T I O N À A N D R O I D | 16
DÉVELOPPER UNE
IV APPLICATION NATIVE ANDROID
P R O G R A M M A T I O N M O B I L E - I N T R O D U C T I O N À A N D R O I D | 17
Développer une application native Android
IV
ENVIRONNEMENT DE DÉVELOPPEMENT
Nécessitent d'être configurés pour la Android Studio est prêt à l'emploi
prise en charge du SDK Android
P R O G R A M M A T I O N M O B I L E - I N T R O D U C T I O N À A N D R O I D | 18
Développer une application native Android
IV
LANGAGES DE PROGRAMMATION
Langage historique pour le développement
d'applications Android.
Officiellement pris en charge pour le développement
d'applications Android en 2017 et mis en avant à partir de 2019.
P R O G R A M M A T I O N M O B I L E - I N T R O D U C T I O N À A N D R O I D | 19
V LES ACTIVITÉS
P R O G R A M M A T I O N M O B I L E - I N T R O D U C T I O N À A N D R O I D | 20
Les activités
V
ACTIVITÉ (ACTIVITY)
UNE ACTIVITÉ
▪ représente une fonctionnalité ou un écran de l'application
▪ est responsable de l'interaction avec l'utilisateur pour
cette fonctionnalité
▪ est un élément fondamental de la navigation au sein de
l'application
P R O G R A M M A T I O N M O B I L E - I N T R O D U C T I O N À A N D R O I D | 21
Les activités
V
LAYOUT
Le layout est un document XML qui décrit la structure
d'une interface utilisateur :
▪ Les composants présents (champ texte, image, bouton, ...)
▪ L'aspect des composants (taille, couleur, bordure, ...)
▪ La position des composants (relative, absolue, ...)
Android Studio fournit un éditeur graphique permettant d'éditer
un layout sans avoir à manipuler le XML directement.
Une activité est généralement associée à un layout, mais ce
n'est pas toujours le cas (ex : tâche de fond).
P R O G R A M M A T I O N M O B I L E - I N T R O D U C T I O N À A N D R O I D | 22
Les activités
V
PILE D'ACTIVITÉS (BACK STACK)
La navigation au sein d'une application, mais également entre les applications, se fait par
empilement / dépilement des activités.
Le passage d'une activité à une autre se fait via :
▪ un Intent qui démarre une nouvelle activité
▪ le retour en arrière (back) qui réactive l'activité précédente
P R O G R A M M A T I O N M O B I L E - I N T R O D U C T I O N À A N D R O I D | 23
Les activités
V
PILE D'ACTIVITÉS - EXEMPLE
1. L'utilisateur démarre pour la première fois l'application "Zombie Total War 3000 Full Extermination X And Again"
Un écran de connexion demande ses identifiants à l'utilisateur
PILE ACTIVITÉ 1
écran de
D'ACTIVITÉS connexion
P R O G R A M M A T I O N M O B I L E - I N T R O D U C T I O N À A N D R O I D | 24
Les activités
V
PILE D'ACTIVITÉS - EXEMPLE
2. Comme l'utilisateur n'a jamais joué à ce jeu, il clique sur le bouton "Créer un compte"
Un écran de création de compte apparaît
PILE ACTIVITÉ 1 ACTIVITÉ 2
écran de écran de création
D'ACTIVITÉS connexion de compte
P R O G R A M M A T I O N M O B I L E - I N T R O D U C T I O N À A N D R O I D | 25
Les activités
V
PILE D'ACTIVITÉS - EXEMPLE
3. L'utilisateur reçoit un appel pendant qu'il saisit ses informations
L'activité de l'application Téléphone est chargée sur la pile et masque l'écran de saisie du jeu
PILE ACTIVITÉ 1 ACTIVITÉ 2 ACTIVITÉ 3
écran de écran de création appel
D'ACTIVITÉS connexion de compte téléphonique
P R O G R A M M A T I O N M O B I L E - I N T R O D U C T I O N À A N D R O I D | 26
Les activités
V
PILE D'ACTIVITÉS - EXEMPLE
4. L'utilisateur termine son appel
L'activité de l'application Téléphone est fermée et dépilée. L'écran de saisie des informations du jeu est de nouveau
visible
PILE ACTIVITÉ 1 ACTIVITÉ 2
écran de écran de création
D'ACTIVITÉS connexion de compte
P R O G R A M M A T I O N M O B I L E - I N T R O D U C T I O N À A N D R O I D | 27
Les activités
V
PILE D'ACTIVITÉS - EXEMPLE
4. L'utilisateur a terminé la création de son compte
L'écran de saisie des informations du jeu est fermé et l'activité associée est dépilée. L'écran de login apparaît à
nouveau
PILE ACTIVITÉ 1
écran de
D'ACTIVITÉS connexion
P R O G R A M M A T I O N M O B I L E - I N T R O D U C T I O N À A N D R O I D | 28
Les activités
V
CYCLE DE VIE
DÉMARRAGE DE L'ACTIVITÉ
onCreate()
L'utilisateur navigue vers onStart() onRestart()
l'activité
onResume()
PROCESSUS TUÉ EXÉCUTION DE L'ACTIVITÉ
L'utilisateur retourne
sur l'activité
Une autre activité est passée au
premier plan
Le système à besoin de libérer de
la mémoire onPause()
L'utilisateur navigue
vers l'activité
L'activité n'est plus visible
onStop()
L'activité est terminée ou détruite par le
système
onDestroy()
ARRÊT DE L'ACTIVITÉ
P R O G R A M M A T I O N M O B I L E - I N T R O D U C T I O N À A N D R O I D | 29
Les activités
V
ACTIVITÉ ET LAYOUT
[Link] activity_main.xml
P R O G R A M M A T I O N M O B I L E - I N T R O D U C T I O N À A N D R O I D | 30
VI LES INTENTIONS
P R O G R A M M A T I O N M O B I L E - I N T R O D U C T I O N À A N D R O I D | 31
Les intentions
VI
L'APPLICATION, UN ENSEMBLE D'ACTIVITÉS
Comment passer d'une activité à
une autre ?
▪ Le bouton BACK qui permet de
revenir à l'activité précédente sur
la pile d'activités
▪ Les intentions (Intent) qui
permettent de démarrer de
nouvelles activités internes ou
externes à l'application (exemple :
la galerie photo)
P R O G R A M M A T I O N M O B I L E - I N T R O D U C T I O N À A N D R O I D | 32
Les intentions
VI
INTENT EXPLICITE
Lorsque l'on passe d'une activité à une autre au sein de la même application, le développeur est en
territoire connu. Il sait exactement quelle activité charger sur la pile d'activités.
La classe de l'activité à démarrer sera explicitement indiquée dans les paramètres de l'Intent :
//Création de l'Intent explicite
val intentToNextActivity = Intent(
[Link], //Contexte de départ
TargetActivity::[Link] //Activité cible indiquée explicitement
);
// Démarrage de la nouvelle activité
startActivity(intentToNextActivity);
La classe de l'activité cible doit faire partie du même package que l'activité source.
P R O G R A M M A T I O N M O B I L E - I N T R O D U C T I O N À A N D R O I D | 33
Les intentions
VI
INTENT IMPLICITE
Mais il existe d'autres cas dans lesquels le développeur ne sait pas quelle activité doit être démarrée.
Par exemple, si on souhaite que l'utilisateur charge une photo pour son profil, on ne sait pas s'il
préfère utiliser l'application Galerie ou Photo ou Pinterest ou encore prendre un selfie avec Camera.
Dans ce cas, on indique au système Android la nature de ce que l'on souhaite faire et lui déterminera,
en fonction des applications installées et des choix de l'utilisateur, l'activité à démarrer.
//Création de l'Intent implicite permettant de choisir quelque chose
val intentToPickPicture = Intent(Intent.Action_PICK)
//Précise que l'on souhaite choisir une image
[Link] = "image/*"
//Démarrage de la nouvelle activité avec attente de l'image sélectionnée
startActivityForResult(intentToPickPicture, "Identifiant_Resultat");
P R O G R A M M A T I O N M O B I L E - I N T R O D U C T I O N À A N D R O I D | 34
Les intentions
VI
TRANSMETTRE DES INFORMATIONS
Les Intents permettent de transmettre des informations entre les activités :
activité source activité cible
//Création de l'Intent //Récupération de la valeur de la donnée
val intent = Intent(...); //data_name
val dataValue = [Link]("data_name");
//Transmission de data_value sous
//le nom data_name
[Link]("data_name", "data_value");
// Démarrage de la nouvelle activité
startActivity(intent);
P R O G R A M M A T I O N M O B I L E - I N T R O D U C T I O N À A N D R O I D | 35
VII TOUT LE RESTE
P R O G R A M M A T I O N M O B I L E - I N T R O D U C T I O N À A N D R O I D | 36
Tout le reste
VII
PLEIN DE CHOSES À DÉCOUVRIR
Si le développement mobile vous intéresse, il vous restera bien des choses à découvrir et à
approfondir à l'issue de ce module :
▪ Les quantificateurs
▪ Les fragments
▪ Les ViewModel
▪ ...
P R O G R A M M A T I O N M O B I L E - I N T R O D U C T I O N À A N D R O I D | 37
Tout le reste
VII
POUR LA PROCHAINE SÉANCE
▪ Venez avec un téléphone Android si vous en possédez un, et un câble permettant le
transfert de données.
▪ Venez avec votre ordinateur portable si vous en possédez un.
▪ Préinstallez Android Studio.
P R O G R A M M A T I O N M O B I L E - I N T R O D U C T I O N À A N D R O I D | 38