2017-09-05 1 views
-1

je le code suivant:Arrêt appelé à l'état 1 erreur (-38, 0)

mp = new MediaPlayer(); 
    try { 
     mp.setDataSource(URL); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
     @Override 
     public void onPrepared(MediaPlayer mediaPlayer) { 
      mediaPlayer.start(); 
     } 
    }); 
    mp.prepareAsync(); 

que je fais la chose exacte que je devrais faire pour avoir l'état du lecteur multimédia correctement Pourtant, j'ai toujours l'erreur:

stop called in state 1 error (-38, 0)

Quelqu'un peut-il aider? Merci beaucoup!

Mise à jour: Mon code fonctionne bien avec un lien je l'ai trouvé sur le web, mais il ne peut pas lire mon fichier mp3 sur mon serveur lien par exemple: http://111.blabla/wms/wp-content/upload/audio/mysong.mp3 Utiliser VLC peut lire mon fichier

Répondre

0

Erreur 38 signifie que vous demandez le MediaPlayer de faire quelque chose lorsque dans le mauvais état

Jetez un coup d'oeil au diagramme d'état mediaplayer sur la documentation android

MediaPlayer state diagram

D'après le diagramme, vous devez appeler setDataSource() et prepare() avant d'appeler start().

Probablement quelque chose de mal est arrivé avant. Votre logcat devrait vous orienter dans la bonne direction.

Étant donné que vous recevez le rappel de préparation asynchrone, je suppose que quelque chose ne va pas dans la source de données.

Votre setDataSource ressemble un peu étrange puisque mon expectaion est quelque chose comme

setDataSource(currentConext, url) 

et pas seulement

setDataSource(url) 
+0

Mon programme ne tombe pas en panne et montrent logcat seulement que –

+0

Pouvez-vous fournir votre logcat? vous pouvez également essayer de joindre le ErrorListener, il pourrait vous fournir quelques informations utiles – cristallo