IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Notifications sous Android

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

6 commentaires Donner une note à l´article (5)

Article lu   fois.

L'auteur

Profil Pro

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

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 :

Image non disponible

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.

 
Sélectionnez
private NotificationManager notificationManager;

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

 
Sélectionnez
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 :

 
Sélectionnez
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 :

 
Sélectionnez
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 :

 
Sélectionnez
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.

 
Sélectionnez
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 :

 
Sélectionnez
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 :

 
Sélectionnez
notificationManager.notify(1, notification);

Paramètres :

  • l'identifiant de la notification ;
  • la notification.

Ce qui nous donne pour finir :

 
Sélectionnez
@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 :

Image non disponible

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 :

 
Sélectionnez
notification.flags |= Notification.FLAG_AUTO_CANCEL;

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

Pour les vibrations :

 
Sélectionnez
notification.defaults |= Notification.DEFAULT_VIBRATE;

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

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

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

 
Sélectionnez
notification.defaults |= Notification.DEFAULT_SOUND;

Et pour finir les LED :

 
Sélectionnez
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

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

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 Acesyde Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni 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.