SoundPool을 사용하는 동안 성능 문제가 있습니다. 사운드를 재생할 때마다 프레임 속도가 떨어집니다. 일부 로그를 추가하고 logcat에서 "재생"기능이 8ms 가량 소요될 수 있음을 알 수 있습니다.게임에서 SoundPool을 올바르게 사용하는 방법은 무엇입니까?
나는 *에는 OGG 파일을 사용하고 있습니다와 SoundPool 초기화는 응용 프로그램 시작시 수행됩니다
mAudioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
mSoundPool = new SoundPool(size, AudioManager.STREAM_MUSIC, 0);
mSoundPoolMap = new HashMap<Integer, Integer>();
mSoundPoolMap.put(index, mSoundPool.load(context, R.raw.shot, 1));
내가 (게임 루프 내에서) 다음 코드를 사용하여 사운드를 재생하려면 :
mSoundPool.play(id, streamVolume, streamVolume, 1, loop, 1f);
내 질문은 :
- 나는 게임 루프 이외의 다른 스레드에서 "놀이"를 부를까요?
- 서비스를 통해 "재생"이라고해야합니까?
- 내가 잘못하고 있니?
감사합니다.
업데이트 : 난 그냥 다른 스레드의 사운드를 재생하고, 서비스를 통해 소리를 재생 테스트,하지만 지연이 여전히 존재
.
은 그 때 나는 다음 테스트를했다 : * 1000MS 간격의 소리를 재생 -> 지연은 항상 200 밀리 초 간격의 사운드를 재생 * 을 발생 -> 지연이 결코발생하지 어떻게하는 것이 가능할까요?!? !? 이 테스트가 끝나면 아무 것도 연주하지 않을 때 SoundPool이 재설정되고 다시 재생할 때 초기화하는 데 시간이 오래 걸릴 것 같습니다. 매우 이상합니다!
이상하지만 작동하지 않습니다. 감사! –
이것은 배터리 수명에 어떤 영향을 줍니까? – Phil
특정 주파수에서 사운드를 재생할 때 비슷한 지연 문제가 있습니다. 그러나 나는 해결책을 얻지 못한다. 음소거 된 경우 왜 연주해야합니까? 나는 다른 어떤 소리도들을 수 없었다. –