這有點舊了,但是這篇文章對我有所幫助,並且我想將它更新爲任何未來可能需要它的人。上面貼的代碼是正確的 - 它將通過電話揚聲器播放安靜的音頻,並將其傳送到底部的揚聲器。代碼中有一個小錯字,這就是它出錯的原因。這裏是一個可以解決這個問題的正確片段:創建音頻播放機/錄像機前設置此,右後
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);
請確保您還激活音頻會話:
[[AVAudioSession sharedInstance] setActive:YES error:nil];
最後,如果你將要播放和錄製的同時,您可能還需要設置類別和混音功能。以下是設置類別,啓用混音,將音頻路由到主揚聲器以及激活會話的整個片段。您只需在應用啓動後立即執行此操作。
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:nil];
OSStatus propertySetError = 0;
UInt32 allowMixing = true;
propertySetError = AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryMixWithOthers, sizeof(allowMixing), &allowMixing);
UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker;
AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute,sizeof (audioRouteOverride),&audioRouteOverride);
NSLog(@"Mixing: %x", propertySetError); // This should be 0 or there was an issue somewhere
[[AVAudioSession sharedInstance] setActive:YES error:nil];
希望能幫助別人!
是的,這是必要的,但我明白了。沒有變化:( 函數本身是好的,你可以順便吹麥克風和聽到的聲音,但只有與內部揚聲器 – 2010-06-23 20:48:36