soundpool 때문에 몇 일째 고생입니다. ㅠㅠ
저는 외부의 파일(리소스 말고)을 soundpool로 재생하여
속도를 변화시키는 기능이 필요합니다.

리소스에 사운드를 포함시켜서 SoundPool을 쓰면 잘 되는데
직접 path를 사용해서 읽으면 pool.play()에서 0(실패)값이 리턴되네요.

정말 이유를 모르겠습니다.
거의 외국 블로그랑  안드로이드 개발자지원사이트등 다 찾아봤는데
비슷한 고민을 하는 사람은 있지만 해결을 한 사람은 없네요..

혹시 시원하게 해결해주실분 ㅠㅠ 안 계시나요?


String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/snd.3gp";

 pool = new SoundPool(3, AudioManager.STREAM_MUSIC, 0);
  
float streamCurrent = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);  
float streamMax = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);      
int streamVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC); 
float streamVolume = streamCurrent / streamMax; 
    
s[0] = pool.load(path, 0); 
  
ret = pool.play(s[0], streamVolume, streamVolume, 0, 1, 1f); 

    
    
- 여러가지 관련 의견들

 soundPool 라이브러리를 이용해서
WAV 파일 재생시

일반 효과음 사이트에서 받은 WAV 파일은 용량도 작고 잘 재생이 되는 반면에
일반 곰 녹음기에서 녹음한 WAV 파일은 같은 PCM 에 주파수 비트로 설정했는데도 불구하고
출력이 안되는데 이건 무슨 문제인건가요?

아시는 분은 알려주시면 감사해요~~



SoundPool 버퍼 크기 문제 아닐까요? 저도 예전에 wav 파일을 사용하는데  버퍼 문제로

재생이 안되서(특히 2.0인가 2.0.1에서는 SoundPool 버퍼 크기를 줄였다가 다음 버전에 늘였다는 이야기도 본적이 있어요)

ogg로 포맷을 바꾸서 했어요 ^^;

참고로, 우선권이 동일하게 낮은 다수의 스트림이 있는 경우, 가장 오래된 스트림을 정지시킵니다.  새로운 스트림이 현재 액티브한 모든 스트림보다 우선권값이 낮은 경우에는, 새로운 사운드는 연주되지 않고 play()함수는 제로의 streamID를 리턴합니다.  이러한 점을 고려하면, 아이디값과 우선권값을 넣어 주고 싶은 생각이 듭니다.