2017-01-09 9 views
1

Я создаю простую звуковую плату для воспроизведения звуков, когда пользователь нажимает кнопку. Проблема в том, что если кнопка нажата достаточно (обычно около 10 раз), она в конечном итоге перестанет играть и покажет ошибку E/MediaPlayer: error (1, -19) что я делаю неправильно? Мой код, который воспроизводит звук:E/MediaPlayer: error (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

Вы внедрили функции воспроизведения и паузы, а также добавили кнопку « – Pavya

+0

». Да, я добавил кнопку «Щелчок», это всего лишь базовый метод, который я могу использовать на каждой кнопке. И я не знаю, что такое функция воспроизведения и паузы, поэтому я не думаю, что я ее реализовал. – CarbonZonda

+0

ok .. in onPrepared add if (mp! = Null) mp.start(); – Pavya

ответ

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

Вы должны использовать Soundpool. Он создан именно для воспроизведения коротких звуковых эффектов. И это намного проще, чем MediaPlayer. MediaPlayer следует использовать только для воспроизведения обычной/большой музыки.

Смотрите здесь, например: http://www.vogella.com/tutorials/AndroidMedia/article.html#tutorial-play-sounds-via-soundpool

Примечание: Нет необходимости использовать onTouch как в примере, вы можете просто использовать OnClick для простоты.