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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Problème pour la lecture d'un son


Sujet :

Android

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 5
    Points
    5
    Par défaut Problème pour la lecture d'un son
    Salut

    Je cherche à diffuser un son dans mon application lorsque l'utilisateur appuie sur un bouton. Voici ce que j'utilise :

    Je déclare :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private MediaPlayer mp = null;
    J'initialise le MediaPlayer dans onCreate:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mp = MediaPlayer.create(this, R.raw.clic);
    Dans la méthode onClick du bouton je met :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    try {
    	            mp.start();
    	        } catch (IllegalArgumentException e) {
    	            e.printStackTrace();
    	        } catch (IllegalStateException e) {
    	            e.printStackTrace();
    	        }
    Et dés que j'arrive sur l'activité en question , avant même de toucher le bouton , des erreurs s'affichent dans le logcat:

    03-01 14:57:34.555: V/MediaPlayer-JNI(13917): native_setup
    03-01 14:57:34.555: V/MediaPlayer(13917): constructor
    03-01 14:57:34.555: V/MediaPlayer(13917): setListener
    03-01 14:57:34.555: V/MediaPlayer-JNI(13917): setDataSourceFD: fd 57
    03-01 14:57:34.555: V/MediaPlayer(13917): setDataSource(57, 108044, 4914)
    03-01 14:57:34.560: V/MediaPlayer(13917): setVideoSurfaceTexture
    03-01 14:57:34.560: V/MediaPlayer(13917): prepare
    03-01 14:57:34.565: V/MediaPlayer(13917): message received msg=5, ext1=0, ext2=0
    03-01 14:57:34.565: V/MediaPlayer(13917): New video size 0 x 0
    03-01 14:57:34.565: V/MediaPlayer(13917): callback application
    03-01 14:57:34.565: V/MediaPlayer(13917): back from callback
    03-01 14:57:34.565: V/MediaPlayer(13917): message received msg=1, ext1=0, ext2=0
    03-01 14:57:34.565: V/MediaPlayer(13917): prepared
    03-01 14:57:34.565: V/MediaPlayer(13917): signal application thread
    03-01 14:57:34.565: V/MediaPlayer(13917): callback application
    03-01 14:57:34.565: V/MediaPlayer(13917): back from callback
    03-01 14:57:34.565: V/MediaPlayer(13917): prepare complete - status=0
    03-01 14:57:34.565: E/MediaPlayer(13917): mOnVideoSizeChangedListener is null. Failed to send MEDIA_SET_VIDEO_SIZE message.
    03-01 14:57:34.565: I/MediaPlayer(13917): Don't send intent. msg.arg1 = 0, msg.arg2 = 0
    03-01 14:57:34.565: E/MediaPlayer(13917): mOnPreparedListener is null. Failed to send MEDIA_PREPARED message.
    Et quand je clic sur le bouton , rien ne se passe (le son n'est pas joué) si ce n'est cette nouvelle erreur dans le logcat:

    03-01 15:00:32.260: V/MediaPlayer-JNI(13917): start
    03-01 15:00:32.260: V/MediaPlayer(13917): start
    03-01 15:00:32.600: V/MediaPlayer(13917): message received msg=2, ext1=0, ext2=0
    03-01 15:00:32.600: V/MediaPlayer(13917): playback complete
    03-01 15:00:32.600: V/MediaPlayer(13917): callback application
    03-01 15:00:32.600: V/MediaPlayer(13917): back from callback
    03-01 15:00:32.600: E/MediaPlayer(13917): mOnCompletionListener is null. Failed to send MEDIA_PLAYBACK_COMPLETE message.
    Pouvez-vous m'aider ?

    PS: mon son dure 2secondes , il est format MP3. J'ai essayé avec un son format WAV ,ça ne change rien.

  2. #2
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour

    Appelles la fonction prepare() juste avant le start().

    Edit :

    Ici la documentation officielle :
    http://developer.android.com/referen...diaPlayer.html

    Il est recommandé d'appeler la méthode release() quand le media n'a pas été utilisé depuis un long moment.

    et la fonction reset pour le réutiliser .

    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Merci mais ça ne fonctionne toujours pas , j'ai essayé avec et sans les méthodes release() et reset() et en ajoutant prepare() comme tu me l'a conseillé

  4. #4
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Ca ne fonctionne toujours pas.
    En ajoutant uniqement prepare() avant start voici les erreurs que ça provoque :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    03-06 14:02:22.425: E/AndroidRuntime(29474): FATAL EXCEPTION: main
    03-06 14:02:22.425: E/AndroidRuntime(29474): java.lang.IllegalStateException
    03-06 14:02:22.425: E/AndroidRuntime(29474): 	at android.media.MediaPlayer.prepare(Native Method)
    03-06 14:02:22.425: E/AndroidRuntime(29474): 	at com.apps.galerie.Options.onClick(Options.java:110)
    03-06 14:02:22.425: E/AndroidRuntime(29474): 	at android.view.View.performClick(View.java:3644)
    03-06 14:02:22.425: E/AndroidRuntime(29474): 	at android.view.View$PerformClick.run(View.java:14313)
    03-06 14:02:22.425: E/AndroidRuntime(29474): 	at android.os.Handler.handleCallback(Handler.java:605)
    03-06 14:02:22.425: E/AndroidRuntime(29474): 	at android.os.Handler.dispatchMessage(Handler.java:92)
    03-06 14:02:22.425: E/AndroidRuntime(29474): 	at android.os.Looper.loop(Looper.java:137)
    03-06 14:02:22.425: E/AndroidRuntime(29474): 	at android.app.ActivityThread.main(ActivityThread.java:4517)
    03-06 14:02:22.425: E/AndroidRuntime(29474): 	at java.lang.reflect.Method.invokeNative(Native Method)
    03-06 14:02:22.425: E/AndroidRuntime(29474): 	at java.lang.reflect.Method.invoke(Method.java:511)
    03-06 14:02:22.425: E/AndroidRuntime(29474): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993)
    03-06 14:02:22.425: E/AndroidRuntime(29474): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)
    03-06 14:02:22.425: E/AndroidRuntime(29474): 	at dalvik.system.NativeStart.main(Native Method)
    Et j'ai pas bien saisi où mettre reset() et release(). J'ai essayé à peu prêt tous les exemple du net , j'ai toujours rien trouvé qui fonctionne.

  5. #5
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Bonjour,

    http://developer.android.com/guide/t...diaplayer.html

    Alors d'après la doc

    provenant d'une raw :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.sound_file_1);
    mediaPlayer.start(); // no need to call prepare(); create() does that for you
    provenant d'une http :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    String url = "http://........"; // your URL here
    MediaPlayer mediaPlayer = new MediaPlayer();
    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
    mediaPlayer.setDataSource(url);
    mediaPlayer.prepare(); // might take long! (for buffering, etc)
    mediaPlayer.start();
    Donc pas besoin on dirait d'un prepare pour lire un fichier audio dans le dossier raw. le onCreate le fait mea culpa.

    Caution: You must either catch or pass IllegalArgumentException and IOException when using setDataSource(), because the file you are referencing might not exist.
    Tu es sur que ton fichier clic marche et est reconnu par Android (le format) ?
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Ben écoute c'est la question que je me pose
    J'ai essayé avec un autre son , utilisé lui pour un tuto que j'ai trouvé mais ça ne change rien. C'est un son .mp3 donc normalement c'est bien reconnu par android non ?

  7. #7
    Expert éminent

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Points : 9 149
    Points
    9 149
    Par défaut
    Si tu créer le media et lance le start directement dans le onClick ca fait quoi ?

    En gros déplacer ton mediaPlayer du onCreate dans le onClick
    Responsable Android de Developpez.com (Twitter et Facebook)
    Besoin d"un article/tutoriel/cours sur Android, consulter la page cours
    N'hésitez pas à consulter la FAQ Android et à poser vos questions sur les forums d'entraide mobile d'Android.

  8. #8
    Futur Membre du Club
    Femme Profil pro
    Inscrit en
    Février 2013
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 9
    Points : 5
    Points
    5
    Par défaut
    Hé ben ... ça marche.
    J'étais pourtant sure d'avoir essayé ça dés le départ , m'enfin le principal c'est que ça fonctionne.

    Merci beaucoup !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Problème pour qu'un utilisateur accède à son espace membre
    Par jojo2010 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 04/12/2010, 12h25
  2. probleme de lecture de DVD mais pas de problème pour les CD !
    Par littlepierre dans le forum Composants
    Réponses: 2
    Dernier message: 02/08/2009, 12h06
  3. Drôle de problème pour lecture certain dvd
    Par eridan26 dans le forum Bubuntu
    Réponses: 4
    Dernier message: 03/01/2009, 19h41
  4. Problème pour la lecture de Flux RSS
    Par cissou06 dans le forum Ruby
    Réponses: 6
    Dernier message: 30/11/2007, 17h18
  5. [PDE] Problème pour obtenir un éditeur en lecture seule
    Par simsky dans le forum Eclipse Platform
    Réponses: 3
    Dernier message: 27/07/2005, 10h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo