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