2013-06-13 2 views
4

У меня есть два вопроса, которые я хотел бы понять.звуковой пул не закончил играть весь файл

Я использую soundPool для моих звуковых эффектов и его работы без проблем. Однако, когда я пытаюсь воспроизвести файл cetain (25 секунд, около 400K), он не воспроизводит весь файл всего за 3-4 секунды.

Почему и как я могу это исправить?

и второй вопрос: должен ли я играть каждый эффект из потока? многие темы хороши?

это текущий код:

static void play(final int soundID){ 
    if(loaded){ 
     handler.post(new Runnable() 
     { 
     public void run() 
     { 
      soundpool.play(soundID, 1, 1, 1, 0, 1); 
     } 
     }); 
+0

Проверьте возврат метода 'play'. Из спецификации: 'Возвращает ненулевой streamID в случае успеха, ноль, если не удалось ' – Voicu

+0

return 1. и как я сказал, что он играет ... за 3-4 секунды. –

+0

Да, но это могло быть неудачным после 3-4 секунд игры. Он возвращается через 3-4 секунды или через 25 секунд? – Voicu

ответ

5

Я понимаю, что SoundPool не может быть использована для звуков дольше, чем несколько секунд или аудио файлов> 1 МБ. В этих случаях используйте MediaPlayer.

Либо использовать это для каждой игры звука:

MediaPlayer.create(YourActivity.this, R.raw.your_sound).start(); 

или создать MediaPlayer объект, играть тот же звук, как столько раз, сколько необходимо, затем release() объект.

+0

Mediaplayer can not используется более одного раза без побочных эффектов, в большинстве случаев, ранее медиаплеер был проигнорирован –

Смежные вопросы