2012-03-20 19 views
1

私たちのアプリは、マイクからオーディオ入力を取得するためにremoteIO(オーディオユニット)を使用し、それをリアルタイムでDSPに渡します。私にバッファを与えるコールバック関数があり、私はそれを処理します。再生と録音 - AudioSessionSetProperty ..?

同時に、avAudioPlayerでサウンドを再生する必要があります。

私は私のinitにこの置く:(スピーカーへのルート音を、それを再生してみましょうとレコード)

UInt32 sessionCategory = kAudioSessionCategory_PlayAndRecord; 
     AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(sessionCategory), &sessionCategory); 
     UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker; 
     AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride); 

をその後私は奇妙な何かを見てきました。小さなスピーカーから音が再生されています - あなたの耳を置くために使用するもの、電話で。

それから私はトリックをしました。 私は本当にスピーカーに音をルーティングするために、私は何かを演奏し、同時にこの4行を実行しなければならないことを見ました。 私はそれを1回すると、音はスピーカーに永久に戻るです。 メソッドを呼び出すタイマーでこれを行いました。このメソッドがそれらを実行する瞬間、私はavaudioPlayerでサウンドを再生し、それを修正してスピーカーにサウンドルートを送ります。

いずれかの解決策や説明がありますか? 私は本当にスピーカーで、トリックなしでサウンドを再生する必要があります。

答えて

3

それは永遠に果たしている理由はマイクが音を拾うことでは演奏し、それはあなたができる

-(void)setSpeaker 
{ 
    OSStatus error; 
    UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker; 
    error = AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute, sizeof (audioRouteOverride), &audioRouteOverride); 
    if (error) NSLog(@"Couldn't route audio to speaker"); 
} 

と下のスピーカーに音を強制することができLarsen effect

AKAループに入りますMPVolumeView

を使用して、ユーザーに下部または上部スピーカーを選択するためのUIも表示します
関連する問題