programmation android - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services,...
TRANSCRIPT
![Page 1: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/1.jpg)
PROGRAMMATION ANDROID
Ahcène Bounceur
Université de Bretagne Occidentale
1
![Page 2: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/2.jpg)
Création d'applications et les Activités2
Chapitre 2
![Page 3: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/3.jpg)
Ce chapitre vous présentera les différents composants d'une application Android et leurs
interactions.
3
![Page 4: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/4.jpg)
APPLICATION ANDROID
¢ Une application Android est un assemblage de
composants liés grâce à un fichier de configuration.
� Les Activités à Classe Java
� Les Vues et contrôlesà Fichiers XML ou code Java
� Les Ressources à Interfaces (Layout), Images, Textes, audio, vidéo, …
� Le fichier de configurationà AndroidManifest.xml
4
![Page 5: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/5.jpg)
Application
Création d'applications Android (concepts)
Activité au premier plan
Vues qui composent l'activité
(ImageView, TextView, etc.)
Ressources
Traductions texte, couleurs, images,
vidéos, etc.Fichier de configuration
(manifest)
Détient la composition de l'application
(activités, permissions, mécanismes liés aux
intentions)5
![Page 6: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/6.jpg)
LES PIÈCES D'UNE APPLICATION ANDROID
6
Composants applicatifs
Eléments d’intéraction
¢ Une application Android est composée de plusieurs éléments qu'il faut assembler pour obtenir un tout cohérent. Plus une application est complexe, plus le nombre de pièces utilisées sera grand. Voici donc les différents pièces principales de l'Android :
� Activités� Services� Fournisseurs de contenu� Gadgets
� Objets Intent� Récepteurs d'Intents� Notifications� Filtres d’Intent
![Page 7: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/7.jpg)
COMPOSANTS APPLICATIFS
¢ Activité (android.app.Activity)� représente le bloc de base d'une application.
¢ Service (android.app.Service)� est un composant qui fonctionne en tâche de fond, de manière
invisible. Ses principales utilisations sont la mise à jour de sources de données ainsi que d'activités visibles et le déclenchement de notifications.
¢ Fournisseur de contenu (content provider) (android.content.ContentProvider)� permet de gérer et de partager des informations.
¢ Gadget (Android.appwidget.*)� est un composant graphique qui s'installe sur le bureau
Android. 7
![Page 8: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/8.jpg)
ELÉMENTS D'INTERACTION
¢ Intents (android.content.Intent)� il permet de diffuser des messages en demandant la réalisation
d'une action.¢ Récepteurs (android.content.BroadcastReceiver)
� il permet à une application d'être à l'écoute des autres afin de répondre aux objets Intent qui lui sont destinés et qui sont envoyés par d'autres composants applicatifs.
¢ Notifications (android.app.Notification)� une notification signale une information à l'utilisateur sans
interrompre ses actions en cours.
8
![Page 9: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/9.jpg)
ELÉMENTS D'INTERACTION
¢ Filtres (d'Intents) : un objet Intent peut mentionner explicitement un composant cible. Si cette information n'est pas renseignée, Android doit choisir le meilleur composant pour y répondre. Ceci est mené à bien via une comparaison de l'objet Intent avec les filtres des différentes applications cibles. Les filtres ne se manipulent généralement pas via l'API mais sont paramétrables grâce à la balise <intent-filter> du fichier de configuration.
9
![Page 10: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/10.jpg)
ACTIVITÉ
¢ Une activité peut être assimilée à un écran qu'une application propose à son utilisateur.
¢ Chaque écran d'une application correspond à une activité
¢ Une activité est composée de deux volets : � la logique de l'activité et la gestion du cycle de vie de
l'activité qui sont implémentés en Java dans une classe héritant de Activity,
� l'interface utilisateur, qui pourra être définie soit dans le code de l'activité soit de façon plus générale dans un fichier XML placé dans les ressources de l'application.
10
![Page 11: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/11.jpg)
ACTIVITÉ
11
Context
ContextWrapper
Service
ContextThemeWrapper
Activity
![Page 12: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/12.jpg)
ACTIVITÉ
12
import android.app.Activity;import android.os.Bundle;
public class ActiviteSimple extends Activity {@Overridepublic void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);
}}
![Page 13: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/13.jpg)
ACTIVITÉ
13
Context
ContextWrapper
Service
ContextThemeWrapper
Activity
SupportActivity
BaseFragmentActivityApi14
BaseFragmentActivityJB
FragmentActivity
AppCompatActivity
![Page 14: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/14.jpg)
ACTIVITÉ (AppCompatActivity)
14
import android.app.Activity;import android.os.Bundle;
public class ActiviteSimple extends AppCompatActivity {@Overridepublic void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);
}}
![Page 15: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/15.jpg)
ACTIVITÉ (Plein écran)
15
import android.app.Activity;import android.os.Bundle;
public class ActiviteSimple extends AppCompatActivity {@Overridepublic void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
}}
![Page 16: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/16.jpg)
import android.app.Activity;import android.os.Bundle;
public class ActiviteSimple extends AppCompatActivity {@Overridepublic void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);getSupportActionBar().hide();
}}
ACTIVITÉ (Sans barre d’action)
16
![Page 17: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/17.jpg)
import android.app.Activity;import android.os.Bundle;
public class ActiviteSimple extends AppCompatActivity {@Overridepublic void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);getSupportActionBar().hide();getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
}}
ACTIVITÉ (Plein écran et Sans barre d’action)
17
![Page 18: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/18.jpg)
CRÉER UNE ACTIVITÉ
¢ Méthode 1 :
18
![Page 19: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/19.jpg)
CRÉER UNE ACTIVITÉ
¢ Méthode 1 :
19
![Page 20: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/20.jpg)
CRÉER UNE ACTIVITÉ
¢ Méthode 2 :� Créer une classe Java classique� Cette classe doit hériter de la classe Activity� Ajouter la méthode onCreate(Bundle savedInstanceState) � Au début de cette méthode, appeler la méthode onCreate de
la classe mère� Ajouter l’interface graphique
20
public class MonActivite extends Activity {public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);
}}
![Page 21: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/21.jpg)
CRÉER UNE ACTIVITÉ
¢ Méthode 2 :� Une activité doit être déclarée dans le fichier de configuration : AndroidManifest.xml
� Un Intent-Filter doit être ajouté afin de pouvoir ajouter¢ Une Action (principale ou secondaire)¢ Une Catégorie (se lance automatiquement ou pas)
21
<activity android:name=".MainActivity"><intent-filter>
<action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" />
</intent-filter></activity>
<activity android:name=".Main2Activity"></activity>
![Page 22: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/22.jpg)
CRÉER UNE ACTIVITÉ
¢ Méthode 2 :� Une activité doit être déclarée dans le fichier de configuration : AndroidManifest.xml
� Un Intent-Filter doit être ajouté afin de pouvoir ajouter¢ Une Action (principale ou secondaire)¢ Une Catégorie (se lance automatiquement ou pas)
22
<activity android:name=".MainActivity"><intent-filter>
<action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" />
</intent-filter></activity>
<activity android:name=".Main2Activity"></activity>
![Page 23: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/23.jpg)
ACTIVITÉ : AndroidManifest.xml
23
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.bounceur.cours_android">
<application
android:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/AppTheme">
<activity android:name=".MainActivity"
><intent-filter>
<action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" />
</intent-filter></activity>
</application>
</manifest>
![Page 24: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/24.jpg)
ACTIVITÉ : AndroidManifest.xml
24
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.bounceur.cours_android">
<application
android:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/AppTheme">
<activity android:name=".MainActivity"android:process="nom"
><intent-filter>
<action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" />
</intent-filter></activity>
</application>
</manifest>
![Page 25: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/25.jpg)
ACTIVITÉ : AndroidManifest.xml
25
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.bounceur.cours_android">
<application
android:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/AppTheme">
<activity android:name=".MainActivity"android:process="nom"android:permission="android.permission.WAKE_LOCK"
><intent-filter>
<action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" />
</intent-filter></activity>
</application>
</manifest>
![Page 26: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/26.jpg)
ACTIVITÉ : AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="fr.univ_brest.bounceur.projet_cours">
<applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/AppTheme">
<activity android:name=".MainActivity"android:theme="@style/Theme.Design.NoActionBar"><intent-filter>
<action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" />
</intent-filter></activity>
</application>
</manifest>
26
![Page 27: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/27.jpg)
ACTIVITÉ : AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="fr.univ_brest.bounceur.projet_cours">
<applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/AppTheme">
<activity android:name=".MainActivity"android:theme="@style/Theme.Design.Light.NoActionBar"><intent-filter>
<action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" />
</intent-filter></activity>
</application>
</manifest>
27
![Page 28: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/28.jpg)
ACTIVITÉ : AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="fr.univ_brest.bounceur.projet_cours">
<applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/AppTheme">
<activityandroid:name=".MainActivity"
android:screenOrientation="portrait"
><intent-filter>
<action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" />
</intent-filter></activity>
</application>
</manifest>
28
portraitlandscape…
![Page 29: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/29.jpg)
ACTIVITÉ : AndroidManifest.xml
¢ Priorité d’une activité :
<activityandroid:name=".MainActivity"android:label="Mon Activité">
<intent-filter android:priority="999">
<action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</application>
29
-1000 à 1000
![Page 30: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/30.jpg)
ACTIVITÉ : AndroidManifest.xml
¢ Label et Mode d’exécution :
<activityandroid:name=".MainActivity"android:label="Mon Activité"android:launchMode="singleTask"
>
30
singleTaskstandard singleTop singleInstance
![Page 31: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/31.jpg)
CYCLE DE VIE D'UNE ACTIVITÉ
¢ Les états principaux d'une activité sont les suivants : � active (active) : activité visible qui détient le focus
utilisateur et attend les entrées utilisateur. C'est l'appel à la méthode onResume, à la création ou à la reprise après pause qui permet à l'activité d'être dans cet état. Elle est ensuite mise en pause quand une autre activité devient active grâce à la méthode onPause ;
� suspendue (paused) : activité au moins en partie visible à l'écran mais qui ne détient pas le focus. La méthode onPause est invoquée pour entrer dans cet état et les méthodes onResume ou onStop permettent d'en sortir ;
� arrêtée (stopped) : activité non visible. C'est la méthode onStop qui conduit à cet état.
31
![Page 32: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/32.jpg)
CYCLE DE VIE D'UNE ACTIVITÉ
¢ Le cycle de vie d'une activité est parsemé d'appels aux méthodes relatives à chaque étape de sa vie. Il informe ainsi le développeur sur la suite des événements et le travail qu'il doit accomplir.
32Source : www.android.com
![Page 33: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/33.jpg)
Activité : squelette (1/9)
public final class MonActivite extends Activity {/** * Appelée lorsque l'activité est créée. * Permet de restaurer l'état de l'interface * utilisateur grâce au paramètre savedInstanceState. */
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Placez votre code ici
}...
}
33
![Page 34: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/34.jpg)
Activité : squelette (2/9)
public final class MonActivite extends Activity {...
/** * Appelée lorsque que l'activité a fini son cycle de vie. * C'est ici que nous placerons notre code de libération de * mémoire, fermeture de fichiers et autres opérations * de "nettoyage". */public void onDestroy() {
// Placez votre code icisuper.onDestroy();
}...}
34
![Page 35: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/35.jpg)
Activité : squelette (3/9)
public final class MonActivite extends Activity {...
/** * Appelée lorsque l'activité démarre. * Permet d'initialiser les contrôles. */
public void onStart() {super.onStart();// Placez votre code ici
}...}
35
![Page 36: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/36.jpg)
Activité : squelette (4/9)
public final class MonActivite extends Activity {...
/** * Appelée lorsque l'activité passe en arrière plan. * Libérez les écouteurs, arrêtez les threads, votre activité* peut disparaître de la mémoire. */
public void onStop() {// Placez votre code icisuper.onStop();
}...}
36
![Page 37: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/37.jpg)
Activité : squelette (5/9)
public final class MonActivite extends Activity {...
/** * Appelée lorsque l'activité sort de son état de veille.*/
public void onRestart() {super.onRestart();// Placez votre code ici
}...}
37
![Page 38: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/38.jpg)
Activité : squelette (6/9)
public final class MonActivite extends Activity {...
/** * Appelée lorsque que l'activité est suspendue. * Stoppez les actions qui consomment des ressources. * L'activité va passer en arrière-plan. */
public void onPause() {// Placez votre code icisuper.onPause();
}...}
38
![Page 39: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/39.jpg)
Activité : squelette (7/9)
public final class MonActivite extends Activity {...
/** * Appelée après le démarrage ou une pause. * Relancez les opérations arrêtées (threads). * Mettez à jour votre application et vérifiez vos écouteurs. */
public void onResume() {super.onResume();// Placez votre code ici
}...}
39
![Page 40: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/40.jpg)
ME S S A G E S & DIA L O G U E
Toast et SnackBar / AlertDialog40
![Page 41: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/41.jpg)
AFF ICH ER UN M ESSAGE
¢ Par un Toast
Toast.makeText(this, "Salut !", Toast.LENGTH_SHORT).show();
Toast.makeText(this, "Salut !", Toast.LENGTH_LONG).show();
41
![Page 42: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/42.jpg)
AFF ICH ER UN M ESSAGE
¢ Par un SnackBar
Snackbar snackbar = Snackbar.make(findViewById(R.id.layout), "Welcome !", Snackbar.LENGTH_LONG);
snackbar.show();
Ou
Snackbar.make(findViewById(R.id.layout), "Welcome !", Snackbar.LENGTH_LONG).show();
42
![Page 43: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/43.jpg)
AFFICHER UN MESSAGE
¢ Par un SnackBar + Action
View layout = findViewById(R.id.layout);
Snackbar snackbar = Snackbar.make(layout, "Message", Snackbar.LENGTH_LONG) ;
snackbar.setAction("CLOSE", new View.OnClickListener() {@Overridepublic void onClick(View view) {
//...}
});
snackbar.show();
43
![Page 44: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/44.jpg)
AFF ICH ER UN M ESSAGE
¢ Par un SnackBar + Action + Couleur
View layout = findViewById(R.id.layout);
Snackbar snackbar = Snackbar.make(layout, "Message", Snackbar.LENGTH_LONG) ;
snackbar.setAction("CLOSE", new View.OnClickListener() {@Overridepublic void onClick(View view) {
//...}
});
snackbar.setActionTextColor(Color.RED)
View sbView = snackbar.getView();
sbView.setBackgroundColor(Color.TRANSPARENT);
snackbar.show();44
![Page 45: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/45.jpg)
AFF ICHER UNE BO ITE DE D IALOGUE
AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("Information");builder.setMessage("Value of x is "+x);builder.setIcon(R.drawable.triangle);builder.show();
45
Informer
![Page 46: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/46.jpg)
AFF ICHER UNE BO ITE DE D IALOGUE
AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("Information");
builder.setMessage("Voulez-vous quitter ?");
builder.setPositiveButton("Oui", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {
// Action pour oui}
});builder.setNegativeButton("Non", new DialogInterface.OnClickListener() {
@Overridepublic void onClick(DialogInterface dialog, int which) {
// Action pour non}
});builder.setNeutralButton("Annuler", new DialogInterface.OnClickListener() {
@Overridepublic void onClick(DialogInterface dialog, int which) {
// Action pour annuler (dialog.cancel();) }
});AlertDialog dialog = builder.create();dialog.show();
46Confirmer
![Page 47: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/47.jpg)
AFF ICHER UNE BO ITE DE D IALOGUE
AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("Information");
builder.setMessage("Voulez-vous quitter ?");
builder.setPositiveButton("Oui", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {
// Action pour oui}
});builder.setNegativeButton("Non", new DialogInterface.OnClickListener() {
@Overridepublic void onClick(DialogInterface dialog, int which) {
// Action pour non}
});builder.setNeutralButton("Annuler", new DialogInterface.OnClickListener() {
@Overridepublic void onClick(DialogInterface dialog, int which) {
// Action pour annuler (dialog.cancel();) }
});builder.show();
47Confirmer
![Page 48: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/48.jpg)
AFF ICHER UNE BO ITE DE D IALOGUE
AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("Valeur de x");
final EditText input = new EditText(this);input.setInputType(InputType.TYPE_CLASS_TEXT);builder.setView(input);
builder.setPositiveButton("Oui", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {
String s = input.getText().toString();}
});builder.setNeutralButton("Annuler", new DialogInterface.OnClickListener() {
@Overridepublic void onClick(DialogInterface dialog, int which) {
dialog.cancel();}
});builder.show();
48Entrée (Input)
![Page 49: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/49.jpg)
AFF ICHER UNE BO ITE DE D IALOGUE
DatePickerDialog dpd = new DatePickerDialog(this);
dpd.setOnDateSetListener(new DatePickerDialog.OnDateSetListener() {@Overridepublic void onDateSet(DatePicker dp, int y, int m, int d) {
Log.i("TAG", d+" "+m+" "+y);}
});
dpd.show();
y : Annéem : Moisd : Jour
49
Choisir une date
![Page 50: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/50.jpg)
AFF ICHER UNE BO ITE DE D IALOGUE
TimePickerDialog tpd = new TimePickerDialog(this,
new TimePickerDialog.OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int h, int m) {
Log.i("TAG", h+" "+m);
}
}, 15, 0, true);
tpd.show();
h : Heure
m : Minutes
50
Choisir une heure
![Page 51: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/51.jpg)
AFF ICHER UNE BO ITE DE D IALOGUE
AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("Choisissez un sandwich").setItems(R.array.sandwichs,
new DialogInterface.OnClickListener() {public void onClick(DialogInterface dialog, int which) {
Log.i("TAG", ""+which);}
});builder.create().show();
51
Choix unique
![Page 52: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/52.jpg)
AFF ICHER UNE BO ITE DE D IALOGUE
AlertDialog.Builder builder = new AlertDialog.Builder(this);builder.setTitle("Ingrédients").setMultiChoiceItems(R.array.ingredients, null,
new DialogInterface.OnMultiChoiceClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which, boolean isChecked) {
Log.i("TAG", ""+which+" "+isChecked);}
});builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Overridepublic void onClick(DialogInterface dialog, int id) {}
});builder.setNegativeButton("Annuler", new DialogInterface.OnClickListener() {
@Overridepublic void onClick(DialogInterface dialog, int id) {}
});builder.create().show();
52
Choix multiple
![Page 53: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/53.jpg)
AFF ICHER UNE BO ITE DE D IALOGUE
53
Boite personnelle
MainActivityactivity_main.xml
onClick
textView
mon_dialog_layout.xmleditText
Layout (sans les boutons)
![Page 54: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/54.jpg)
AFF ICHER UNE BO ITE DE D IALOGUE
AlertDialog.Builder builder = new AlertDialog.Builder(this);LayoutInflater inflater = this.getLayoutInflater();
View view = inflater.inflate(R.layout.mon_dialog_layout, null);EditText editText = view.findViewById(R.id.editText);builder.setView(view);
builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int id) {
textView.setText(editText.getText().toString());}
});
builder.setNegativeButton("Annuler", ...);
builder.create().show();
54
Boite personnelle
![Page 55: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/55.jpg)
AFF ICHER UNE BO ITE DE D IALOGUE
AlertDialog.Builder builder = new AlertDialog.Builder(this);
LayoutInflater inflater = this.getLayoutInflater();
builder.setView(inflater.inflate(R.layout.mon_dialog_layout, null)) ;builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() {
@Overridepublic void onClick(DialogInterface dialog, int id) {
Dialog dialogObj = (Dialog) dialog;EditText editText = dialogObj.findViewById(R.id.editText);textView.setText(editText.getText().toString());
}})builder.setNegativeButton ...
builder.create().show();
55
Boite personnelle
![Page 56: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/56.jpg)
LES NOT IF IC AT ION S
56
![Page 57: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/57.jpg)
AFF ICH ER UN E NOT IF IC AT ION
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this);
mBuilder.setSmallIcon(R.drawable.notif_icone);mBuilder.setContentTitle("Ma notification");mBuilder.setContentText("Salut!");
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(1, mBuilder.build());
57
id
![Page 58: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/58.jpg)
AFF ICH ER UN E NOT IF IC AT ION
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this);
mBuilder.setSmallIcon(R.drawable.notif_icone);mBuilder.setContentTitle("Ma notification");mBuilder.setContentText("Salut!");
Notification notification = mBuilder.build();
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(1, notification);
58
![Page 59: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/59.jpg)
AFF ICH ER UN E NOT IF IC AT ION
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this);
mBuilder.setSmallIcon(R.drawable.notif_icone).setContentTitle("Ma notification").setContentText("Salut!") ;
Notification notification = mBuilder.build();
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(1, notification);
59
![Page 60: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/60.jpg)
AFF ICH ER UN E NOT IF IC AT ION
Notification notification = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.notif_icone)
.setContentTitle("Ma notification")
.setContentText("Salut!")
.build();
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(1, notification);
60
La notification ne disparaît pas Pour arrêter une notification, utiliser mNotificationManager.cancel(id)false (par défaut) à elle disparaît (par l’intermédiaire de l’utilisateur)
![Page 61: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/61.jpg)
AFFICHER UNE NOTIFICATION
Notification notification = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.notif_icone)
.setContentTitle("Ma notification")
.setContentText("Salut!")
.setOngoing(true)
.build();
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(1, notification);
61
![Page 62: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/62.jpg)
AFF ICH ER PLUS IEURS NOT IF IC AT ION S
Notification notification = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.notif_icone)
.setContentTitle("Ma notification")
.setContentText("Salut!")
.setOngoing(true)
.build();
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(1, notification);mNotificationManager.notify(1, notification);mNotificationManager.notify(1, notification);
62
![Page 63: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/63.jpg)
AFF ICH ER PLUS IEURS NOT IF IC AT ION S
Notification notification = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.notif_icone)
.setContentTitle("Ma notification")
.setContentText("Salut!")
.setOngoing(true)
.build();
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(1, notification);mNotificationManager.notify(2, notification);mNotificationManager.notify(3, notification);
63
![Page 64: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/64.jpg)
AFF ICH ER UN E NOT IF IC AT ION (AVEC DU SON )
Notification notification = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.notif_icone)
.setContentTitle("Ma notification")
.setContentText("Salut!")
.setSound(soundUri)
.build();
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(1, notification);
64
Uri soundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
![Page 65: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/65.jpg)
AFF ICH ER UN E NOT IF IC AT ION (AVEC SON )
Son du réveil :RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM)
Son de notification :RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
Son de sonnerie téléphone :RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE);
Son existant et adapté :RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALL);
Son personnalisé :Uri soundUri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.bipe);
65
Uri soundUri = RingtoneManager.getDefaultUri(?);
![Page 66: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/66.jpg)
AFF ICH ER UN E NOT IF IC AT ION (QU I V IBRE )
Notification notification = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.notif_icone)
.setContentTitle("Ma notification")
.setContentText("Salut!")
.setSound(soundUri);
.setVibrate(new long[]{0, 1000, 500, 1000});
.build();
NotificationManager mNotificationManager = (NotificationManager) getSystemService(this.NOTIFICATION_SERVICE);
mNotificationManager.notify(1, notification);
66
Uri soundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
0 : Ne pas répéter1000 : vibrer durant 1 seconde500 : attendre ½ seconde1000 : vibrer durant 1 secondexxx : vibreryyy : attendre...
![Page 67: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/67.jpg)
AFFICHER UNE NOTIF ICAT IONVERS ION À PARTIR D ’OREO
Création d’un canal :
NotificationChannel channel = new NotificationChannel(
"channelid", "Royal", NotificationManager.IMPORTANCE_DEFAULT);
channel.setDescription("Description");
67
>Android 8minSdkVersion 26
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.O) {...
}
![Page 68: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/68.jpg)
AFFICHER UNE NOTIF ICAT IONVERS ION À PARTIR D ’OREO
Création d’un canal (son personnalisé) :
Uri soundUri = ...
AudioAttributes audioAttributes = new AudioAttributes.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.setUsage(AudioAttributes.USAGE_ALARM)
.build();
channel.setSound(soundUri , audioAttributes);
68
![Page 69: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/69.jpg)
AFFICHER UNE NOTIF ICAT IONVERS ION À PARTIR D ’OREO
Création de la notification :
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, "channelid")
.setSmallIcon(R.drawable.ic_notif)
.setContentTitle("Important !")
.setContentText("Votre colis est arrivé")
.setPriority(NotificationCompat.PRIORITY_DEFAULT);
69
![Page 70: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/70.jpg)
AFFICHER UNE NOTIF ICAT IONVERS ION À PARTIR D ’OREO
Lancement de la notification :
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(this);
notificationManager.createNotificationChannel(channel);
notificationManager.notify(1, builder.build());
70
![Page 71: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/71.jpg)
AFF IC H E R U N E NO TIF IC A T IO NVE R S IO N À P A R T IR D ’OR E O (LE S O N !)
71
![Page 72: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/72.jpg)
RING TON EUri soundUri = ...
Ringtone ringtone =RingtoneManager.getRingtone(getApplicationContext(), soundUri);
ringtone.play();
72
![Page 73: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/73.jpg)
LUM INOS ITÉ D E L ’ÉCRANWindowManager.LayoutParams param = getWindow().getAttributes();
param.screenBrightness = 0.5f ;
getWindow().setAttributes(param);
param.screenBrightness
Type floatà Minimum : 0.0fà Maxmimum : 1.0f
73
![Page 74: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/74.jpg)
Forcer l’écran à rester allumé (bloquer le mode veille)
¢ Il suffit juste d’ajouter un flag :
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
);
¢ On peut le faire aussi à partir d’un layout :
<android.support.constraint.ConstraintLayout xmlns:android="http..." xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:keepScreenOn="true"tools:context="com.bounceur.servicelooper.MainActivity"
>
74
![Page 75: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/75.jpg)
75
android.os.Process.killProcess(android.os.Process.myPid());
![Page 76: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/76.jpg)
76
![Page 77: PROGRAMMATION ANDROID - univ-brest.frlabsticc.univ-brest.fr/~bounceur/cours_pdf/android/...services, les récepteurs d'Intents (Broadcast receivers), les fournisseurs de contenu et](https://reader034.vdocuments.mx/reader034/viewer/2022051815/603d00d7ccb8331feb7f1e45/html5/thumbnails/77.jpg)
VO IX D E SYN TH ÈSE
https://ttsreader.com/fr/
77