请稍侯

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)

}