iOS - 更新多任务栏中的媒体播放/暂停状态
Posted
技术标签:
【中文标题】iOS - 更新多任务栏中的媒体播放/暂停状态【英文标题】:iOS - updating the media play/pause state in the multitasking bar 【发布时间】:2013-04-24 18:15:59 【问题描述】:我们有一个使用 AU 图 - CoreAudio API - 来播放音频的工作应用。图形始终在运行,各种源素材的播放/暂停状态在图形渲染回调函数中进行管理。 我们成功响应了 UIEventTypeRemoteControl 事件,并且我们使用 MPNowPlayingInfoCenter 成功地使用当前播放内容的元数据更新了锁屏。
缺少的一项是更新 ios 多任务栏中播放/暂停按钮的状态。它始终处于“暂停”(||) 模式,即使应用程序音频已经暂停。它永远不会切换到“播放”(>) 状态。
哪个 API 用于更新播放/暂停按钮状态?
【问题讨论】:
【参考方案1】:我发现当使用 CoreAudio AU 图时,AUGraphStart() 会在 iOS 状态栏和 iOS 多任务栏中显示播放指示器,AUGraphStop() 会清除它们。
【讨论】:
使用 AVAudioPlayer 时出现同样的问题,但似乎没有办法让它正常工作。 @openfrog:你找到解决办法了吗?? 看到同样的问题。有什么解决办法吗?【参考方案2】:更改 MPNowPlayingInfo 字典,设置新参数
MPNowPlayingInfoPropertyPlaybackRate to 1.0f to show pause button
MPNowPlayingInfoPropertyPlaybackRate to 0.0f to show play button
从播放按钮到暂停按钮
Class playingInfoCenter = NSClassFromString(@"MPNowPlayingInfoCenter");
if(playingInfoCenter)
NSMutableDictionary *songInfo = [NSMutableDictionary dictionaryWithDictionary:[MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo];
//[songInfo setObject:songTitle forKey:MPMediaItemPropertyTitle];
//[songInfo setObject:songArtist forKey:MPMediaItemPropertyArtist];
[songInfo setObject:[NSNumber numberWithFloat:1.0f] forKey:MPNowPlayingInfoPropertyPlaybackRate];
[MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo = songInfo;
从暂停按钮到播放按钮
Class playingInfoCenter = NSClassFromString(@"MPNowPlayingInfoCenter");
if(playingInfoCenter)
NSMutableDictionary *songInfo = [NSMutableDictionary dictionaryWithDictionary:[MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo];
//[songInfo setObject:songTitle forKey:MPMediaItemPropertyTitle];
//[songInfo setObject:songArtist forKey:MPMediaItemPropertyArtist];
[songInfo setObject:[NSNumber numberWithFloat:0.0f] forKey:MPNowPlayingInfoPropertyPlaybackRate];
[MPNowPlayingInfoCenter defaultCenter].nowPlayingInfo = songInfo;
【讨论】:
我正在使用 AVPlayer,并得到同样的错误。我正在尝试您的解决方案,它可以在模拟器中运行,而不能在真实设备中运行。如果您知道任何其他解决方案,请帮助我解决这个问题。提前致谢。 这个答案通常是正确的,但不是关于这个问题。问题在于核心音频 API 无法与 MPNowPlayingInfoCenter 一起正常工作。以上是关于iOS - 更新多任务栏中的媒体播放/暂停状态的主要内容,如果未能解决你的问题,请参考以下文章