iOS的 - 在多任务栏更新媒体播放/暂停状态(iOS - updating the media p

2019-09-01 12:53发布

我们有一个使用AU图的工作程序 - CoreAudio的API - 播放音频。 该曲线图将一直工作,和各种源材料的播放/暂停状态在图形渲染回调函数进行管理。 我们成功应对UIEventTypeRemoteControl事件,我们与元数据使用MPNowPlayingInfoCenter当前播放的内容成功地更新锁屏。

在一个缺少的部分是在多任务的iOS栏更新播放/暂停按钮的状态。 它始终是在“暂停”(||)模式,即使该应用程序的音频已经暂停。 它从来没有切换到它的“播放”(>)状态。

其API是用来更新播放/暂停按钮的状态?

Answer 1:

我想通了,使用CoreAudio的AU曲线图,当AUGraphStart()将显示在iOS的状态栏和iOS的多任务栏中的播放指示器,和AUGraphStop()将清除它们。



Answer 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;
}


文章来源: iOS - updating the media play/pause state in the multitasking bar