Swift - 当设备处于静音状态时 AVAudioPlayer 是否仍在播放声音?
Swift - AVAudioPlayer still playing sound when device is on silent?
我正在制作一个相当基本的应用程序,并且一直在探索使用 AVAudioPlayer 在我的应用程序中播放声音,但我遇到了一个问题,即使设备处于静音状态,它也会播放声音。这是我使用的代码:
var audioPlayer = AVAudioPlayer()
然后在视图中加载:
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 语句之前?
发现问题所在,在第二行和第三行代码中:
AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil)
AVAudioSession.sharedInstance().setActive(true, error: nil)
我不得不将 AVAudioSessionCategoryPlayback
更改为 AVAudioSessionCategoryAmbient
希望这对可能遇到同样问题的其他人有所帮助:)
我想添加一个使用 swift 2.0 的解决方案,它需要 try/catch 错误处理。 here.
上有一篇很棒的文章
let audioSession = AVAudioSession.sharedInstance()
do {
try audioSession.setCategory(AVAudioSessionCategoryAmbient, withOptions: .DuckOthers)
} catch {
print("AVAudioSession cannot be set")
}
此 post 是为了在 phone 静音时使音频播放静音。我想做相反的事情,实际上,如果您将上面的 AVAudioSessionCategoryAmbient 替换为 AVAudioSessionCategoryPlayback,即使 phone 静音,您的音频也会播放。
我正在制作一个相当基本的应用程序,并且一直在探索使用 AVAudioPlayer 在我的应用程序中播放声音,但我遇到了一个问题,即使设备处于静音状态,它也会播放声音。这是我使用的代码:
var audioPlayer = AVAudioPlayer()
然后在视图中加载:
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 语句之前?
发现问题所在,在第二行和第三行代码中:
AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryPlayback, error: nil)
AVAudioSession.sharedInstance().setActive(true, error: nil)
我不得不将 AVAudioSessionCategoryPlayback
更改为 AVAudioSessionCategoryAmbient
希望这对可能遇到同样问题的其他人有所帮助:)
我想添加一个使用 swift 2.0 的解决方案,它需要 try/catch 错误处理。 here.
上有一篇很棒的文章 let audioSession = AVAudioSession.sharedInstance()
do {
try audioSession.setCategory(AVAudioSessionCategoryAmbient, withOptions: .DuckOthers)
} catch {
print("AVAudioSession cannot be set")
}
此 post 是为了在 phone 静音时使音频播放静音。我想做相反的事情,实际上,如果您将上面的 AVAudioSessionCategoryAmbient 替换为 AVAudioSessionCategoryPlayback,即使 phone 静音,您的音频也会播放。