簡體   English   中英

更新 MPRemoteCommandCenter 播放/暫停按鈕

[英]Update MPRemoteCommandCenter play/pause button

我有一個 iOS 9 應用程序,它使用 AudioGraph 播放類似 MIDI 的歌曲。 我已經使用 MPRemoteCommandCenter 設置了遠程控制命令,並使用MPRemoteCommandCenter設置了信息, MPNowPlayingInfoCenter當前播放的歌曲顯示在控制中心並響應控制中心按鈕按下或耳機按鈕按下。 點擊控制中心中的暫停按鈕會暫停我的歌曲,但控制中心中的播放頭會繼續移動,並且該按鈕仍保持為暫停圖標。 再次點擊它只會繼續調用暫停。

有沒有辦法更新MPNowPlayingInfoCenterMPRemoteCommandCenter state 以便控制中心知道歌曲已暫停?

我嘗試過的解決方案:

  • playCommandpauseCommandenabled設置

    沒有效果

  • MPNowPlayingInfoCenter MPNowPlayingInfoPropertyPlaybackRate0

    停止播放頭前進(如果我沒有明確設置它,則重置經過的時間),但按鈕仍然是暫停按鈕

  • 停止我的音頻引擎並調用AVAudioSession.setActive(false)

    這似乎確實有效,但速度很慢,會導致音頻故障,即使歌曲暫停,我的應用程序的其他部分也依賴於音頻引擎的運行

似乎MPRemoteCommandCenter知道音頻暫停的唯一方法是停止流式傳輸,因此您的問題的答案似乎是“否”。 遺憾的是,我們無法直接控制Control Center的運輸控制狀態......

由於您的應用需要持續的音頻流,因此您最好選擇放棄Control Center音頻傳輸支持。 也許中間立場是刪除對播放和暫停的支持,同時保留當前播放音頻的時間線(如上所述,您可以通過將MPNowPlayingInfoPropertyPlaybackRate設置為0來停止時間線)。

在我的情況下,按下控制中心的暫停按鈕后,只有在我停止流式傳輸音頻時才顯示控制中心播放按鈕(在我的情況下,這意味着在我的AVAudioEngine實例上調用stop,在我的情況下不需要設置我的AVAudioSession不活躍)。 停止流式傳輸也會暫停控制中心的時間線,因此對於采用“停止流式傳輸”解決方案的其他人來說,您無需設置MPNowPlayingInfoPropertyPlaybackRate。

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

MPNowPlayingInfoCenter.defaultCenter.nowPlayingInfo = MPNowPlayingPlaybackStatePlaying;

或者

MPNowPlayingInfoCenter.defaultCenter.nowPlayingInfo = MPNowPlayingPlaybackStatePaused;

可從 iOS 13.0 獲得

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM