簡體   English   中英

AVAudioSession 不會自動連接藍牙 A2DP 音頻?

[英]AVAudioSession does not automatically connect to Bluetooth A2DP audio?

描述:

當我改變我的AudioSession.playAndRecord通過以下電話:

AVAudioSession.sharedInstance().setCategory(.playAndRecord, mode: .default, options: [.defaultToSpeaker, .allowBluetoothA2DP, .mixWithOthers])

從這些類別選項設置中,我希望,一旦我將藍牙耳機與手機配對,我正在運行的應用程序應該會自動將音頻路由到我的藍牙 A2DP 耳機。 相反,我的應用程序仍然選擇使用手機揚聲器。 無論是查詢音頻會話實例還是以路由更改通知的形式,都沒有任何跡象表明我已連接藍牙耳機。

問:如何確保音頻會話自動連接到藍牙耳機?

這種行為顯然與不正確的代碼行無關。 就像我在調用音頻會話類別更改之前配對了藍牙耳機一樣,我的音頻將正確地繼續使用藍牙耳機。

此外,如果我在代碼調用期間使用.allowBluetooth類別選項(用於 HFP 而不是 A2DP),然后配對藍牙耳機,耳機會自動連接就好了。 行為再現:配備 Apple AirPods Pro 的 iPhone XR (iOS 13.6.1) 配備 Senso 無線 44.1kHz 藍牙耳機的 iPhone XR (iOS 13.6)。

繁殖步驟:

為了 Apple 工程師的簡單性和可重復性,我在WWDCAVEchoTouch 演示代碼的輕微修改版本上重現了該問題。 由於這是 Apple 發布的演示項目,因此所有代碼都是正確的。 我修改后的項目,稱為BluetoothIssue ,可以在這里找到。

第 1 步:確保您的藍牙耳機當前未與 iPhone 配對。

第 2 步:啟動“BluetoothIssue App”。 當您切換“FX Out”或“Speech Out”切換時,應用程序應該正在播放聲音(從 iPhone 揚聲器中)

第 3 步:現在將藍牙耳機連接到手機。 即使耳機現在已連接並與手機配對,該應用程序也不會注冊連接,並繼續通過手機內置揚聲器播放。

// 步驟 4-5(可選):查看應用程序類別本身沒有問題

第 4 步:現在強制關閉“BluetoothIssue”應用程序,同時您的耳機仍處於連接狀態。

第 5 步:現在重新啟動“BluetoothIssue”應用程序。 該應用程序將聲音正確播放到藍牙耳機。

我了解到,如果我將模式設置為 VideoRecording,如果我打開藍牙,iOS 將更改路由(並且我收到路由更改通知)。 如果沒有這種模式,我必須同時允許兩個藍牙,在檢測到一個之后,在沒有 AllowBluetooth 的情況下再次更改類別,只是 A2DP。 奇怪而緩慢的解決方案,但有效。 現在我只是使用錄像模式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM