首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新MPRemoteCommandCenter播放/暂停按钮

更新MPRemoteCommandCenter播放/暂停按钮
EN

Stack Overflow用户
提问于 2016-04-20 20:50:29
回答 2查看 2.4K关注 0票数 7

我有一个iOS 9应用程序,可以使用AudioGraph播放类似MIDI的歌曲。我用MPRemoteCommandCenter设置了远程控制命令,MPNowPlayingInfoCenter设置了信息,使当前播放的歌曲显示在控制中心,并响应控制中心按钮按下或耳机按钮按下。点击控制中心的暂停按钮暂停我的歌曲,但控制中心的游戏头继续移动,该按钮仍然是一个暂停图标。再一次敲击它,不停地叫暂停。

是否有一种方法可以更新MPNowPlayingInfoCenter MPRemoteCommandCenter MPRemoteCommandCenter状态,以便控制中心知道这首歌暂停了?

我尝试过的解决办法:

  • 基于enabled playCommand pauseCommand的设置 不起作用
  • MPNowPlayingInfoPropertyPlaybackRate 0 设置为 MPNowPlayingInfoCenter中的0 阻止游戏头前进(如果没有显式设置,则重置运行时间),但是按钮仍然是一个暂停按钮。
  • 停止我的音频引擎并调用AVAudioSession.setActive(false) 这看起来确实有效,但速度慢,会导致音频故障,而我的应用程序的其他部分则依赖于音频引擎的运行,即使暂停了一首歌曲。
EN

回答 2

Stack Overflow用户

发布于 2016-05-31 18:50:23

似乎MPRemoteCommandCenter知道音频暂停的唯一方法是停止流,所以您的问题的答案似乎是“否”。遗憾的是,我们没有直接控制控制中心的运输控制状态.

由于您的应用程序需要不断的音频流,这似乎是你最好的选择是放弃控制中心音频传输支持。中间点可能是删除对播放和暂停的支持,同时保留当前播放音频的时间线(正如您前面所说的,您可以通过将MPNowPlayingInfoPropertyPlaybackRate设置为0来停止时间线)。

在我的例子中,在按下控制中心的暂停按钮时,只有当我停止流音频时才会显示控制中心播放按钮(在我的示例中,这意味着在我的AVAudioEngine实例上调用stop,在我的示例中不需要将我的AVAudioSession设置为非活动)。停止流也会暂停控制中心的时间线,因此对于其他采取“停止流”解决方案的人来说,您不必乱设置MPNowPlayingInfoPropertyPlaybackRate。

票数 2
EN

Stack Overflow用户

发布于 2022-08-10 09:41:54

您可以使用https://developer.apple.com/documentation/mediaplayer/mpnowplayingplaybackstate?language=objc

MPNowPlayingInfoCenter.defaultCenter.nowPlayingInfo = MPNowPlayingPlaybackStatePlaying;

MPNowPlayingInfoCenter.defaultCenter.nowPlayingInfo = MPNowPlayingPlaybackStatePaused;

可从iOS 13.0中扣除

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36754934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档