[英]Why would different bluetooth speakers behave differently with respect to AVAudioSession (IOS)
我有一個播放音頻的應用程序。
我試圖在發布應用程序之前照顧好所有“邊緣情況”。
如您所知...播放音頻的應用程序需要告訴IOS系統它們打算如何工作。 他們的音頻會中斷其他應用程序嗎? 它們是否與其他應用程序混合? 等等等
因此,該應用程序需要正確設置其AVAudioSession代碼...根據蘋果的文檔,我這樣做了:
import UIKit
import AVFoundation
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
let audioSession = AVAudioSession.sharedInstance()
do {
try audioSession.setCategory(AVAudioSessionCategoryPlayback)
} catch {
print("Setting category to AVAudioSessionCategoryPlayback failed.")
}
do {
try audioSession.setActive(true)
} catch {
print("Setting AudioSession active failed.")
}
// Other project setup
return true
}
}
想象以下測試:
1)打開藍牙並連接到藍牙揚聲器。
2)加載一個在后台播放音頻的知名應用,例如Spotify。 播放歌曲/音頻並將其作為背景。
3)當APP B的音頻仍在播放時,加載APP A(我的應用程序)並按三個按鈕中的任何一個。
那么...執行第3步后,會發生什么?
好吧,這取決於您使用的是什么...例如:
如果您僅使用電話揚聲器(而不是外部藍牙揚聲器),則一切正常。
例如,如果您使用的是ION Tailgater iPA77藍牙揚聲器,一切都會按預期運行。
但是,例如,如果您使用的是MTX MUDHSB-B藍牙揚聲器,則按三個按鈕中的任何一個都不會發生...直到繼續等待和/或按按鈕看似任意的時間(大約30秒)...,然后聲音就會開始傳出並正常運轉。
一個藍牙揚聲器的行為與另一個藍牙揚聲器的行為有何不同(大概在AVAudioSession方面)? 藍牙是藍牙吧? 我猜不會。 誰能闡明這一點?
謝謝。
聽起來好像是揚聲器出現問題...您是否使用2個非您自己的應用嘗試了相同的情況? 例如Spotify和Apple Music?
您需要將AVAudioSessionCategoryOption
清除為AVAudioSessionCategoryOptionMixWithOthers
如果您查看文檔 ,則在底部看到以下內容:
如果清除此選項,則激活會話會中斷其他音頻會話。 如果設置此選項,則您的應用程序的音頻會與在后台應用程序(例如“音樂”應用程序)中播放的音頻混合在一起。
根據您的代碼,另一種選擇是您在設置類別后不激活音頻會話:
audioSession.setActive(true)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.