代码之家  ›  专栏  ›  技术社区  ›  Kenny Winker

iPhone avaudioplayer停止背景音乐

  •  16
  • Kenny Winker  · 技术社区  · 15 年前

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

    我找不到任何关于这个的参考资料,而且它似乎会在某个地方被注意到。有没有办法让音乐在我播放声音的时候继续播放?

    3 回复  |  直到 6 年前
        1
  •  12
  •   Richard Stelling    9 年前

    注释 : The AudioSession API has been completely deprecated in iOS 7.0

    如果不做更多的工作,就不能同时运行avaudioplayer和ipod播放器或mpmusic播放器或mpmovieplayer。如果你想要简单,那么使用音频工具箱的系统声音。

    如果你想做些额外的工作,那么你应该看看 Audio Sessions 以下内容:

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

    相当于 kAudioSessionCategory_AmbientSound 类别,应使用 相反。这个 KaudioSessionCategory用户界面不受影响 类别在iPhone OS中已弃用 3。

    KaudioSessionCategory环境声音 为了 长时间的声音,如雨声、汽车声 发动机噪音等。它也是 对于_沿_样式应用程序播放, 用户弹奏的虚拟钢琴 通过iPod音频。

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

        2
  •  70
  •   chengsam Luis    7 年前

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

    ObjultC:

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

    斯威夫特2/3:

    try! AVAudioSession.sharedInstance().setCategory(AVAudioSessionCategoryAmbient)
    
        3
  •  0
  •   some_id    9 年前

    根据您的要求,播放系统声音可能不够,请查看会话选项,例如与其他人混合。

    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音量)是另一个选项。