2010-04-01 60 views
1

我有一個應用程序,用戶可以在其中錄製聲音並在揚聲器或耳機中播放聲音。將音頻傳送我以下列方式設置kAudioSessionProperty_OverrideAudioRoute:iPhone SDK:設置音頻路線並在靜音開關打開時也將音頻靜音

if(loudSpeakerOn) { 
    audioRouteOverride = kAudioSessionOverrideAudioRoute_Speaker; 
} 
else { 
    audioRouteOverride = kAudioSessionOverrideAudioRoute_None; 
} 
AudioSessionSetProperty(kAudioSessionProperty_OverrideAudioRoute, sizeof(audioRouteOverride), &audioRouteOverride); 

我還應該確保,當用戶接通/斷開靜音/震動開關的聲音應該靜音/取消靜音。爲此我設置以下屬性

SInt32 ambient = kAudioSessionCategory_AmbientSound; 
if (AudioSessionSetProperty (kAudioSessionProperty_AudioCategory, sizeof(ambient), &ambient)) { 
    NSLog(@"*** Error *** could not set Session property to ambient."); 
} 

現在,問題是當我設置Ambient屬性,音頻路由和音頻錄製停止工作。

我怎樣才能讓所有這些一起工作?

謝謝!

回答

0

你有工作嗎?我相信設置音頻會話類別環境將禁止錄音。如果您需要同時錄製和播放音頻,請改爲使用kAudioSessionCategory_PlayAndRecord,否則在需要它們時在它們之間來回切換。同樣設置類別可能會重新初始化路由,因此您可能需要在設置類別後重新設置。