2012-05-28 3 views
0

J'ai besoin d'écrire une application Android très simple mais j'ai un sérieux problème.erreurs MediaPlayer

Voici ma classe:

package com.music.playa; 

import java.util.Random; 

import android.app.Activity; 
import android.content.Context; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 

public class PlayMusic extends Activity { 

    MediaPlayer mediaPlayer; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
    } 

    public void playSound() { 

     try { 
      mediaPlayer.stop(); 
      mediaPlayer.reset(); 
      mediaPlayer.release(); 
      mediaPlayer = null;   
     } catch (Exception ex) { 

     } 

     String[] sounds = { "sound1", "sound2", "sound3" }; 
     mediaPlayer = null; 
     int path = getResources().getIdentifier(
       sounds[new Random().nextInt(sounds.length)], "raw", 
       getPackageName()); 
     mediaPlayer = MediaPlayer.create(this, path); 

     mediaPlayer 
       .setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
        public void onCompletion(MediaPlayer mp) { 
         // do something... 
        } 
       }); 

     mediaPlayer.setVolume(1, 1); 
     mediaPlayer.start(); 

    } 

} 

Le problème est que lorsque j'appuie sur le bouton tout le temps d'appeler la fonction PlaySound, puis après un certain temps (environ 40-50 presses du bouton), la console lance beaucoup d'erreurs:

05-28 12:56:00.202: E/MediaPlayer(755): error (-38, 0) 
05-28 12:56:01.153: E/MediaPlayer(755): error (-19, 0) 
05-28 12:56:01.153: E/MediaPlayer(755): Error (-19,0) 

et le son cesse de jouer.

Que dois-je faire?

SDK Android 2.3.3

+0

imprimer votre logcat afin que nous puissions vous aider, nous ne pouvons comprendre quelle est votre erreur, sauf si vous passé l'exception soulevée dans votre logcat et la cause dans logcat Exception ..... causée par. ... –

Répondre

0

Vous devez créer votre instance de lecteur multimédia comme un champ de la classe PlayMedia et avant de initialise définir l'auditeur onClick de votre bouton.

Préparez-le dans onResume() et libérez-le dans onPause(). La seule chose que votre bouton doit faire est d'arrêter/démarrer.