iPhone AVAudioPlayer停止背景音乐

时间:2009-11-04 09:21:22

标签: iphone audio avaudioplayer

所以我刚注意到在我的iPod Touch上,当我的应用程序触发使用AVAudioPlayer播放的短wav文件时,音乐会暂停。这是正常的吗?

我找不到任何对此的引用,似乎会在某处注意到。有没有办法让我在播放声音的同时保持音乐效果?

3 个答案:

答案 0 :(得分:70)

基本上,为每个应用程序分配一个音频会话,该会话被建模为单例类,您可以在应用程序启动时获取并将参数设置为。我解决同一问题的方法是通过放在applicationDidFinishLaunching的一行代码:

<强>目标-C:

[[AVAudioSession sharedInstance]setCategory:AVAudioSessionCategoryAmbient error:nil];

Swift 2/3:

try! AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient)

答案 1 :(得分:13)

  

注意The AudioSession API has been completely deprecated in iOS 7.0

您无法同时运行AVAudioPlayer和iPod播放器或MPMusicPlayer或MPMoviePlayer,无需多做多少工作。如果您想要简单,请使用Audio Toolbox的System Sounds。

如果你想做一些额外的工作,那么你应该看看Audio Sessions

  

kAudioSessionCategory_UserInterfaceSoundEffects   用于触摸等声音效果   反馈,爆炸等等。

     

相当于   kAudioSessionCategory_AmbientSound   类别,你应该使用   代替。该   kAudioSessionCategory_UserInterfaceSoundEffects   类别在iPhone OS中已弃用   3.0。

     

kAudioSessionCategory_AmbientSound   长时间的声音,如下雨,汽车   发动机噪音,等等。也是   用于“播放”风格的应用程序,   用户演奏的这种虚拟钢琴   超过iPod音频。

     

当您使用此类别时,音频来自   内置应用程序,如   iPod,与您的音频混合。您的   响铃/静音时音频被静音   开关设置为静音或何时   屏幕锁。

答案 2 :(得分:0)

根据您的要求,播放系统声音可能还不够,请查看会话选项,例如: MixWithOthers

struct AVAudioSessionCategoryOptions : OptionSetType {
    init(rawValue rawValue: UInt)
    static var MixWithOthers: AVAudioSessionCategoryOptions { get }
    static var DuckOthers: AVAudioSessionCategoryOptions { get }
    static var AllowBluetooth: AVAudioSessionCategoryOptions { get }
    static var DefaultToSpeaker: AVAudioSessionCategoryOptions { get }
    static var InterruptSpokenAudioAndMixWithOthers: AVAudioSessionCategoryOptions { get }
}

当你开始你的会话时,传递MixWithOthers选项,也许DuckOthers(当你的声音播放时会丢弃ipod音量)是另一种选择。