iPhone - 我的应用程序的音频播放器是什么?

时间:2012-07-03 08:18:33

标签: ios avfoundation avaudioplayer volume mpmusicplayercontroller

我正在设计一个音乐应用程序,用来播放用户iPhone音乐库中的音乐,我在确定哪个音频播放器是正确的音乐播放器(AVAudioPlayer,AVPlayer或MPMusicPlayer)时遇到了问题。

我的应用需要执行以下操作:

  • 播放iPhone音乐库中的音乐
  • 与设备/系统音量分开控制应用音乐音量
  • 当应用移至后台时继续播放应用音乐
  • 当歌曲更改为下一首歌曲或完成时捕获事件

从我的研究中看来,上面提到的三个音频播放器中的每一个都做了我的应用程序所需的一些任务,但是没有一个能完成所有这些任务。 AVPlayer似乎最接近,除了它的音量取决于设备/系统音量。

有没有人有任何建议或解决方法来实现这一目标?很长一段时间以来,我一直在嘲笑我的大脑,所以任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:1)

修改

当通过+ applicationMusicPlayer获取实例时,MPMusicPlayerController类实际上不支持播放背景音频。那么,最好的选择就是使用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. 您可以设置您选择的任何对象,使其成为特定于应用程序的MPMusicPlayerController对象的KVO观察者。这样,只要nowPlayingItem属性发生更改,您就会收到通知。
  5. 希望这个高级描述足够了。如果您需要进一步澄清,请与我们联系。