簡體   English   中英

初始化AVAudioSession時保持藍牙聲音

[英]Keep bluetooth sound when initializing AVAudioSession

我快要瘋了。

我有一個錄音應用程序。 我遇到了一個問題,當我打開我的應用程序時,如果我正在藍牙設備上聽音樂,它會自動路由回到手機內置揚聲器。

無論如何,我希望一切都保持不變。 即使我開始錄制,如果用戶正在收聽藍牙音箱上的某些內容,請繼續這樣做。 用戶有耳機嗎? 保持音樂在那里。 請保持原樣。

這就是我目前正在初始化會話的方式:

[[AVAudioSession sharedInstance]
    setCategory:AVAudioSessionCategoryPlayAndRecord
    withOptions:AVAudioSessionCategoryOptionMixWithOthers | AudioSessionCategoryOptionAllowBluetooth
    error: nil];

我允許它播放,錄制,與其他人混音並允許藍牙,那么為什么要將音頻輸出重新路由回內置揚聲器?

謝謝

編輯於5月30日

我設法得到更好的東西,但仍然缺少一些東西。

如果我添加這一行:

[[AVAudioSession sharedInstance] overrideOutputAudioPort:AVAudioSessionPortOverrideNone error:nil];

音樂留在藍牙設備但聽起來很糟糕。

根據這個答案: https//stackoverflow.com/a/18541874/517688這是因為

EnableBluetoothInput會根據此影響輸入和輸出。 還要記住,由於藍牙輸入設備的限制,音頻將以8000 Hz的頻率播放

因此,在使用藍牙設備時,沒有辦法保持一切不變,而不會扭曲聲音?

在iOS 10中,Apple添加了選項AVAudioSessionCategoryOptionAllowBluetoothA2DP 他們還改變了AudioSessionCategoryOptionAllowBluetooth的含義,只允許使用HFP藍牙配置文件進行輸出,這是您獲得低質量音頻輸出的地方。

如果您使用此新選項代替代碼段中的AudioSessionCategoryOptionAllowBluetooth選項,它將允許高質量輸出但不允許低質量音頻輸出。

這是選項的在線文檔,但不幸的是,沒有在線新的iOS 10選項的描述。 您可以在AVAudioSession.h的代碼內文檔中查看更多詳細信息。 https://developer.apple.com/reference/avfoundation/avaudiosessioncategoryoptions?language=objc

不幸的是,我直接從Apple技術支持獲得了這個答案

鑒於當前出貨的系統配置,沒有支持的方法來實現所需的功能。 如果您希望Apple將來考慮添加對此類功能的支持,請通過http://bugreport.apple.com上的Bug Reporter工具提交增強請求。

就是這樣了...

暫無
暫無

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

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