Développement des applications mobiles sous Android - M. YOUNES ET TAZARINI

 
CONTINUER À LIRE
Développement des applications mobiles sous Android - M. YOUNES ET TAZARINI
Développement des applications
mobiles sous Android
                        M. YOUNES ET TAZARINI
Développement des applications mobiles sous Android - M. YOUNES ET TAZARINI
Avant propos
SITUATION DU DÉVELOPPEMENT MOBILE
Développement des applications mobiles sous Android - M. YOUNES ET TAZARINI
Les appareils devient de plus en plus
intelligents
Développement des applications mobiles sous Android - M. YOUNES ET TAZARINI
Les appareils Android se multiplient
Développement des applications mobiles sous Android - M. YOUNES ET TAZARINI
PRÉSENTATION DE LA
PLATEFORME
ANDROID
Développement des applications mobiles sous Android - M. YOUNES ET TAZARINI
Historique
OS conçu pour les smartphones .
Société Android créée en 2003.
Rachetée par Google 2005.
Android 1.0 : 2008
de nombreuses versions depuis, on en est la 8, Oreo (octobre 2017).
Développement des applications mobiles sous Android - M. YOUNES ET TAZARINI
Android et ses concurrents.
Développement des applications mobiles sous Android - M. YOUNES ET TAZARINI
Open Handset Alliance (OHA)
En 2007, peu de temps après le premier IPhone, Google,
inquiet de la dominance de Apple fonde l'Open Handset
Alliance avec de grands constructeurs et fabricants de
smartphones et dans les semi-conducteurs ainsi que
quelques grands noms des télécoms pour développer
Android.
Open Handset Alliance (OHA)
Historique des versions
Nom                  Version     Date
Android                1.0     09/2008
Petit Four             1.1     02/2009
Cupcake                1.5     04/2009
Donut                  1.6     09/2009
Gingerbread            2.3     12/2010
Honeycomb              3.0     02/2011
Ice Cream Sandwich    4.0.1    10/2011
Jelly Bean             4.1     07/2012
KitKat                 4.4     10/2013
Lollipop               5.0     10/2014
Marshmallow            6.0     05/2015
Nougat                 7.0     09/2016
Oreo                   8.0     08/2017
Google Play
Android Market est « né » le 22 octobre 2008
Chaque nouveau développeur paie 25$ de dossier (une seule fois)
Chaque développeur est rémunéré 70% contre 30% qui rétribuent
 Google
ENVIRONNEMENT DE
DÉVELOPPEMENT
SOUS ANDROID
Outils du développeur
Android SDK.
API.
Émulateurs (AVD : Android Virtual Device).
SQL Lite.
IDE
Android Studio
 ◦Solution de Google annoncée au Google IO 2013
Eclipse + plugin ADT
Netbeans
Émulateur : limitations
Lent au démarrage et à l'usage
Fonctionnalités non-disponibles
 ◦ Appareil photo
 ◦ Vibreur
 ◦ Appels téléphoniques réels
 ◦ Capteurs en général
 ◦ Connexions USB
 ◦ Évolution de la charge de la batterie
Périphérique physique
Se passer de l'émulateur
 ◦ Utilisez votre appareil personnel.
Activation du mode debug du périphérique
 ◦ Tapotez 7 fois de suite sur « A propos » pour faire apparaître le menu caché
   développeur.
 ◦ Activez le mode débogage USB.
Sous Windows il est nécessaire d’installer le driver de votre
 périphérique.
Environnement contraint
Pour vos développements, gardez à l'esprit que les périphériques
mobiles ont souvent :
 ◦ Une puissance processeur plus faible.
 ◦ Une RAM limitée.
 ◦ Des capacités de stockage permanent limitées.
 ◦ De petits écrans avec de faibles résolutions.
 ◦ Des connexions réseau moins fiables.
 ◦ Des batteries à autonomie limitée.
Rétrocompatibilité
Chaque version de l'API apporte son lot de nouveautés qu'il est conseillé
d'exploiter :
 ◦ Réécriture de méthodes Java existantes.
 ◦ Ajout de nouvelles classes d'objets Java.

Un décalage entre l'API utilisée pour compiler et celle des périphériques cibles
peut survenir :
 ◦ compileSdkVersion > targetSdkVersion

Les implémentations manquantes sont incluses dans l'APK sous forme d'une
librairie :
 ◦ La « Support Library »
Compilation et déploiement
Construction d'une
application Android
HELLO WORLD APP
Prérequis
De bonnes connaissances en Java :
 ◦ Héritage,
 ◦ Polymorphisme (Surcharge et redéfinition)
 ◦ Interfaces,
 ◦ Casting
 ◦ Exceptions
Objectifs
Créer une application simple qui affiche le message « Hello world ».
Créer et lancer un émulateur (AVD).
Tester l’application sur un émulateur.
Tester l’application sur un appareil physique.
Arborescence

    Android Manifest
                       Code JAVA de l’activité
    Code source JAVA

     Ressources de      Layout de l’activité
      l’application

       Les images

                         Valeurs statiques
Le manifeste
Chaque projet contient à sa racine un fichier AndroidManifest.xml qui :
 ◦ Nomme le paquetage Java de l'application. Ce dernier sert d'identificateur
   unique de l'application.
 ◦ Déclare les composants applicatifs (activities, services, etc).
 ◦ Déclare les permissions que l'application doit avoir pour fonctionner (droit de
   passer des appels, droit d'accéder à Internet, droit d'accéder au GPS...)
 ◦ Déclare le niveau minimum de compatibilité du SDK pour que l'application
   fonctionne
 ◦…
Android Manifest
 API level

Permissions

                      Main Activity

  Activité
Activité
Une activité = un écran graphique.
Une application est formée de plusieurs activités.
Exemple : application de téléphonie
   1. Numéroteur;
   2. Annuaire des contacts;
   3. Fiche d'un contact;
   4. Ajout d'un contact.
Hello ISMAG : Code Source d’activité

                                   Hérite de la classe
                                  AppCompactActivity

                                   Enregistre l’état de
                                        l’Activity

                                    Layout à utiliser
Le Layout
Demo
FIRST APP : HELLOWORLD
Cycle de vie d'une activité
7 méthodes de callback
    1.   void onCreate(...)
    2.   void onStart()
    3.   void onResume()
    4.   void onPause()
    5.   void onStop()
    6.   void onDestroy()
    7.   void onRestart()
Activité : code source
Demo
SECONDE APP - ACTIVITYLIFECYCLE
Les intents
Transition entre les activités
 La transition entre deux écrans correspond au lancement d’une Activité ou au retour sur une
 Activité placée en arrière-plan
Applications Android
 Une application démarre sous le contrôle du système Android :
 Le système commence par créer un processus dans lequel s’exécutera l’application
 Le système charge dans le nouveau processus les classes (.dex) correspondant à l’application
 Le UIThread représente l’ActivityManager dans l’environnement d’exécution de l’application
 Il gère le cycle de vie des composants applicatifs et traite les événements système qu’il reçoit (y
 compris les interactions utilisateurs)
    ◦ ➡Au cœur de ce mécanisme : les Intents
Android Intent
 Objet de la classe android.content.Intent définissant des messages échangés
 avec le système Android (des intentions).
 Représente un message utilisé pour interagir avec le système Android pour :
  ◦ demander l’activation d’une activité
  ◦ demander l’exécution d’une activité qui devra produire un résultat
  ◦ demander le lancement d’un service en mode “started”
  ◦ envoyer un message à destination de BroadcastListeners
 Il permet aussi la communication entre les applications.
Les types d’Intents
On décompose les Intents en 2 grands types :
 ◦ Les Intents explicites : qui spécifient exactement la classe du
   composant applicatif cible
 ◦ Les Intents implicites : qui ne spécifient pas la classe du composant
   cible, mais décrivent une cible par une action à réaliser, une
   catégorie, des données à manipuler… C’est le système Android qui
   choisit le composant applicatif approprié (éventuellement avec le
   concours de l’utilisateur)
Intent implicit (1/3)
Il ne définit pas une cible précise. Il lance un appel et le système
 cherche les applications qui peuvent répondre à cet appel. Je veux
 faire un appel téléphonique, le système va chercher une application
 qui me permet de le faire.
Intent intent = new Intent (action, data);
startActivity (intent);
Intent implicit (2/3)
 Action : l’action que le destinataire doit réaliser. On peut utiliser une des actions
 fournies par le système, « ACTION_DIAL » pour afficher un composeur de
 numéros téléphoniques, « ACTION_VIEW » pour afficher une page web ou un
 contact, etc. Il est possible aussi d’en définir de nouvelles actions propres
 à l’activité.
 Data : les données sur lesquelles le traitement va avoir lieu, exprimées en
 « URI ». Il faudra donc utiliser « tel:1234 » pour téléphoner,
 «https://www.ismag.ma » pour afficher une page dans un navigateur, etc.
Intent implicit (3/3)
Il existe de nombreuses actions standard :
 ◦ ACTION_MAIN : démarrage point d'entré principal.
 ◦ ACTION_VIEW : traitement sur données à afficher.
 ◦ ACTION_DIAL : clavier téléphonique avec numéro pré saisi.
 ◦ ACTION_CALL : effectue un appel téléphonique.
 ◦ ACTION_ANSWER : décrocher sur un appel entrant.
Exemple
Intent explicite (1/5)
Démarrage d’une nouvelle Activity sans envoi de données:
 ◦ Le constructeur est Intent intent = new Intent(Context,Class) ; pour un Intent
   explicite
 ◦ Le context est transmis par l’Activity courante.
 ◦ Le paramètre Class est le nom qualifié de l’Activity que l’on souhaite
   démarrer: package.TargetActivity (sauf si l’Activity appartient au même
   package)
Exemple
Intent explicite (2/5)
Démarrage avec envoi de données
 ◦ On peut compléter l’Intent en lui ajoutant des données.
 ◦ C’est réalisé avec la méthode putExtra().
 ◦ Les données sont ajoutées selon le format habituel : un couple
   (clef, valeur).
 ◦ De préférence déclarez les clefs comme des public final static
   String.
Intent explicite (3/5)
Côté Activity démarrée
 ◦ Quand des données accompagnent l’Intent, dans la méthode
   onCreate() il faut récupérer l’Intent avec la méthode getIntent()
 ◦ Pour récupérer les données, il est nécessaire d’avoir la clef :
   ◦ getStringExtra(clef)
Exemple (1/2)
Exemple (2/2)
Intent explicite (4/5)
 Démarrage d’une activité qui doit retourner un résultat :
 Si on veut un résultat en retour de la nouvelle activity on utilisera la méthode :
  ◦ void startActivityForResult(Intent intent, int requestCode)
 requestCode un code passé qui permet d'identifier de manière unique un
 intent.
 Quand l'activité appelée s'arrêtera, la première méthode de callback appelée
 dans l'activité précédente sera :
  ◦ void onActivityResult(int requestCode, int resultCode, Intent data)
Intent explicite (5/5)
 On retrouve requestCode, qui sera le même code que celui passé dans le
 startActivityForResult et qui permet de repérer quel intent a provoqué l'appel de
 l'activité dont le cycle vient de s'interrompre.
 resultCode est quant à lui un code renvoyé par l'activité qui indique comment
 elle s'est terminée
  ◦ Activity.RESULT_OK si l'activité s'est terminée normalement,
  ◦ Activity.RESULT_CANCELED s'il y a eu un problème ou qu'aucun code de
    retour n'a été précisé).
Exemple (1/2)
Exemple (2/2)
Demo
Vous pouvez aussi lire