2010-06-27 7 views
0

Следующий код, используемый для работы в прошлом. Я пробовал это сейчас с iOS4 без везения. Он работает в симуляторе, но я ничего не слышу на самом устройстве. Сначала я попытаюсь записать несколько выборок в переменную NSMutableData, а затем попытаюсь воспроизвести их.AudioQueue и iOS4?

Я пробовал образец SpeakHere от Apple - который работает (но он воспроизводится из файла, а не из памяти).

Любая идея, что мне не хватает?

AudioSessionInitialize(NULL, NULL, NULL, NULL); 
UInt32 sessionCategory = kAudioSessionCategory_PlayAndRecord; 
AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory); 
AudioSessionSetActive(true); 

AudioQueueNewOutput(&m_format,&OutputCallback,self,CFRunLoopGetCurrent(), kCFRunLoopCommonModes,0,&m_device); 
AudioQueueBufferRef nBuffer=NULL; 
AudioQueueAllocateBuffer(m_device,[data length],&nBuffer); 
nBuffer->mAudioDataByteSize=[data length]; 
[data getBytes:(nBuffer->mAudioData) length:(nBuffer->mAudioDataByteSize)]; 
AudioQueueEnqueueBuffer(m_device,nBuffer,0,NULL); 
AudioQueueStart(m_device,NULL); 

ответ

0

Основные вещи, которые я могу предложить являются:

(1) убедитесь, что устройство не отключается, а объем составляет

(2) Проверьте коды результатов. Например:

OSStatus errorCode = AudioQueueNewOutput (...) ; 

if (errorCode) NSLog (@"Error: %u" , errorCode) ; 

Что-то еще, что бы дать вам немного больше информации:

В то время, как предполагается, должен быть запущен, попробуйте отрегулировать громкость. Если он регулирует громкость звонка, AudioQueue не воспроизводится и/или правильно настроен. Если он регулирует громкость воспроизведения, то AudioQueue, вероятно, не получает данные, когда он запрашивает его.

Для записи у меня есть приложение, использующее AudioQueue на iOS 4 на всех устройствах, поэтому я знаю, что это работает, и это не ошибка.

Держите на этом: AudioQueue может быть очень, очень раздражающим время от времени.