У меня есть пианино приложение работает с этим методом:Media Player с выпуском несколько mp3 файлов
public void play(String note) {
score++;
score();
try {
mp = MediaPlayer.create(this, getResources().getIdentifier(note, "raw", getPackageName()));
mp.start();
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer media) {
media.release();
}
});
} catch (Exception e) {
Log.e("Error", "error playing file : " + note + "\n" + e);
}
}
Вопрос заключается в том, что, если нажать клавиши слишком быстро, и несколько раз я получаю ошибки, как это:
E/MediaPlayer: error (1, -19)
Эти ошибки возникают, когда я продолжаю играть. Но когда я удаляю приложение, что-то кажется сбрасываемым, и я получаю меньше ошибок ... Почему это происходит и есть ли решение для него?
Спасибо за ваш ответ Дорон, но я уже пробовал Soundpool в этом виде приложения и одной ноты «убивает» следующее, так что вы не можете услышать предыдущий звук до конца ... во всяком случае, я добавил разрешение на мой манифест и кажется, что он работает лучше до сих пор ... – glassraven
SoundPool может воспроизводить несколько пар одновременно (посмотрите на setMaxStreams()), Я предполагаю, что вы инициализировали его только с max steams = 1. Я все еще думаю, что это, вероятно, лучший вариант для вас с точки зрения производительности, так как вам не нужно загружать заметку, прежде чем играть в нее. –
Хорошо, догадайтесь, что вы правы, но я нахожусь в плотном графике ... Думаю, в следующий раз я попробую soundpool – glassraven