2014-05-10 144 views
5

我已將MPNowPlayingInfoCenter啓動並運行,但仍有一個問題。 無論我的實際播放器狀態如何,MPNowPlayingInfoCenter總是「播放」並顯示暫停按鈕。當按下它時會觸發暫停事件。MPNowPlayingInfoCenter始終處於播放狀態

當我的播放器改變狀態,例如暫停時,我通過MPNowPlayingInfoPropertyPlaybackRate鍵更新MPNowPlayingInfoCenter。

有沒有其他方法可以將MPNowPlayingInfoCenter狀態設置爲暫停狀態?

任何提示讚賞!

回答

0

找到了當音頻輸出的第二個來源是玩,而我包括媒體播放器是通過nowplayingcenter它在某種程度上忽視了我的手動設置播放速度和檢測的音頻播放控制的問題了。

所以我的解決方案是暫停第二個音頻。在我的情況下,這是可能的,但我不知道如何克服這一點,當第二音頻是關鍵的應用程序。 我會高興地接受任何答案,更優雅地解決這個問題。

+0

我遇到了類似的問題。所以我有一個帶有許多視頻的FeedViewController,但它不播放總是在播放的音頻。如果您在FeedViewController中選擇了其中一個視頻,則會出現PlayerViewController並播放帶音頻的完整視頻。我注意到,如果我在播放PlayerViewController之前沒有在FeedViewController中暫停每個視頻,則「播放/暫停」按鈕不會相應更新。有沒有一種方法可以讓我在沒有暫停PlayerViewController視頻的情況下工作? – JEL

+0

我發佈了一個問題,我的** UPDATE **在問題中顯示了類似於您的解決方案---但在我的情況下仍然不完美。 :)http://stackoverflow.com/questions/43282423/play-pause-button-not-updating-in-ios-command-center – JEL

+0

我認爲,根本問題是,iOS跟蹤引擎蓋下的音頻播放,並檢測是否你還在玩。如果你經常使用音頻,這是有道理的,因爲你一次只需要一首歌曲,但是在後臺使用柔和的音頻會使這些東西混亂。我不認爲會有一個完美的解決方案,因爲你不能100%手動控制現在玩的中心。 –

0

試試這個:

NSMutableDictionary *currentlyPlayingTrackInfo = [NSMutableDictionary dictionaryWithCapacity:7]; 
currentlyPlayingTrackInfo[MPNowPlayingInfoPropertyElapsedPlaybackTime] = @((Float64)[player currentTime]); 
    if (!SYSTEM_VERSION_OF_DEVICE_LESS_THAN(@"7.0")) 
    { 
     currentlyPlayingTrackInfo[MPNowPlayingInfoPropertyPlaybackRate] = [NSNumber numberWithDouble:_isHere == NO?1:0]; 
    } 
    else 
    { 
     currentlyPlayingTrackInfo[MPNowPlayingInfoPropertyPlaybackRate] = [NSNumber numberWithDouble:1]; 
    } 
[[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:currentlyPlayingTrackInfo]; 
+1

對不起,遲到的迴應。我無法使用您的代碼。什麼是_isHere變量(當前播放器狀態?)以及爲什麼版本<7.0的playbackRate總是設置爲1.除此之外,信息中心仍然始終顯示「播放」狀態。 –

+0

我想設置'MPNowPlayingInfoPropertyPlaybackRate'的方法是正確的,但解決這個問題肯定更多。 – Warpling

相關問題