2012-10-30 48 views
12

我遇到了以下問題:AVAudioSessionCategoryPlayAndRecord使得AirPlay的無形

[[AVAudioSession sharedInstance] 
     setCategory: AVAudioSessionCategoryPlayAndRecord 
     error: &setCategoryError]; 

此調用使得AirPlay的消失和重路由:每當我設置播放和記錄類在我的應用程序中的音頻會話的AirPlay變得不可用立即向揚聲器發送音頻。

該問題可以很容易地重現,例如,在Xcode文檔中的示例項目avTouch中,將AVAudioSessionCategoryPlayback類別替換爲AVAudioSessionCategoryPlayAndRecord:在原始示例中,AirPlay拾取器可見並允許更改輸出源,而使用AVAudioSessionCategoryPlayAndRecord類別時,拾取器會消失。

是否有正確的方法切換到AVAudioSessionCategoryPlayAndRecord類別,以便AirPlay仍然可用?

(像這樣的問題,一直是already asked,但沒有得到任何答覆。)

+0

可能您可能需要嘗試使用一些私有API。無論如何檢查這是否有幫助。 http://spin.atomicobject.com/2012/04/23/ios-mirroring-and-programmatic-airplay-selection/他們提到一些私人apis。 – iDev

+1

@ACB:謝謝!我看了上面提到的文章,但正如你所說,他們正在使用私有的API,我不能使用它,因爲我工作的項目是通過App Store分發的。 – Anastasia

+0

@Anastasia你有解決方案嗎?我面臨同樣的問題與你。謝謝 – Jacky

回答

-1

好,AirPlay的和PlayAndRecord類別只是不兼容。 這就是我從蘋果論壇學到的東西。

爲什麼當音頻輸出發生在別的地方時,您需要設備上的音頻輸入?

+1

應用程序播放視頻流(可能通過AirPlay輸出聲音)並同時記錄所述流。說得通? – Anastasia

+0

問題是,音頻按照插入式耳機的預期工作,所以我自然假設AirPlay連接的耳機應該以相同的方式工作。 – Anastasia

+0

-1:有很多原因可能導致你需要它。我的一位客戶希望使用我的音頻監控軟件通過播放音頻播放音頻,然後監控iPhone記錄的內容(在測量模式下)來執行房間響應檢查。所以煩人的蘋果完全阻止了這一點。 – Goz

0

我認爲你應該在下面的代碼中加上AVAudioSession。我希望它能起作用。

NSError *setCategoryError = nil; 
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error: &setCategoryError]; 

if (setCategoryError) { 
    // Handle error 
} 
1

您試圖使用哪種AirPlay設備?它有麥克風嗎?

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

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