PLAN Environnement de Développement
• 1. Introduction programmation mobile (Android) On peut développer sur Android sous Linux, Windows et MacOS avec :
Eclipse + un plugin;
• 2. Environnement de Développement Android-Studio.
• 3. Cycle de Vie d’une Activité Ces deux solutions utilisent le SDK d’Android qui contient :
Les librairies Java d’Android ;
• 4. Interfaces graphiques Des outils de développement ;
un émulateur pour tester vos applications ;
• 5. Les Intents
des images du système Android...
• 6. Persistance des données Il n’est pas nécessaire de télécharger le SDK séparément si on va utiliser
Android Studio.
• 7. Capteurs sous Android
• 8. Programmation Concurrente
2025/2026 Programmation Mobile-Android- -- FSM - LGLSI3 -- Enseignant : Soufien GDAIM 41 2025/2026 Programmation Mobile-Android- -- FSM - LGLSI3 -- Enseignant : Soufien GDAIM 42
Environnement de Développement 1/2 (Obsolete ) Environnement de Développement 2/2
Android SDK
SDK Tools
IDE Eclipse Android Studio Application
Application Android
Android
Android ADT
2025/2026 Programmation Mobile-Android- -- FSM - LGLSI3 -- Enseignant : Soufien GDAIM 43 2025/2026 Programmation Mobile-Android- -- FSM - LGLSI3 -- Enseignant : Soufien GDAIM 44
Environnement de Développement : Android Studio Environnement de Développement : Android Studio
Depuis mi-2015, il est recommandé d’utiliser Android Studio (l'intégration de
fonctionnalités de développement Android).
Avantages:
Meilleure intégration du SDK dans Android Studio
Puissance de l'IDE IntelliJ
Meilleure gestion des dépendances avec gradle
Pour installer Android Studio :
Télécharger le logiciel via le site d’Android ;
Extraire l’archive dans un répertoire ;
(Linux) Exécuter le fichier [Link] du répertoire bin / (windows) Lancer le fichier
exécutable exe ;
À son premier démarrage, Android Studio :
Télécharge le sdk ;
Va vous proposer de configurer une machine virtuelle.
2025/2026 Programmation Mobile-Android- -- FSM - LGLSI3 -- Enseignant : Soufien GDAIM 45 2025/2026 Programmation Mobile-Android- -- FSM - LGLSI3 -- Enseignant : Soufien GDAIM 46
Environnement de Développement : Android SDK Environnement de Développement : AVD Manager
Vous pouvez exécuter Android SDK Manager, en lançant l’exécutable android qui se trouve dans le Pour tester un programme sur votre ordinateur, il sera également nécessaire de créer une
répertoire tools du SDK : machine virtuelle à l’aide de l’AVD Manager :
2025/2026 Programmation Mobile-Android- -- FSM - LGLSI3 -- Enseignant : Soufien GDAIM 47 2025/2026 Programmation Mobile-Android- -- FSM - LGLSI3 -- Enseignant : Soufien GDAIM 48
Environnement de Développement : Emulateur Environnement de Développement : SmartPhone
L’émulateur vous permet de tester votre application :
Votre SmartPhone vous permet de tester votre application (en activant l’options de développement) :
Les ROMs Intel permettent de bénéficier de l’accélération matérielle.
2025/2026 Programmation Mobile-Android- -- FSM - LGLSI3 -- Enseignant : Soufien GDAIM 49 2025/2026 Programmation Mobile-Android- -- FSM - LGLSI3 -- Enseignant : Soufien GDAIM 50
Environnement de Développement : Nouveau Projet Environnement de Développement : Nouveau Projet
2025/2026 Programmation Mobile-Android- -- FSM - LGLSI3 -- Enseignant : Soufien GDAIM 51 2025/2026 Programmation Mobile-Android- -- FSM - LGLSI3 -- Enseignant : Soufien GDAIM 52
Environnement de Développement : Architecture d’un projet Environnement de Développement : [Link]
Fichier de contrôle de l’application,
décrivant sa nature, ses composants et [Link] est le fichier de configuration XML de l’application.
les permissions associées Code source Java des
applications Il ne doit pas être renommer, ni déplacer
C’est un fichier indispensable à chaque application qui décrit entre autres :
Ressources utilisées par l’application
le point d’entrée de votre application (quel code doit être exécuté au démarrage de
Images (PNG, JPEG ou GIF) et l’application) ;
fichiers XML décrivant les formes
Fichiers XML représentant l’interface Le nom de l’application, son icone, son package (l’identifiant unique sur le Play
d’une page ou d’une partie de page de Store)
votre application
Définit les composants qui constituent ce programme ;
les permissions nécessaires à l’exécution du programme :
Dossier contenant les fichiers
Des fichiers de configuration: décrivant des valeurs utilisées Les permissions matérielles (accès à l’appareil photo, GPS, ...).
- [Link] (2 instances): règles de dans l’application. Ex : [Link] Les permissions d’interactions entre les applications (accès à Internet, répertoire
dépendance et de compilation pour les chaînes, [Link] pour
- [Link]: liste de toutes les les tableaux…
téléphoniques, galerie des photos…)
applications à compiler (si plusieurs)
2025/2026 Programmation Mobile-Android- -- FSM - LGLSI3 -- Enseignant : Soufien GDAIM 53 2025/2026 Programmation Mobile-Android- -- FSM - LGLSI3 -- Enseignant : Soufien GDAIM 54
Environnement de Développement : [Link] Environnement de Développement : [Link]
Le fichier [Link] déclare lʹensemble des éléments de lʹapplication.
<application> : un seul et unique noeud application <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android=[Link] package="[Link]">
<uses-permission> : l’utilisateur se verra demander l’autorisation d’utiliser l’ensemble
<uses-permission android:name="[Link]"></uses-permission>
des fonctions liées à ces permissions <uses-sdk android:minSdkVersion="15"></uses-sdk>
<activity> : Déclare une activité présentée à l’utilisateur <application
<service> : Déclare un composant de l’application en tant que service. android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
<receiver> : Déclare un récepteur d’objets Intent. Cet élément permet à l’application de android:label="@string/app_name"
recevoir ces objets alors qu’ils sont diffusés par d’autres applications ou par le android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
système. android:theme="@style/AppTheme">
<provider> : Déclare un fournisseur de contenu qui permettra d’accéder aux données <activity android:name=".SecondActivity" android:exported="false" />
gérées par l’application.
<activity android:name=".MainActivity" android:exported="true">
<intent-filter>
<action android:name="[Link]" />
<category android:name="[Link]" />
</intent-filter>
</activity>
</application>
</manifest>
2025/2026 Programmation Mobile-Android- -- FSM - LGLSI3 -- Enseignant : Soufien GDAIM 55 2025/2026 Programmation Mobile-Android- -- FSM - LGLSI3 -- Enseignant : Soufien GDAIM 56
Environnement de Développement : [Link] Environnement de Développement : [Link]
import [Link];
import [Link];
import [Link];
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
[Link](savedInstanceState);
setContentView([Link].activity_main);
[Link](this, "application crée", Toast.LENGTH_SHORT).show();
}
2025/2026 Programmation Mobile-Android- -- FSM - LGLSI3 -- Enseignant : Soufien GDAIM 57 2025/2026 Programmation Mobile-Android- -- FSM - LGLSI3 -- Enseignant : Soufien GDAIM 58
Environnement de Développement : [Link] Environnement de Développement : Exemple d’application
<?xml version="1.0" encoding="utf‐8"?>
<LinearLayout xmlns:android="[Link]
xmlns:app="[Link]
xmlns:tools="[Link]
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center"
tools:context=".MainActivity">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:textSize="20sp"
android:textColor="#ff0000"
android:text="Hello ISIMa!"/>
</LinearLayout>
2025/2026 Programmation Mobile-Android- -- FSM - LGLSI3 -- Enseignant : Soufien GDAIM 59 2025/2026 Programmation Mobile-Android- -- FSM - LGLSI3 -- Enseignant : Soufien GDAIM 60
Architecture d'une application Android Développement d’une application
Application
Activités
Vues qui composent l’activité :
(image view, TextView, EditText,
videoView, etc
Fichier de configuration (manifeste)
Détient la composition de l’application
(activités, permissions, mécanismes liés aux intentions)
2025/2026 Programmation Mobile-Android- -- FSM - LGLSI3 -- Enseignant : Soufien GDAIM 61 2025/2026 Programmation Mobile-Android- -- FSM - LGLSI3 -- Enseignant : Soufien GDAIM 62
PLAN Présentation d’une Activité
• 1. Introduction programmation mobile (Android) Une activité est un composant d’une application qui fournit un écran avec lequel
l’utilisateur peut interagir.
• 2. Environnement de Développement Une application contient plusieurs activités
Une activité = Contexte + une Interface graphique
• 3. Cycle de Vie d’une Activité
• 4. Interfaces graphiques Question : que se passe-t-il si on reçoit un SMS alors que l’utilisateur manipule
l’application mobile?
• 5. Les Intents L’activité de l’application mobile passe d’un état à un autre.
• 6. Persistance des données
• 7. Capteurs sous Android
C’est le Cycle de Vie d’une Activité
• 8. Programmation Concurrente
2025/2026 Programmation Mobile-Android- -- FSM - LGLSI3 -- Enseignant : Soufien GDAIM 63 2025/2026 Programmation Mobile-Android- -- FSM - LGLSI3 -- Enseignant : Soufien GDAIM 64
Cycle de Vie d’une Activité Cycle de Vie d’une Activité
Les activités d’une application ont un cycle de vie Les activités dans une application sont gérées sous forme de Pile
Un début quand Android les instancie pour répondre aux Intents Quand une nouvelle activité démarre, elle est placée en haut de la pile et devient
Une fin quand les instances sont détruites l’activité en exécution
Entre les deux, où ils peuvent être: L’ activité précédente reste en dessous dans la pile,
Visibles ou invisibles L’ activité précédente ne revient au premier plan que si la nouvelle activité est
Actifs ou inactifs fermée
Si l’utilisateur clique sur le bouton Retour du téléphone l’activité suivante
dans la pile (l’ activité précédente ) devient active
Vie d’une Application :
Début Actif/Inactif Fin
Visible/Invisible
2025/2026 Programmation Mobile-Android- -- FSM - LGLSI3 -- Enseignant : Soufien GDAIM 65 2025/2026 Programmation Mobile-Android- -- FSM - LGLSI3 -- Enseignant : Soufien GDAIM 66
Cycle de Vie d’une Activité Cycle de Vie d’une Activité
Nouvelle Activité Activité en Exécution
Active ou en Exécution
Elle est au premier plan de l’écran (donc en haut de la pile)
Nouvelle Activité Appui sur le bouton
Retour ou activité fermée C’est l’activité ciblée par les actions de l’utilisateur
démarrée
En Pause
Dernière Activité Exécutée A perdu le focus, mais est encore partiellement visible
Une autre activité est en haut de la pile, mais elle est soit transparente, soit ne
Activité n-1 couvre pas tout l’écran
Activité n-2 Arrêtée
Complètement recouverte par une autre activité
…….. Ses informations sont encore chargées, mais elle n’est plus visible
Supprimer pour Peut être détruite par le système s’il est besoin de mémoire
Activité 2 libérer des ressources
Activité 1
2025/2026 Programmation Mobile-Android- -- FSM - LGLSI3 -- Enseignant : Soufien GDAIM 67 2025/2026 Programmation Mobile-Android- -- FSM - LGLSI3 -- Enseignant : Soufien GDAIM 68
Cycle de Vie d’une Activité Cycle de Vie d’une Activité
Quand une activité passe d’un état à un autre, le framework Android appelle les
méthodes de transition correspondantes :
void onCreate (Bundle savedInstanceState) : obligatoire
void onStart ()
void onResume ()
void onRestart ()
void onPause () : recommandée
void onStop ()
void onDestroy ()
Quand l’utilisateur reçoit un appel téléphonique, l’activité courante passe dans l’état
OnPause ensuite, Stopped, lorsque l’appel téléphonique est terminé, cette activité
revient dans Started puis Resumed.
2025/2026 Programmation Mobile-Android- -- FSM - LGLSI3 -- Enseignant : Soufien GDAIM 69 2025/2026 Programmation Mobile-Android- -- FSM - LGLSI3 -- Enseignant : Soufien GDAIM 70
Cycle de Vie d’une Activité Cycle de Vie d’une Activité
onCreate
Appelée à la création d’une activité
Initialisation de tous les éléments
onResume
Un bundle est passé à cette méthode, contenant l’état
Appelée juste avant que l’activité ne commence a
précédent de l’activité
interagir avec l’utilisateur
Toujours suivie de onStart
A ce point, l’activité est en haut de la pile
L'instruction setContentView ( [Link].activity_main );
Toujours suivie de onPause
permet d'affecter l'interface graphique à l'activité qui
est décrite dans le fichier activity_main.xml.
onStart
Appelée juste avant que l’activité ne devienne visible
Suivie de
onResume si l’activité revient en premier plan
2025/2026 Programmation Mobile-Android- -- FSM - LGLSI3 -- Enseignant : Soufien GDAIM 71 2025/2026 Programmation Mobile-Android- -- FSM - LGLSI3 -- Enseignant : Soufien GDAIM 72
Cycle de Vie d’une Activité Cycle de Vie d’une Activité
onPause
Appelée quand le système va démarrer une autre
Activity running activité
L’application est en exécution Utilisée typiquement pour :
L’utilisateur est actuellement en interaction avec Enregistrer les données non sauvegardées
l’application Arrêtées les animations ou tout ce qui
Lorsqu’un évènement externe arrive l’activité consomme de la mémoire...
bascule vers l’état onPause Ne doit pas consommer beaucoup de temps, car
l’activité suivante ne va démarrer que si cette
méthode prend fin,
Suivie de :
onResume si l’activité est rechargée en premier
plan
onStop si l’activité devient invisible. Dans cet
état, l’activité peut être détruite par le système
2025/2026 Programmation Mobile-Android- -- FSM - LGLSI3 -- Enseignant : Soufien GDAIM 73 2025/2026 Programmation Mobile-Android- -- FSM - LGLSI3 -- Enseignant : Soufien GDAIM 74
Cycle de Vie d’une Activité Cycle de Vie d’une Activité
onRestart
onStop Appelée quand l’activité va redémarrer après avoir été
Appelée quand l’activité n’est plus visible à
stoppée
l’utilisateur Toujours suivie de onStart
Peut arriver si:
onDestroy
L’activité est détruite
Appelée quand l’activité est détruite
Une autre activité a repris son exécution et l’a
Dernier appel que l’activité va recevoir
recouverte
Peut intervenir si:
Suivie par:
onRestart si l’activité recommence à interagir avec L’ activité se termine (appel de finish)
l’utilisateur Le système détruit temporairement cette instance
onDestroy si l’activité va disparaître de l’activité pour gagner de l’espace
Dans cet état, l’activité peut être détruite par le On peut distinguer entre ces deux scénarios avec la
système méthode isFinishing()
Dans cet état, l’activité peut être détruite par le
système
2025/2026 Programmation Mobile-Android- -- FSM - LGLSI3 -- Enseignant : Soufien GDAIM 75 2025/2026 Programmation Mobile-Android- -- FSM - LGLSI3 -- Enseignant : Soufien GDAIM 76
Cycle de Vie d’une Activité : Sauvegarde et Restauration du Contexte
Il faudra personnaliser ces deux méthodes pour sauvegarder et restaurer les données.
@Override
protected void onSaveInstanceState(Bundle outState) {
[Link](outState);
}
@Override
protected void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {
[Link](savedInstanceState);
}
2025/2026 Programmation Mobile-Android- -- FSM - LGLSI3 -- Enseignant : Soufien GDAIM 77