swift 中 AVAudioSession
10 April 2024
swift 中 AVAudioSession 声音播放设置
func setAudioPlayToPlayback(needMixWithOters: Bool, active: Bool) {
//such as AVAudioSessionCategoryOptionDuckOthers : AVAudioSession.CategoryOptions.duckOthers
Self.setAudioPlayMode(.playback, categoryOptions: (needMixWithOters ? AVAudioSession.CategoryOptions.mixWithOthers : []), active: active)
}
class func setAudioPlayMode(_ mode: LiveAudioPlayMode, categoryOptions: AVAudioSession.CategoryOptions = [],
active: Bool? = nil, activeOptions: AVAudioSession.SetActiveOptions = []) {
switch (mode, active) {
case (.playback, _):
try? AVAudioSession.sharedInstance().setCategory(.playback, mode: .default, options: categoryOptions)
if let active = active {
try? AVAudioSession.sharedInstance().setActive(active, options: activeOptions)
}
case (.default, false):
try? AVAudioSession.sharedInstance().setCategory(.ambient, mode: .default, options: categoryOptions)
try? AVAudioSession.sharedInstance().setActive(false, options: AVAudioSession.SetActiveOptions.notifyOthersOnDeactivation)
case (.default, _):
try? AVAudioSession.sharedInstance().setCategory(.ambient, mode: .default, options: categoryOptions)
if let active = active {
try? AVAudioSession.sharedInstance().setActive(active, options: activeOptions)
}
}
// //others
// try? AVAudioSession.sharedInstance().setCategory(.playback, options: .mixWithOthers)
}
