2010-06-27 23 views
0

以下代码曾用于为我工作。我现在用iOS4尝试它没有运气。它在模拟器中工作,但我没有听到任何设备本身。我首先尝试将少量样本记录到NSMutableData变量中,然后尝试播放它们。AudioQueue和iOS4?

我试过了Apple的SpeakHere示例 - 它可以工作(但是从文件播放 - 不是内存)。

任何想法我错过了什么?

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在请求时可能无法获取数据。

为了记录,我有一个应用程序在所有设备上使用iOS 4上的AudioQueue,所以我知道它的工作原理,它不是一个错误。

保持它:AudioQueue有时会非常非常烦人。