0

次のコードは、過去に私のために働いていました。私は今iOS4で運がなくてそれを試しています。シミュレーターで動作していますが、デバイス自体には何も聞こえません。最初にいくつかのサンプルをNSMutableData変数に記録してから、それらを再生しようとします。

私は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);
4

1 に答える 1

0

私が提案できる主なものは次のとおりです。

(1) デバイスがミュートされておらず、音量が上がっていることを確認します

(2) リザルト コードを確認します。例えば:

OSStatus errorCode = AudioQueueNewOutput (...) ;

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

もう少し情報を提供する何か他のもの:

動作しているはずですが、音量を調整してみてください。呼び出し音の音量を調整する場合、AudioQueue が再生されていないか、正しく設定されていません。再生音量を調整する場合、AudioQueue がデータを要求したときにデータを取得していない可能性があります。

記録のために、私はすべてのデバイスの iOS 4 で AudioQueue を使用しているアプリケーションを持っているので、それが機能し、バグではないことを知っています。

我慢してください。AudioQueue は、非常に煩わしい場合があります。

于 2010-07-25T19:56:01.053 に答える