2017-01-09 2 views
1

Je crée une table d'harmonie simple pour jouer des sons lorsqu'un utilisateur clique sur un bouton. Le problème est, si le bouton est assez appuyé (généralement environ 10 fois), il finira par arrêter de jouer et montrer l'erreur E/MediaPlayer: error (1, -19) qu'est-ce que je fais mal? Mon code qui joue le son:E/MediaPlayer: erreur (1, -19)

private void playSound(int soundID){ 
    final MediaPlayer mp = MediaPlayer.create(this,soundID); 
    mp.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
     @Override 
     public void onPrepared(MediaPlayer mediaPlayer) { 
      mp.start(); 

     } 
    }); 
} 
+0

avez-vous mis en œuvre la fonctionnalité de lecture et de pause et également ajouter un bouton cliquez – Pavya

+0

Oui j'ai ajouté un bouton cliquez ceci est juste une méthode de base que je peux utiliser sur chaque bouton. Et je ne sais pas ce que la fonctionnalité play et pause est, donc je ne pense pas que je l'ai mis en œuvre. – CarbonZonda

+0

ok .. dans onPréparé ajouter if (mp! = Null) mp.start(); – Pavya

Répondre

0
private void playSound(int soundID){ 
    final MediaPlayer mp = MediaPlayer.create(this,soundID); 
    mp.start(); 
    mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
     @Override 
     public void onCompletion(MediaPlayer mediaPlayer) { 
      mp.release(); 
     } 
    }); 
} 
0

Vous devez utiliser Soundpool. Il est créé exactement pour jouer de courts effets sonores. Et c'est beaucoup plus simple à utiliser que MediaPlayer. MediaPlayer ne doit être utilisé que pour jouer de la musique normale/volumineuse.

Voir ici par exemple: http://www.vogella.com/tutorials/AndroidMedia/article.html#tutorial-play-sounds-via-soundpool

Note: Pas besoin d'utiliser OnTouch comme dans l'exemple, vous pouvez simplement utiliser onClick pour la simplicité.