MPNowPlayingInfoCenter 始终处于播放状态
Posted
技术标签:
【中文标题】MPNowPlayingInfoCenter 始终处于播放状态【英文标题】:MPNowPlayingInfoCenter always in playing state 【发布时间】:2014-06-28 07:01:36 【问题描述】:我的 MPNowPlayingInfoCenter 已启动并正在运行,但仍有一个问题。 无论我的实际播放器状态如何,MPNowPlayingInfoCenter 始终在“播放”并显示暂停按钮。按下时会触发暂停事件。
当我的播放器更改状态时,例如暂停,我通过 MPNowPlayingInfoPropertyPlaybackRate 键更新 MPNowPlayingInfoCenter。
还有其他方法可以将 MPNowPlayingInfoCenter 状态设置为暂停吗?
感谢任何提示!
【问题讨论】:
【参考方案1】:试试这个:
NSMutableDictionary *currentlyPlayingTrackInfo = [NSMutableDictionary dictionaryWithCapacity:7];
currentlyPlayingTrackInfo[MPNowPlayingInfoPropertyElapsedPlaybackTime] = @((Float64)[player currentTime]);
if (!SYSTEM_VERSION_OF_DEVICE_LESS_THAN(@"7.0"))
currentlyPlayingTrackInfo[MPNowPlayingInfoPropertyPlaybackRate] = [NSNumber numberWithDouble:_isHere == NO?1:0];
else
currentlyPlayingTrackInfo[MPNowPlayingInfoPropertyPlaybackRate] = [NSNumber numberWithDouble:1];
[[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:currentlyPlayingTrackInfo];
【讨论】:
抱歉回复晚了。我在使用您的代码时遇到问题。 _isHere 变量是什么(当前播放器状态?)以及为什么版本 我认为设置MPNowPlayingInfoPropertyPlaybackRate
是正确的,但解决这个问题肯定还有更多。【参考方案2】:
发现问题在于,当我包含的媒体播放器通过 nowplayingcenter 控制时正在播放第二个音频输出源时,它以某种方式忽略了我手动设置的播放速率并检测到音频播放。
所以我的解决方案是暂停第二个音频。在我的情况下,这是可能的,但当第二个音频对应用程序至关重要时,我不知道如何克服这个问题。 我很乐意接受任何能更优雅地解决这个问题的答案。
【讨论】:
我遇到了类似的问题。所以我有一个 FeedViewController 有很多视频,但它不播放一直在播放的音频。如果您在 FeedViewController 中选择其中一个视频,则会出现一个 PlayerViewController 并播放带有音频的完整视频。我注意到如果在进入 PlayerViewController 之前我没有暂停 FeedViewController 中的每个视频,那么“播放/暂停”按钮将不会相应地更新。在我的情况下,您认为有没有一种方法可以在不暂停 PlayerViewController 内的视频的情况下完成这项工作? 我发布了一个问题,我在问题中的 UPDATE 显示了一个类似于您的解决方案 --- 但在我的情况下仍然不完美。 :)***.com/questions/43282423/… 我认为根本问题是 ios 在后台跟踪音频播放并检测您是否仍在播放。如果您使用常规音频,这是有道理的,因为您一次只需要一首歌曲,但背景中的音频静音,这会使事情变得混乱。我认为不会有完美的解决方案,因为您无法 100% 手动控制正在播放的中心。 我明白你的意思了,有什么建议吗?音频必须在后台静音,或者我可以有没有音频的视频。以上是关于MPNowPlayingInfoCenter 始终处于播放状态的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift 中更新 MPNowPlayingInfoCenter?
MPNowPlayingInfoCenter:从 URL 设置 MPMediaItemArtwork 的最佳方法是啥?
MPNowPlayingInfoCenter - 当音频暂停时,经过的时间不断计数
MPNowPlayingInfoCenter 是不是与 AVAudioPlayer 兼容?