I. Introduction▲
Donc pour commencer, créez votre projet Android (pour moi comme à mon habitude j'utilise la version 1.6 d'Android) et nous allons tout de suite créer la mini interface graphique de notre application. Elle se compose simplement de deux boutons. Voici à quoi ressemblera notre application une fois terminée:
II. Code XML▲
Bon je me demande si je dois vous donner le code pour une si simple interface graphique? Allez pour les plus faignants, il n'y aura qu'un petit copier/coller à faire, voici le code :
<?
xml
version="1.0"
encoding="utf-8"?
>
<
LinearLayout
xmlns
:
android
=
"
http://schemas.android.com/apk/res/android
"
android
:
orientation
=
"
vertical
"
android
:
layout_width
=
"
fill_parent
"
android
:
layout_height
=
"
fill_parent
"
android
:
gravity
=
"
center
"
>
<
Button
android
:
id
=
"
@+id/CreateNotif
"
android
:
layout_width
=
"
fill_parent
"
android
:
layout_height
=
"
wrap_content
"
android
:
text
=
"
Créer
une
notification
"
/
>
<
Button
android
:
id
=
"
@+id/ClearNotif
"
android
:
layout_width
=
"
fill_parent
"
android
:
layout_height
=
"
wrap_content
"
android
:
text
=
"
Supprimer
la
notification
"
/
>
<
/
LinearLayout
>
III. Code JAVA▲
Nous allons travailler avec deux Activity. L'Activity principale sera celle contenant nos deux boutons et qui nous permettra de créer ceux pourquoi nous sommes ici, c'est à dire une notification. Le bouton « Créer une notification » créera donc une notification et le bouton « Supprimer la notification » la supprimera. Bon ça, je pense que vous l'auriez trouvé sans moi... Mais alors pourquoi avoir besoin d'une autre Activity ? Et bien tout simplement lorsque l'on cliquera sur notre notification apparaissant dans la liste des notifications, cela nous emmènera vers un nouvel écran de notre application, tout en supprimant automatiquement la notification qui a été créée. Allez fini le blabla voici le code commenté de l'Activity principale :
package
com.tutomobile.android.notification;
import
android.app.Activity;
import
android.app.Notification;
import
android.app.NotificationManager;
import
android.app.PendingIntent;
import
android.content.Context;
import
android.content.Intent;
import
android.os.Bundle;
import
android.view.View;
import
android.view.View.OnClickListener;
import
android.widget.Button;
public
class
Tutoriel16_Android extends
Activity {
//
On
définit
une
variable
global
qui
sera
//
l'id
unique
correspondant
à
notre
notification
(bon
moi
j'ai
choisi
ma
date
de
naissance)
public
static
final
int
ID_NOTIFICATION =
1988
;
/**
Called
when
the
activity
is
first
created
.
*/
@
Override
public
void
onCreate
(
Bundle savedInstanceState) {
super
.onCreate
(
savedInstanceState);
setContentView
(
R.layout.main);
//
On
récupère
nos
deux
boutons
créés
en
XML
grâce
à
leur
id
Button boutonCreateNotif =
(
Button) findViewById
(
R.id.CreateNotif);
Button boutonClearNotif =
(
Button) findViewById
(
R.id.ClearNotif);
//
On
applique
un
écouteur
d'évènement
à
notre
bouton
"Créer
une
notification"
boutonCreateNotif.setOnClickListener
(
new
OnClickListener
(
) {
public
void
onClick
(
View v) {
//
on
lance
la
méthode
createNotify
(qui
comme
son
nom
l'indique
créera
la
notification)
createNotify
(
);
}
}
);
//
On
applique
un
écouteur
d'évènement
à
notre
bouton
"Supprimer
la
notification"
boutonClearNotif.setOnClickListener
(
new
OnClickListener
(
) {
public
void
onClick
(
View v) {
//
on
lance
la
méthode
cancelNotify
(qui
supprimera
la
notification
de
la
liste
des
notifications)
cancelNotify
(
);
}
}
);
}
//
Méthode
qui
crée
la
notification
private
void
createNotify
(
){
//
On
crée
un
"gestionnaire
de
notification"
NotificationManager notificationManager =
(
NotificationManager)getSystemService
(
Context.NOTIFICATION_SERVICE);
//
On
crée
la
notification
//
Avec
son
icône
et
son
texte
défilant
(optionnel
si
l'on
ne
veut
pas
de
texte
défilant
on
met
cet
argument
à
null)
Notification notification =
new
Notification
(
R.drawable.icon, "
Toc
toc,
c'est
une
notification
!
"
, System.currentTimeMillis
(
));
//
Le
PendingIntent
c'est
ce
qui
va
nous
permettre
d'atteindre
notre
deuxième
Activity
//
ActivityNotification
sera
donc
le
nom
de
notre
seconde
Activity
PendingIntent pendingIntent =
PendingIntent.getActivity
(
this
, 0
, new
Intent
(
this
, ActivityNotification.class
), 0
);
//
On
définit
le
titre
de
la
notification
String titreNotification =
"
C'est
moi
la
notification
!
"
;
//
On
définit
le
texte
qui
caractérise
la
notification
String texteNotification =
"
Je
suis
une
belle
notification...
"
;
//
On
configure
notre
notification
avec
tous
les
paramètres
que
l'on
vient
de
créer
notification.setLatestEventInfo
(
this
, titreNotification, texteNotification, pendingIntent);
//
On
ajoute
un
style
de
vibration
à
notre
notification
//
L'utilisateur
est
donc
également
averti
par
les
vibrations
de
son
téléphone
//
Ici
les
chiffres
correspondent
à
0sec
de
pause,
0.2sec
de
vibration,
0.1sec
de
pause,
0.2sec
de
vibration,
0.1sec
de
pause,
0.2sec
de
vibration
//
Vous
pouvez
bien
entendu
modifier
ces
valeurs
à
votre
convenance
notification.vibrate =
new
long
[] {
0
,200
,100
,200
,100
,200
}
;
//
Enfin
on
ajoute
notre
notification
et
son
ID
à
notre
gestionnaire
de
notification
notificationManager.notify
(
ID_NOTIFICATION, notification);
}
//
Méthode
pour
supprimer
de
la
liste
de
notification
la
notification
que
l'on
vient
de
créer
private
void
cancelNotify
(
){
//
On
crée
notre
gestionnaire
de
notification
NotificationManager notificationManager =
(
NotificationManager)getSystemService
(
Context.NOTIFICATION_SERVICE);
//
on
supprime
la
notification
grâce
à
son
ID
notificationManager.cancel
(
ID_NOTIFICATION);
}
}
Créez ensuite une nouvelle classe Java, qui sera notre seconde Activity. Moi je l'ai appelé ActivityNotification. Le code de cette Activity est très simple mais tout de même commenté, le voici :
package
com.tutomobile.android.notification;
import
android.app.Activity;
import
android.app.NotificationManager;
import
android.content.Context;
import
android.os.Bundle;
import
android.widget.TextView;
public
class
ActivityNotification extends
Activity {
@
Override
public
void
onCreate
(
Bundle savedInstanceState) {
super
.onCreate
(
savedInstanceState);
//
On
crée
un
TextView
en
Java
TextView txt=
new
TextView
(
this
);
txt.setText
(
"
Voici
à
l'Activity
qui
apparait
lorsque
l'on
clique
sur
la
notification
!
"
);
//
On
ajoute
notre
TextView
à
la
vue
setContentView
(
txt);
//
On
supprime
la
notification
de
la
liste
de
notification
comme
dans
la
méthode
cancelNotify
de
l'Activity
principale
NotificationManager notificationManager =
(
NotificationManager)getSystemService
(
Context.NOTIFICATION_SERVICE);
notificationManager.cancel
(
Tutoriel16_Android.ID_NOTIFICATION);
}
}
Une fois tout ceci fait il ne reste plus qu'à faire une petite modification dans le fichier AndroidManifest.xml.
IV. AndroidManifest.xml▲
Il n'y a que deux petites choses à rajouter, l'autorisation pour faire vibrer le téléphone, ainsi que la déclaration de la nouvelle Activity que l'on a créé. Il faut donc ajouter ceci entre les balises <application> déjà existantes :
<
activity
android
:
name
=
"
.ActivityNotification
"
android
:
label
=
"
@string/app_name
"
/
>
Puis ajouter ceci juste avant la balise fermante </manifest> déjà existante également :
<
uses-permission
android
:
name
=
"
android.permission.VIBRATE
"
/
>
Voilà c'est terminé. Normalement si vous lancez votre application pour pourrez cliquer sur le bouton « Créer une notification » vous verrez apparaître la notification dans la barre de notification en même temps que votre téléphone vibrera. Si vous faîtes glisser la barre de notification vers le bas pour avoir une vue plus détaillée des notifications en cours, lorsque vous cliquerez sur votre notification, la nouvelle Activity va s'afficher et la notification aura disparu. Enfin bon je vous laisse jouer et découvrir par vous-même, ce n'est pas très difficile.
V. Remerciements▲
Je tiens à remercier tout particulièrement MrDuchnokhttp://www.developpez.net/forums/u4372/mrduchnok/ qui a mis ce tutoriel au format Developpez.com.
Merci également à Mahefasoahttp://www.developpez.net/forums/u25336/mahefasoa/ d'avoir pris le temps de le relire et de le corriger.