마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

SoundPool 무한 반복 할 때 중간에 틱틱 잡음이 생깁니다..

0 추천
SoundPool을 사용해서 반복 해서 하려고 하는데 사운드가 종료 되고 다시 시작하는 그 중간 텀 때문에

틱틱 잡음이 생기는데 이 중간 텀이 생기지 않게 하는 방법은 없는가요??
안왕초보 (1,390 포인트) 님이 2014년 3월 12일 질문

1개의 답변

+1 추천

SoundID를 활용해보세요.

  (11,920 포인트) 님이 2014년 3월 12일 답변
soundid가 뭔가요??
저도 이 사이트 참조를 했는데 load 부분이 이해가 안되서요. mRecordingFile 있는데 이거 외부에 있는 파일을 불러 들어오는것인가요??
mSoundPool = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
            base_sound = new SoundPool(1, AudioManager.STREAM_MUSIC, 0);
            mSoundPoolId = mSoundPool.load(c, R.raw.porsche_911_gt3_rs_basics, 1);
            baseId = base_sound.load(c, R.raw.porsche_911_gt3_rs_basics, 1);

mSoundPool.play(mSoundPoolId, 1.0f, 1.0f, 0, -1, 1.0f);
            mSoundPool.setOnLoadCompleteListener(new OnLoadCompleteListener() {

                @Override
                public void onLoadComplete(SoundPool soundPool, int sampleId,
                        int status) {
                    // TODO Auto-generated method stub
                    base_sound.play(baseId, 1.0f, 1.0f, 0, -1, 1.0f);

                }
            });
이렇게 하는거 맞나요?? 이렇게 하면 사운드가 두개씩 납니다.
그리고

base_sound.setOnLoadCompleteListener(new OnLoadCompleteListener() {

                @Override
                public void onLoadComplete(SoundPool soundPool, int sampleId,
                        int status) {
                    // TODO Auto-generated method stub
                    base_sound.play(baseId, 1.0f, 1.0f, 0, -1, 1.0f);
                }
            });

이렇게 하면 사운드가 안나오고요...용량도 100KB 미만이고 시간도 1초 밖에 안되는데
http://developer.android.com/reference/android/media/SoundPool.html
load부분 살펴보시면 파라메터 설명이 나옵니다.

간단하게 예를들면
if (로드한적이 있는지 검사) {
//로드한적있다
soundBeep = 해쉬맵에서 가져옴
stopId = soundManager.play(soundBeep, 1f, 1f, 1, 0, 1f);
} else {
//없다
soundBeep = soundManager.load(con, num, 1);
//해쉬맵에 저장
Hash().put(num, soundBeep);
}
저..죄송합니다만...이해가 안되서 ㅜㅜ
1가지 사운드를 계속 반복을 하는건데...기존 자료들을 보니 여러가지 사운드를 낼 때 해쉬맵을 사용하는 것 뿐이라서 ㅜㅜ
여러가지 사운드를 낼때 사용한다라기 보다는
음원을 사용하기위해서는 메로리에 로드해야 하는데 시간이 걸리는거죠
그래서 끊어지는듯한 느낌이 난다고 생각되고요

이걸막기위해서는 자주쓰는 음원을 리리스 하지 않고 보관해두었다가
play하는겁니다.

그리고 해쉬맵이 중요한게 아니라 load 와 play가 중요하다고 생각합니다.
...