Voici un exemple supplémentaire de script pour le serveur PAW. Il consiste à permettre de jouer un fichier MP3 sur le téléphone et de l’intégrer à un système domotique. Le principe est similaire aux autres scripts précédents. Le serveur domotique déclenche la lecture du fichier MP3 sur le téléphone Android et l’interrompt au bout de 10 secondes. Voyons comment procéder.
Le script du jour apporte les spécificités suivantes:
- Pouvoir être appelé par une simple requête HTTP
- Jouer le fichier MP3 passé en paramètre
Pour obtenir le service attendu encore une fois il suffit de placer le script sur le serveur PAW sur votre téléphone Android. Il faudra également y placer le fichier MP3 souhaité dans le répertoire “music” du téléphone ou tout autre de votre choix.
Voici le script que je vous propose comme base de travail.
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <title>Lecture de fichier MP3</title> </head> <body> <h1>Lecture de fichier MP3</h1> <bsh> //déclarations import android.media.MediaPlayer; //récupération des paramètre d'entrée fichier = parameters.get("fichier"); // l'API est documentée ici: // http://developer.android.com/reference/android/media/MediaPlayer.html mp = new MediaPlayer(); // on récupère le fichier à lire mp.setDataSource("/sdcard/music/"+fichier+".mp3"); mp.prepare(); mp.start(); // on lit les 10 premières secondes while(mp.getCurrentPosition() <= 10*1000) { Thread.sleep(1000); } //fin de la lecture mp.stop(); mp.release(); </bsh> <h3>Paramètres</h3> <p> La page prend en paramètre d'entrée les éléments suivants:<br> <ul> <li>fichier : Le nom du fichier à lire</li> </ul> </p> <p> <h3>Nom du fichier à lire:</h3> <bsh>$$.print("/sdcard/music/"+fichier+".mp3"); </bsh> </p> </body> </hmtl>
L’installation se fait de la même manière que pour le script concernant la reconnaissance vocale. Le prérequis est bien entendu d’avoir installé au préalable le serveur PAW sur votre téléphone Android comme présenté dans le précédent article:
- Télécharger le code précédent et le sauvegarder le sur votre disque dur dans un fichier appelé : “mp3.xhtml”
- Se connecter au serveur PAW.
- Accéder au gestionnaire de fichiers : Menu Media->File manager
- Dans le répertoire /sdcard/paw/html de votre téléphone créer le répertoire “actions” s’il n’existe pas encore
- Indiquer l’endroit de votre disque dur où se trouve le script à uploader sur le serveur PAW en cliquant sur “Parcourir”.
- Sélectionner le fichier “mp3.xhtml” et cliquer sur “Open”.
- Effectuer l’upload en cliquant sur “Upload”.
- Le message suivant vous confirme le chargement du script sur le serveur.
Il vous faut également uploader de la même manière le fichier MP3 dans le répertoire /sdcard/paw/music.
Il ne vous reste plus qu’à renseigner l’URL adéquate dans un scénario pour une Zibase ou bien dans un périphérique HTTP sur un serveur eedomus.
L’URL à renseigner sera de la forme:
http://192.168.0.10:8080/actions/mp3.xhtml?fichier=NomFichier
Pensez à modifier “192.168.0.10” par l’adresse IP de votre serveur PAW. La valeur NomFichier sera à remplacer par le nom du fichier à jouer (sans le “.mp3”).
Le but de ce script est de pouvoir informer d’un événement ou d’une alarme/alerte sans utiliser la synthèse vocale. On peut ainsi créer une sonnette pour la porte d’entrée, un réveil matin, une alerte dès que l’on rentre à la maison pour se souvenir qu’il faut désactiver l’alarme… Je suis sûr que vous aurez de bonne idées. N’hésitez pas à les partager!
Pour cet exemple, je tiens à remercier Jochen Ruehl le créateur de PAW pour son coup de main et aide précieuse. Merci aussi pour son application!
bonjour merci pour ce tuto
en effet grande perspectives en vues
par contre il y a une erreur sur le chemin, il manque PAW
“/sdcard/paw/music/”+fichier+”.mp3″
Tout dépends de l’endroit où tu places tes fichiers mp3. En ce qui e concerne le chemin est bien /sdcard/music/
😉
Bonjour
Est il possible de régler le volume lors de la lecture du mp3 comme tu l’as fait avec le script de synthèse vocale?
Merci pour tous ces tutos sur PAW qui m’ont permis d’exploiter à fond un vieux téléphone android racheté pour une misère!
Bonjour,
Oui c’est possible. Pour cela il faut prendre le script MP3 et le modifier en y reportant les éléments qui permettent de piloter le volume sonore du script de Synthèse vocale. Pour savoir quelles lignes reporter il faut se laisser guider par les commentaires.
Bonne utilisation de PAW!
Tout simplement en réutilisant la commande de la synthèse sms?
/sdcard/paw/music/ »+fichier+ ».mp3&vol=13
J’étais tenté par l’achat d’occasion d’un karotz…mais au final avec mon samsung acheté 30e, je me retrouve avec un système plus ou moins équivalent (je n’ai pas l’utilité des nanotag, de la webcam et des programmes du karotz pour mon utilisation) grâce au logiciel PAW.
C’est merveilleux ce que l’on peut faire avec ce logiciel gratuit! (et encore plus quand on peut suivre des tutos aussi clairs que les tiens…j’avoue que sans ça, j’aurais été bien incapable d’utiliser toutes ces fonctionnalités! Un énorme merci pour ton aide!)
bonjour
un grand bravo pour ces tuto sur paw qui m’ont été d’une grande utilité pour exploiter une nexus7 comme terminal domotique.
comment modifier le script pour lire le fichier mp3 dans son intégralité sans s’arrêter après 10 secondes et comment modifier le volume sonore ?
merci encore pour votre aide
Bonjour,
Attention a la fin du script d’origine, petit coquille : remplacer par
Pour lire un fichier MP3 en totalité , remplacer par cette partie :
mp = new MediaPlayer();
// on recupere le fichier a lire
mp.setDataSource(“/sdcard/music/”+fichier+”.mp3″);
mp.prepare();
mp.start();
// Attente de la fin du fichier
while ( mp.isPlaying()) {
Thread.sleep(100);
}
//fin de la lecture => on arrete le lecteur et on le libere…
mp.stop();
mp.release();
Attention a la fin du script d’origine, petit coquille : remplacer hmtl par html
salut
Petit ou grande question
je cherche une solution pour rajouter à la requête le tempe de lecture.
exemple : /sdcard/music/”+fichier+”.mp3/temps=60
pour le moment j’ai passer le code a 60s
// on lit les 10 premières secondes
while(mp.getCurrentPosition() <= 60*1000) {
Thread.sleep(1000);