【发布时间】:2019-03-08 15:18:13
【问题描述】:
我在 cat 日志中多次收到此消息:
[avas] AVAudioSessionPortImpl.mm:56:ValidateRequiredFields: Unknown selected data source for Port Speaker (type: Speaker)
我正在使用此代码播放背景音乐:
let path = Bundle.main.path(forResource: fileName, ofType:"mp3")!
let url = URL(fileURLWithPath: path)
do {
let sound = try AVAudioPlayer(contentsOf: url)
self.player = sound
sound.prepareToPlay()
sound.volume = 0.05
sound.numberOfLoops = loops
sound.play()
} catch {
print("[PLAY SOUND][DELEGATE] error loading file -> \(fileName)")
}
我做了一个研究,发现了类似的问题,所以我在 viewdidload 中添加了音频类别:
do {
try AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, mode: AVAudioSessionModeDefault)
try AVAudioSession.sharedInstance().setActive(true)
} catch {
print(error)
}
添加上述代码后,即使手机处于静音模式,也会播放背景音乐! Unknown selected data source for Port Speaker (type: Speaker) 的调试器消息仍在显示
【问题讨论】:
-
在设备处于静音或切换到静音状态时停止播放声音,将 AVAudioSessionCategoryPlayback 更改为 AVAudioSessionCategoryAmbient