我正在制作一个相当基本的应用程序,并且一直在探索使用AVAudioPlayer在我的应用程序中播放声音,但我遇到的问题是,即使设备处于静音状态,它也能播放声音。这是我正在使用的代码:
var audioPlayer = AVAudioPlayer()
然后在View中加载:
AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil)
AVAudioSession.sharedInstance().setActive(true, error: nil)
var error:NSError?
var beepOne = NSURL(fileURLWithPath: NSBundle.mainBundle().pathForResource("menu", ofType: "wav")!)
audioPlayer = AVAudioPlayer(contentsOfURL: beepOne, error: &error)
audioPlayer.prepareToPlay()
播放声音时:
audioPlayer.play()
当设备处于静音状态或切换为静音时,我需要做些什么才能停止播放声音?也许在audioPlayer.play()
if语句之前检测设备是否处于静默状态?
答案 0 :(得分:17)
在第二行和第三行代码中找到了错误:
AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil)
AVAudioSession.sharedInstance().setActive(true, error: nil)
我必须将AVAudioSessionCategoryPlayback
更改为AVAudioSessionCategoryAmbient
希望这有助于其他可能遇到同样问题的人:)
答案 1 :(得分:1)
我想使用swift 2.0添加一个需要try / catch错误处理的解决方案。关于这个here,有一篇很棒的文章。
let audioSession = AVAudioSession.sharedInstance()
do {
try audioSession.setCategory(AVAudioSessionCategoryAmbient, withOptions: .DuckOthers)
} catch {
print("AVAudioSession cannot be set")
}
这篇文章是为了在手机静音时使音频播放静音。我想反过来做,如果用AVAudioSessionCategoryPlayback替换上面的AVAudioSessionCategoryAmbient,即使手机静音,你的音频也会播放。