2009-10-23 70 views
6

在我的應用程序中,我同時錄製和播放音頻。該應用程序即將完成。但有一件事,那讓我討厭。當音頻會話設置爲PlayAndRecord時,與SoloAmbient類別的聲音相比,聲音變得安靜。有什麼方法可以使用PlayAndRecord發出更響亮的聲音?iPhone SDK audioSession問題

回答

7

當您使用會話進行播放和錄製時,會播放出用於手機的揚聲器,否則會播放位於手機底部的揚聲器。這是爲了防止反饋。您可以覆蓋這個像這樣(但要注意的反饋,如果你不這樣做不是一個問題,無論是在一次)

//when the category is play and record the playback comes out of the speaker used for phone conversation to avoid feedback 
    //change this to the normal or default speaker 

    UInt32 doChangeDefaultRoute = 1;   
    AudioSessionSetProperty (kAudioSessionProperty_OverrideCategoryDefaultToSpeaker, sizeof (doChangeDefaultRoute), &doChangeDefaultRoute); 

此代碼的工作3.1.2,早期的SDK的,你需要做的不同。

UInt32 audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker; 
    status = AudioSessionSetProperty (kAudioSessionProperty_OverrideAudioRoute, sizeof (audioRouteOverride), &audioRouteOverride); 

你必須要小心使用此方法,它將覆蓋,即使你有耳機插好,就必須監視中斷並相應地更改路線。現在使用更好3.1.2

-1

要求用戶插入耳機嗎?

耳機+麥克風組合不會遇到這個問題。

我不知道這是一個錯誤,音頻硬件的結果, 或者如果安靜的播放只是一個有意和受到阻礙的獲取更清晰錄音的方式。

UPDATE

我發現設置PlayAndRecord會改變你的音頻路由到接收器。
顯然,用例是用於將用戶手持設備放在耳邊的電話應用程序。

如果這不違反最小驚奇原則,我不知道是什麼。