MediaPlayer: impossible d'ouvrir le fichier sur le côté client; Erreur(-38,0) et plus
Je suis en train d'apprendre Android et j'ai créé une activité qui a deux boutons:Un ToggleButton(lecture/Pause) et un Bouton(Suivant). J'ai deux chansons qui voudrait être recyclés sur le bouton Next. J'ai un tableau
int [] songs={R.raw.song1,R.raw.song2};
J'ai changé le onClick dans mon Activité. La première chanson joue bien; mais après avoir cliqué sur Suivant, j'obtiens les erreurs suivantes:
impossible d'ouvrir le fichier sur le côté client, en essayant côté serveur
E/MediaPlayer(3107): démarrer appelé dans l'état 4
E/MediaPlayer(3107): erreur (-38, 0)
E/MediaPlayer(3107): Erreur (-38,0)
E/MediaPlayer(3107): erreur (1, -2147483648)
E/MediaPlayer(3107): Erreur (1,-2147483648)
Dans onCreate(Bundle...),
if(mp!=null) mp.release();
mp=MediaPlayer.create(this, songs[count]);
Voici mon onClick(View v) méthode:
public void onClick(View view) {
Log.v(TAG,"ID:"+view.getId());
switch (view.getId()) {
case R.id.playerbutton: //ToggleButton
if(state==0) {
mp.start();
state=1;
}
else if(state==1) {
state=0;
mp.pause();
}
break;
case R.id.next: //Next button
Log.v(TAG,"Next button pressed!");
count=(count+1)%2; //Have only two songs
mp.reset();
try {
mp.setDataSource(this, Uri.parse("android.resource://com.example.myfirstapp"+songs[count]));
mp.setOnPreparedListener(this);
mp.prepareAsync();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
mp.start();
break;
}
}
En gros, je suis en train de faire ce pour chaque pression sur le bouton Suivant:
-réinitialiser mp (c'est à dire le MediaPlayer de l'objet)
-définir une nouvelle source de données pour jouer la chanson suivante
-démarrer mp
Comme pour l'utilisation de setOnPreparedListener
ou prepareAsync
, j'ai lu cette SORTE de question.
Où vais-je tort?
OriginalL'auteur Kedar Paranjape | 2013-07-25
Vous devez vous connecter pour publier un commentaire.
Je crois que vous êtes le réglage de la source de données de mal.
Le modifier:
Avis de la barre oblique après le nom du paquet.
prepareAsync
avecprepare()
depuis que je suis en train de jouer à partir d'un fichier (pas un cours d'eau). Merci!!OriginalL'auteur Ken Wolf