5

我設計一個音樂應用程序,從用戶的iPhone音樂庫中播放音樂,我有搞清楚這音頻播放器是使用它正確的(AVAudioPlayer,AVPlayer,或MPMusicPlayer)的問題。iPhone - 什麼是適合我的應用程序的音頻播放器?

我的應用程序需要做到以下幾點:從iPhone音樂庫從設備/系統卷

  • 播放音樂
  • 控制應用程序的音樂音量分別
  • 繼續發揮應用程序的音樂時,應用程序移動到背景
  • 捕撈活動時,歌曲切換到下一首歌曲或完成

從我的研究似乎上面提到的三個音頻播放器中的每一個都會執行我的應用程序所需的一些任務,但是他們都沒有完成所有這些任務。 AVPlayer似乎取得了最接近的,除了它的音量取決於設備/系統音量。

沒有人有任何建議或解決方法來做到這一點?我在這段時間一直在困擾着我很長時間,所以任何幫助都將值得讚賞。

回答

1

編輯

的MPMusicPlayerController類實際上並不支持播放背景音樂通過+ applicationMusicPlayer得到它的一個實例時。那麼最好的選擇就是簡單地使用MPMusicPlayer查詢iPod音樂庫。一旦歌曲由用戶選擇,所產生的MPMediaItem可以查詢它的資產URL,並送入AVPlayer的+playerWithURL,讓您的播放參數完全控制。

-

我會推薦MPMusicPlayerController。

  1. MPMusicPlayerController處理播放iTunes庫中音頻文件的低級細節。
  2. 您可以使用類方法-applicationMusicPlayer得到的iPod單的本地副本;從那裏,您可以通過爲其應用程序設置volume屬性來控制其音量。
  3. 我會假設MPMusicPlayerController已建成的背景音頻支持。如果沒有,你可以改變你的應用程序的音頻會話的上下文,使其工作(見http://www.sagorin.org/2011/11/29/ios-playing-audio-in-background-audio/Playing background audio
  4. 您可以設置任何對象,你選擇成爲您的特定於應用程序的對象的KVO觀察者。通過這種方式,只要nowPlayingItem屬性發生更改,您就會收到通知。

希望這個高層次的描述就足夠了。讓我知道你是否需要進一步澄清。

+0

也許看看蘋果的AddMusic示例代碼 – amergin

+0

這一切都聽起來很正確,但是一旦應用移動到後臺,MPMusicPlayer的appmusicplayer方法不支持音頻,並且在您列出的鏈接中,他使用AVPlayer作爲示例,所以我是不確定背景音頻會話將與appmusicplayer一起使用。建議? – Matt

+0

嗨馬特。我很抱歉錯過了那篇文章。接下來最好的事情可能是使用MPMusicPlayer來訪問和查詢iPod庫。一旦用戶選擇了歌曲,就可以通過MPMediaItemPropertyAssetURL屬性(來自MPMediaItem類)獲取歌曲的URL,並將該URL提供給AVPlayer的「+ playerWithURL」方法。從那裏開始,您只需使用AVPlayer即可播放該歌曲。這應該可以讓您在播放時更好地控制播放,同時還可以訪問iPod庫。 –

相關問題