ios - AVAudioPlayer 被 MPMusicPlayerController 中断

标签 ios objective-c swift avaudioplayer

我正在编写一个应用程序,它使用 AVAudioPlayer 播放本地 mp3 文件,并使用 MPMusicPlayerController 播放系统/Apple 音乐/iTunes 音乐。 我正在维护一个自定义的 nowPlayingMP3Item,它是在使用 AVAudioPlayer 播放歌曲后设置的。

我可以检查 MusicController 的播放状态,但如果它从 mp3 更改为系统音乐,我需要重新加载 UI...

有什么方法可以观察(也许是 Audio Session )或其他东西并确定是否正在播放 mp3 或系统音乐并相应地更新 UI?

感谢您的帮助

最佳答案

当出现中断时,音频将暂停,并且您的 Audio Session 将被停用。如果您的应用程序包含播放界面,则需要更新界面。当中断结束时,您可以激活 Audio Session 并恢复音频播放。

NotificationCenter.default.addObserver( forName: .AVAudioSessionInterruption, object: nil, queue: nil) { n in
    let why = AVAudioSessionInterruptionType( rawValue: n.userInfo![ AVAudioSessionInterruptionTypeKey] as! UInt)!
    if why = = .began {
        // began
    }
    else {
        // ended
    }
}

关于ios - AVAudioPlayer 被 MPMusicPlayerController 中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42251525/

相关文章:

ios - 如何以编程方式更改选定的选项卡?

ios - 在 Swift 中使用 OHHTTPStubs 测试请求体

ios - IBoutlet 不适用于 xCode

ios - 单击第一个按钮时启用下一个按钮

iphone - 在 Objective-C 中以编程方式计算 IRR(内部 yield )和 NPV

objective-c - 在 uisplitviewcontroller 中关闭 NavigationController 后如何重新加载 tableView?

ios - 有没有 "tag"通讯员?

swift - PerformSegueWithIdentifier 如果 http POST 请求的参数值正确

ios - 浏览 iOS 中的内置声音

ios - Xamarin iOS 如何使用相同的 ViewController 为 iPad 和 iPhone 制作不同的 xib