2010-06-04 2 views
2

나는 오프셋 및 길이를 설정할 수 있기를 원했기 때문에 FileDescriptor를 사용하는 SoundPool의로드 기능을 사용해 보았습니다. 파일은 Ressources에 저장되지 않고 저장소 카드에 저장됩니다. SoundPool의로드 나 재생 기능이 Exception을 던지거나 콘솔에 아무 것도 출력하지 않더라도 사운드는 재생되지 않습니다. 동일한 코드를 사용하지만 SoundPool 생성자에서 파일 경로 문자열을 사용하면 완벽하게 작동합니다. 내가 이것을 사용한다면SoundPool.load() 및 FileDescriptor 파일

FileInputStream fileIS = new FileInputStream(new File(mFile)); 
mStreamID = mSoundPool.load(fileIS.getFD(), start, length, 0); 
mPlayingStreamID = mSoundPool.play(mStreamID, 1f, 1f, 1, 0, 1f); 

, 작동 :

mStreamID = mSoundPool.load(mFile, 0); 
mPlayingStreamID = mSoundPool.play(mStreamID, 1f, 1f, 1, 0, 1f); 

내가 (시작은 0과 동일하고 길이가 밀리 초에서 파일의 길이) 로딩을 시도하는 방법이다

어떤 아이디어?

감사

답변

3

은 아마 당신은 이미 알아 냈하지만, 문서를 읽는 것은 그 길이가 바이트하지 밀리 초 아마 보인다. 하나의 바이너리 파일에 여러 사운드를 저장하는 경우 파일 설명자를 전달하면 유용합니다. 이것은 멀티플 중 어떤 사운드가 나오는지 시스템에 알려주고 있음을 의미하지만 단일 사운드로 처리 할 수 ​​있어야한다고 생각합니다. 따라서 여러 웨이브 파일을 연결하여 이진 파일에서 단일 웨이브 파일을 재생하도록 지시하려는 경우이 옵션이 사용됩니다.