4
OpenAL을 사용하여 많은 소리를 재생하는 iPhone 응용 프로그램을 만들었습니다. 이 사운드는 mp3에 저장되어 있으며, 메모리 사용량이 적어 (1 백만 개 이상) 매우 강하며 (사운드 당 버퍼 2 개) 스트리밍합니다. 내 SoundManager.m 파일에서openAL 스트리밍 및 중단
//used to disable openAL during a call
void openALInterruptionListener (void *inClientData, UInt32 inInterruptionState)
{
if (inInterruptionState == kAudioSessionBeginInterruption)
{
alcMakeContextCurrent (NULL);
}
}
//used to restore openAL after a call
void restoreOpenAL(void* a_context)
{
alcMakeContextCurrent(a_context);
}
:
OpenALSupport.c 파일에서 : 은이 코드를 사용 중단을 관리하려면
:- (void) restoreOpenAL
{
restoreOpenAL(mContext);
}
//OPENAL initialization
- (bool) initOpenAL
{
// Initialization
mDevice = alcOpenDevice(NULL);
if (mDevice) {
...
// use the device to make a context
mContext=alcCreateContext(mDevice,NULL);
// set my context to the currently active one
alcMakeContextCurrent(mContext);
AudioSessionInitialize (NULL, NULL, openALInterruptionListener, mContext);
NSError *activationError = nil;
[[AVAudioSession sharedInstance] setActive: YES error: &activationError];
NSError *setCategoryError = nil;
[[AVAudioSession sharedInstance] setCategory: AVAudioSessionCategoryAmbient error: &setCategoryError];
...
}
그리고 마지막으로 내 AppDelegate에의
- (void)applicationDidBecomeActive:(UIApplication *)application
{
[[CSoundManager getInstance] restoreOpenAL];
...
}
이 방법을 사용하면 전화를 건 후에 소리가 들리지만 소리가 들리는 것은 pl 무작위로 ayed. 스트리밍 사운드의 중단을 관리하는 특별한 방법이 있습니까? 그것에 관한 기사는 찾을 수 없습니다.
도움 주셔서 감사합니다.
일반적인 생각은 많은 도움이 될 것입니다, 감사합니다. 그러나 position/oldPosition 지정이 사례 중 하나에서 바뀌지 않았습니까? –
지금은 오래된 코드이고 더 이상 사용하지 않습니다. 그러나 나는 어떤 임무도 교환하지 않는다. 네가 원하면 수업 전체를 보낼 수있어. – Klem
아아, 나는 처음에 oldPosition = 위치 지정을 알지 못했습니다. 모두 지금 취소. 감사! –