3

我们有一个使用 AU 图形的工作应用程序 - CoreAudio API - 来播放音频。图形始终在运行,各种源素材的播放/暂停状态在图形渲染回调函数中进行管理。我们成功地响应了 UIEventTypeRemoteControl 事件,并且我们使用 MPNowPlayingInfoCenter 成功地使用当前播放内容的元数据更新了锁屏。

缺少的一项是更新 iOS 多任务栏中播放/暂停按钮的状态。它始终处于“暂停”(||) 模式,即使应用程序音频已经暂停。它永远不会切换到其“播放”(>) 状态。

哪个 API 用于更新播放/暂停按钮状态?

4

2 回答 2

3

我发现当使用 CoreAudio AU 图时,AUGraphStart()会在 iOS 状态栏和 iOS 多任务栏中显示播放指示器,而AUGraphStop()会清除它们。

于 2013-05-06T21:02:38.917 回答
3

更改 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;
}
于 2015-10-22T06:28:08.327 回答