Notifications sous Android

Acesyde

Ce tutoriel a pour but de vous présenter l'utilisation des notifications sous Android.

Commentez ♪

- Titre : Notifications sous Android

- Auteur : Acesyde

- Parution : 23 novembre 2012

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2012 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- I. Les notifications

- II. Aperçu d'une notification

- III. Création de notre propre notification

- IV. Quelques améliorations

- V. Conclusion

- VI. Remerciements

- VII. Liens

I - Les notifications

Android intègre dans son cœur un système de notifications. Celui-ci permet d'avertir l'utilisateur s'il reçoit une information importante. Vous pouvez rajouter une sonnerie et une vibration, ainsi que le clignotement des LED disponibles sur le téléphone.

Mais je préfère vous mettre en garde contre l'utilisation massive de ce système dans vos applications. Une notification doit rester un avertissement pour l'utilisateur, une information importante qu'il ne doit pas manquer (batterie faible, réception d'un SMS, etc.), mais cela ne doit pas être utilisé pour dire un simple « Bonjour, l'application est lancée ». Alors, utilisez ce système à bon escient.

II - Aperçu d'une notification

Si vous ne voyez pas ce qu'est une notification, je vais vous montrer un exemple :

Cet exemple montre une notification pour un SMS. On y retrouve une icône, un titre, sa description et l'heure de la réception de la notification.

III - Création de notre propre notification

Nous allons commencer par créer un nouveau projet (1.6 ou autres), puis nous allons nous concentrer sur la création de la notification.

Tout d'abord, le système de notification se fait par le biais d'un service intégré à notre OS Mobile, nommé « NOTIFICATION SERVICE ». Pour le récupérer, nous allons utiliser la méthode getSystemService et stocker le service dans un NotificationManager.

Créons une variable privée de type NotificationManager, nommée notificationManager dans notre classe.

private NotificationManager notificationManager;

Puis, récupérons le service dans la méthode onCreate de notre activité :

notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

Désormais, nous pouvons accéder au système de notification d'Android. Pour le moment, rien de plus simple, mais ça va se corser.

Nous allons rajouter un bouton à notre application, que l'on va nommer « boutonNotification». Nous allons nous retrouver avec quelque chose comme ceci :

private NotificationManager notificationManager;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);

final Button boutonNotification = (Button) findViewById(R.id.boutonNotification);

boutonNotification.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// Traitement de la notification
}
});
}

Pour commencer, nous allons utiliser la classe notification :

Notification(int icon, CharSequence tickerText, long when)

Paramètres :

- icon  Image utilisée pour la notification (Drawable) ;

- tickerText  Texte qui suivra l'icône dans la barre de notifications lors de son déclenchement ;

- when  Quand est-ce que la notification s'est déclenchée.

Voici ce que l'on va mettre dans notre déclaration :

Notification notification = new Notification(R.drawable.icon, « Mon appli », System.currentTimeMillis());

Ce n'est pas tout, car actuellement nous ne pouvons pas l'afficher, il manque encore des choses importantes.

La plupart du temps, une notification s'affiche, mais l'application n'est pas au premier plan. Il est idéal de rediriger l'utilisateur vers l'activité concernée lorsqu'il clique sur la notification.

Imaginons que nous voulons passer un coup de téléphone avec cette notification, nous allons rajouter un Intent tout simple comme nous avons l'habitude de faire :

Intent intentNotification = new Intent(Intent.ACTION_VIEW,Uri.parse("tel:0102030405"));

Voilà, notre Intent est prêt pour ouvrir notre gestionnaire téléphonique.

Nous allons rajouter un PendingIntent ( http://developer.android.com/reference/android/app/PendingIntent.html ) qui transmettra notre notification au système.

PendingIntent pendingIntent = PendingIntent.getActivity(MonActivite.this, 0, intentNotification, 0);

Paramètres :

- le contexte de l'application ;

- le code de requête ;

- la notification à transmettre ;

- et les drapeaux.

Ensuite, nous allons rajouter des informations à notre notification grâce à la méthode setLatestEventInfo :

notification.setLatestEventInfo(MonActivite.this, "Ma notification", "Passer un appel", pendingIntent);

Paramètres :

- le contexte de l'application ;

- le titre de la notification ;

- la description ;

- le PendingIntent.

Et pour finir, on envoie tout cela à notre manager :

notificationManager.notify(1, notification);

Paramètres :

- l'identifiant de la notification ;

- la notification.

Ce qui nous donne pour finir :

@Override

public void onClick(View v) {

Notification notification = new Notification(R.drawable.icon,

"Mon appli",

System.currentTimeMillis());

Intent intentNotification = new Intent(Intent.ACTION_VIEW,Uri.parse("tel:0102030405"));

PendingIntent pendingIntent = PendingIntent.getActivity(MonActivite.this, 0, intentNotification, 0);

notification.setLatestEventInfo(MonActivite.this, "Ma notification", "Passer un appel", pendingIntent);

notificationManager.notify(1, notification);

}

Lancez l'application et voyez par vous-même :

IV - Quelques améliorations

Vous avez vu que si l'on clique sur la notification, celle-ci ne disparaît pas ? C'est embêtant.

Nous allons y remédier comme ceci, par le biais des flags :

notification.flags |= Notification.FLAG_AUTO_CANCEL;

Notre notification disparaîtra à sa sélection par l'utilisateur.

Pour les vibrations :

notification.defaults |= Notification.DEFAULT_VIBRATE;

Vous pouvez préciser la durée ou une suite de vibration en millisecondes :

notification.vibrate = new long[] {200,300,400,500};

Pour ce qui est de la notification à l'aide d'une sonnerie :

notification.defaults |= Notification.DEFAULT_SOUND;

Et pour finir les LED :

notification.defaults |= Notification.DEFAULT_LIGHTS;

Si vous désirez en savoir plus sur l'utilisation des Vibrations, sons, LED :

http://developer.android.com/guide/topics/ui/notifiers/notifications.html

V - Conclusion

Nous avons fait le tour des notifications. À vous de jouer maintenant, et n'oubliez pas il ne faut pas en abuser !

Sources du projet

VI - Remerciements

Je tiens à remercier tout particulièrement Feanorin qui a mis ce tutoriel au format Developpez.com.
Merci également à ced d'avoir pris le temps de le relire et de le corriger.

VII - Liens

Tutoriel d'origine sur ace-art.fr