Archive

Archives pour 01/2010

Tutoriel | Faire vibrer le téléphone et lire mp3 au moment du reveil

On m’a demandé il y a quelque temps de faire un complement du tutoriel sur le développement d’un réveil. Dans ce tutoriel j’expliquais comment créer un réveil à une heure voulue. Le manque était qu’au réveil, il y avait juste un message qui s’affichait (c’était juste pour illustrer le tutoriel).

On va donc maintenant voir en deux parties comment ajouter des vibrations et du son.

Vibrations

Code

Pour ajouter des vibrations lors du reveil il faut ajouter ce morceau de code (toujours dans la méthode onReceive):

Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
//vibre pendant 1 seconde, puis attend 1/2 secondes avant de recommencer.
vibrator.vibrate(new long[]{0,1000,500,1000,2000}, -1);
// ou vibre pendant 2 secondes.
//vibrator.vibrate(2000);

Explication

  1. On récupère une instance du service Vibrator.
  2. Pour faire vibrer le smartphone, il existe plusieurs surcharges de la méthode vibrate:
    1. Faire vibrer pendant x secondes : vibrator.vibrate(x*1000); lien vers la doc.
    2. Faire vibrer en suivant un pattern : vibrator.vibrate(new long[]{0,1000,500,1000,2000}, -1); lien vers la doc
      1. Ici on fait vibrer de 0 à 1 seconde, puis une pause d’1/2 seconde, puis on recommence pendant 1 seconde.
      2. Le second paramètre correspond au nombre de fois que l’on doit répéter la séquence (-1 pour ne pas répéter).

Son

Code

Pour ajouter un son il faut déjà ajouter dans le répertoire res/raw (ou créer ce repertoire si il n’existe pas encore)  le fichier son que vous voulez lire. Ensuite, ajouter le code (toujours dans la méthode onRecive):


final MediaPlayer mp = MediaPlayer.create(context, R.raw.fichier_son);
mp.start();
Handler h = new Handler(){
	@Override
	public void handleMessage(Message msg) {
		if(msg.what==0){
			mp.stop();
		}
		super.handleMessage(msg);
	}
};
Message m = new Message();
m.what = 0;
h.sendMessageDelayed(m, 10000);

Explication

  1. On commence par créer un objet MediaPlayer à partir du context et du fichier de resource.
  2. Puis on lance le son avec la méthode start();
  3. Pour aller plus loin, j’ai ajouté un handler qui permet de stopper la lecture après 10 secondes en utilisant un Handler.
Categories: Tutoriels Tags: ,