2010-12-03 3 views
7

나는 동시에 몇 개의 사운드를 재생하려고 시도해 왔습니다. 현재 SoundPool의 공유 인스턴스를 사용하고 있습니다. 1, 2 또는 3 개의 소리를 지연없이 정확하게 연주하고 싶습니다.SoundPool을 사용하여 사운드를 동기화하는 방법

SoundPool.play (...) X를 연속해서 호출 할 때 생각할 수있는대로 소리가 순서대로 재생됩니다. 이 모든 것을 동시에 연주 할 준비를 할 수있는 곳에서 무엇을 얻을 수 있을까요?

도우 코드 : 당신을 도움이 될 내가 한 번에 하나의 사운드 사운드 풀을 수행

SoundPool _soundPool = new SoundPool(10, AudioManager.STREAM_MUSIC, 0); 

_soundPool.load(_context, soundId1, 1); 
_soundPool.load(_context, soundId2, 1); 
_soundPool.load(_context, soundId3, 1); 

_soundPool.play(soundId1, vol, vol, 1, 0, 1f); 
_soundPool.play(soundId2, vol, vol, 1, 0, 1f); 
_soundPool.play(soundId3, vol, vol, 1, 0, 1f); 
+1

관련 : http://stackoverflow.com/q/4350212/116249 – Patrick

+0

@Patrick을, 나는 스레드 접근 방법을 시도하고 처음에 나는이 일을 생각하거나 충분히 때 적어도 가까운 그냥 두 개의 스레드가 있습니다. 그러나 당신이 똑같은 아이디어를 취하고 4 개의 스레드 모두가 똑같은 일을한다고 말하면, 당신은 약간의 지연으로 다시 돌아옵니다. 어쩌면 다음 단계는 소리를 믹싱하는 것입니다 ... 나는 정말로 이걸로 멀리 가고 싶지는 않지만이 시점에서 나는 다른 많은 옵션을 보지 못합니다. – YetAnotherDeveloper

+1

나는 사운드 믹싱이 최선의 방법이라고 생각한다. 제임스가 다른 스레드에 명시된대로 에뮬레이터에서만 전화로 시도 했습니까? 어떤 사운드를 믹스로 사용하는지 알고 있다면 응용 프로그램 수명주기 초반에이를 설정할 수 있습니다. 사운드를 재생할 때 믹스 할 필요가 없으므로 더 나은 사운드를 제공 할 수 있습니다. 흐름. – Patrick

답변