2010-06-27 3 views
0

Le code suivant utilisé pour travailler pour moi dans le passé. Je l'essaie maintenant avec iOS4 sans chance. Il fonctionne dans le simulateur, mais je n'entends rien sur l'appareil lui-même. Je tente d'abord d'enregistrer quelques échantillons dans une variable NSMutableData, puis j'essaie de les rejouer.AudioQueue et iOS4?

J'ai essayé l'exemple SpeakHere d'Apple - qui fonctionne (mais il lit à partir d'un fichier - pas de mémoire).

Une idée de ce qui me manque?

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); 

Répondre

0

Les principales choses que je peux suggérer, sont:

(1) assurez-vous que l'appareil n'est pas coupé et le volume est en

(2) Vérifiez les codes de résultat. Par exemple:

OSStatus errorCode = AudioQueueNewOutput (...) ; 

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

Quelque chose d'autre qui vous donnerait un peu plus d'informations:

Alors qu'il est censé être en cours d'exécution, essayez de régler le volume. Si le volume de la sonnerie est réglé, la fonction AudioQueue n'est pas en cours de lecture et/ou de configuration. Si le volume de lecture est ajusté, l'AudioQueue ne reçoit probablement pas de données lorsqu'il le demande. Pour l'anecdote, j'ai une application qui utilise l'AudioQueue sur iOS 4 sur tous les appareils, donc je sais que ça fonctionne et ce n'est pas un bug. Keep it it: l'AudioQueue peut être très, très ennuyeux à certains moments.