2012-07-03 44 views
33

我的應用程序使用麥克風並輸出音頻,因此我將音頻會話設置爲播放和錄製類別,但這似乎禁用了Airplay。如果將類別設置爲Play,則Airplay可以很好地處理我的輸出(但顯然輸入不起作用)。AVAudioSessionCategoryPlayAndRecord與Airplay

我試着重寫輸出路由到揚聲器,以防萬一它需要通過Airplay輸出,但沒有喜悅。

任何想法?

+0

我們可以在設置音頻會話的位置看到代碼嗎? –

回答

0

如果您想更改音頻的播放位置,您需要調用AudioSessionSetProperty並將常數傳遞給您,以指定您想要音頻的位置。這些常量是

kAudioSessionOverrideAudioRoute_None,指定您希望的音頻被路由到接收方(單曲,如果這就是它是怎麼回事),或

kAudioSessionOverrideAudioRoute_Speaker,它指定了音頻應該被路由到揚聲器在電話的底部。

0

你可以試試這個代碼

// Set AVAudioSession 
NSError *sessionError = nil; 
[[AVAudioSession sharedInstance] setDelegate:self]; 
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayAndRecord error:&sessionError]; 

// Change the default output audio route 
UInt32 doChangeDefaultRoute = 1; 
AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryDefaultToSpeaker, 
    sizeof(doChangeDefaultRoute), &doChangeDefaultRoute); 
+0

AudioSessionSetProperty已棄用 – mark

3

什麼AirPlay的設備是你想使用?它有麥克風嗎?

如果不是,則使用PlayAndRecord類別時,iOS不會將其作爲選項顯示,因爲該設備無法播放記錄。它會在使用Play類別時顯示。

此外,如果您使用的設備是藍牙設備,是否將AVAudioSessionCategoryOptionAllowBluetooth設置爲YES?

+0

這是正確的答案。 – mark

0

從音頻會話編程指南>與分類>Choosing Categories and Modes for AirPlay工作:

只有特定的類別和模式支持AirPlay的。以下類別支持的Airplay兩者的鏡像和非鏡像版本:

  • AVAudioSessionCategorySoloAmbient
  • AVAudioSessionCategoryAmbient
  • AVAudioSessionCategoryPlayback

AVAudioSessionCategoryPlayAndRecord類別僅支持鏡像的Airplay。