2013-11-23 2 views
1

Im пытается играть 3 миди файлов (200Кб каждый) одновременно после загрузки их в Soundpool. После команды воспроизведения выгрузить каждый поток и освободить soundPool.I установить громкость на 1 и телефон Isnt молчание. (Извините за язык). Нет ни разданок, ни чего-либо.Soundpool не делает звук в андроид

Что мне делать? ТНХ заранее

soundPool = new SoundPool(3, AudioManager.STREAM_MUSIC, 0); 
soundPool.play(sound_id1, leftVolume, rightVolume, 1, 0, rate); 
soundPool.play(sound_id2, leftVolume, rightVolume, 1, 0, rate); 
soundPool.play(sound_id3, leftVolume, rightVolume, 1, 0, rate); 
soundPool.unload(stream_id1); 
soundPool.unload(stream_id2); 
soundPool.unload(stream_id3); 
soundPool.release(); 

EDIT: Когда Im в режиме отладки и перейти в команду играть он прекрасно работает. Пытался добавить OnLoadCompleteListener еще ничего.

+0

Убедитесь, что вы позволяете достаточно времени для аудио загрузки, и что он действительно загружается правильно. Используйте SoundPool.setOnLoadCompleteListener для этого. –

+0

@MikeM. см. мой комментарий к редакции. –

+0

Прокомментируйте выгрузку и выпустите заявления и попробуйте. –

ответ

0

Вместо выгрузки звуковых ресурсов и немедленно освободив объект Soundpool после игры, создать Runnable для выполнения этих задач, и отправить его с задержкой на Handler. Объявляем следующее:

final Handler handler = new Handler(); 
Runnable delayedUnload = new Runnable() 
{ 
    @Override 
    public void run() 
    { 
     soundPool.unload(sound_id1); 
     soundPool.unload(sound_id2); 
     soundPool.unload(sound_id3); 
     soundPool.release(); 
    } 
}; 

Затем выкладываю Runnable после того как вы сыграли звуковые ресурсы:

soundPool = new SoundPool(3, AudioManager.STREAM_MUSIC, 0); 
soundPool.play(sound_id1, leftVolume, rightVolume, 1, 0, rate); 
soundPool.play(sound_id2, leftVolume, rightVolume, 1, 0, rate); 
soundPool.play(sound_id3, leftVolume, rightVolume, 1, 0, rate); 

handler.postDelayed(delayedUnload, 5 * 1000); 

Второй параметр в postDelayed() является задержка в миллисекундах; в этом случае задержка составляет 5 секунд. SoundPool не предоставляет способ определить, когда звук закончил воспроизведение, поэтому вам необходимо соответствующим образом отрегулировать задержку.

+0

thx я попробую :) –

+0

Прохладный. Лемм знает, работает ли он на ya, @LeonNicetomeetya. –

+0

Где бы вы разместили обработчик? –

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