我们有一个使用AU图的工作程序 - CoreAudio的API - 播放音频。 该曲线图将一直工作,和各种源材料的播放/暂停状态在图形渲染回调函数进行管理。 我们成功应对UIEventTypeRemoteControl事件,我们与元数据使用MPNowPlayingInfoCenter当前播放的内容成功地更新锁屏。
在一个缺少的部分是在多任务的iOS栏更新播放/暂停按钮的状态。 它始终是在“暂停”(||)模式,即使该应用程序的音频已经暂停。 它从来没有切换到它的“播放”(>)状态。
其API是用来更新播放/暂停按钮的状态?
我想通了,使用CoreAudio的AU曲线图,当AUGraphStart()将显示在iOS的状态栏和iOS的多任务栏中的播放指示器,和AUGraphStop()将清除它们。
更改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;
}