iPhone:什么是 MPMusicPlaybackStateInterrupted?它和 MPMusicPlaybackStatePaused 有什么区别

标签 iphone ios mpmusicplayercontroller

我对 MPMusicPlayerControllerplaybackState 属性有一些疑问。

文档中MPMusicPlaybackStateInterruptedMPMusicPlaybackStatePaused定义如下:

MPMusicPlaybackStateInterrupted
音乐播放器已中断,例如来电。

MPMusicPlaybackStatePaused
音乐播放器已暂停。

因为我现在没有 iPhone,所以无法查看来电。
但只有几次我在使用 iPod touch 播放音乐时出现 MPMusicPlaybackStateInterrupted 状态。

(不知道为什么会出现中断状态,没有来电,除了播放音乐外没有其他操作)

在那些时候,MPMusicPlayerController 只是暂停播放音乐。

问题1
MPMusicPlaybackStateInterruptedMPMusicPlaybackStatePaused 有什么区别?

问题2
除了来电之外,MPMusicPlaybackStateInterrupted 什么时候发生?

问题3
当我得到 MPMusicPlaybackStateInterrupted 时我该怎么办?
例如,当我得到 MPMusicPlaybackStatePausedMPMusicPlaybackStateStopped 时,我应该更改播放/暂停按钮。

最佳答案

我用 iOS 5.1.1 确认了以下信息。

问题1
MPMusicPlaybackStateInterruptedMPMusicPlaybackStatePaused 有什么区别?

MPMusicPlaybackStatePaused 在播放器暂停时发生。
MPMusicPlaybackStateInterrupted 当播放器被其他音频输出中断时发生,例如来电或 Apple 的时钟应用程序的计时器。

问题2
除了来电之外,MPMusicPlaybackStateInterrupted 什么时候发生?

MPMusicPlaybackStateInterrupted 当时钟应用程序的计时器响起时发生。
-applicationWillResignActive: 当计时器响起时也会被调用。
但是MPMusicPlaybackStatePaused不会发生,并且在中断(定时器的闹钟)结束后自动恢复播放音乐。

其他中断示例包括 Siri/语音控制(按住主屏幕按钮)、耳机远程控制(如果您使用 applicationMusicPlayer)、来电。
按下耳机 Remote 的播放按钮不会使应用程序退出事件状态。中断永远不会结束。

MPMusicPlaybackStateInterrupted 不会发生,当通知横幅出现在屏幕顶部时播放状态不会改变。
VoiceOver 也不会产生中断。

问题3
当我得到 MPMusicPlaybackStateInterrupted 时我该怎么办?
例如,当我得到 MPMusicPlaybackStatePausedMPMusicPlaybackStateStopped 时,我应该更改播放/暂停按钮。

MPMusicPlaybackStateInterrupted 发生时,您无需在 MPMusicPlayerControllerPlaybackStateDidChangeNotification 的回调中执行任何操作。
因为播放音乐中断后会自动恢复。

编辑
我发现不经常播放的音乐不会自动恢复。(这意味着你不能依赖自动恢复。)

并且在以下情况下不会自动恢复播放音乐。

  • 当耳机的遥控按钮被按下时。 (如果你使用 applicationMusicPlayer)

  • 当计时器响起时,您双击主页按钮,切换应用程序,停止计时器,然后切换回应用程序。

  • 当您接听来电后在通话中切换回应用程序时。

关于iPhone:什么是 MPMusicPlaybackStateInterrupted?它和 MPMusicPlaybackStatePaused 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11537321/

相关文章:

ios - 从 ViewController 转到 TabBarController 的第一个选项卡

ios - Bolt-Swift : error handling

ios - NSBundle.mainBundle() 返回 nil

ios - MPMusicPlayerController 是否更新播放计数?

iphone - 如何在iPhone sdk中控制音乐的低音?

iOS7 MPMusicPlayerController 状态不正确

ios - 在 Swift 中识别 iPhone UID 的最佳方法是什么?

ios - UITableview在每行出现之前无法平滑滚动?

iphone - 试图复制 iPhone 键盘按钮

ios - 如何动态设置tableview单元格高度?