是否可以使用AVAudioEngine从iOS音乐库播放歌曲?

时间:2017-03-14 09:11:53

标签: ios objective-c swift avaudioengine mpmediapickercontroller

我成功创建了AVAudioEngine。它播放项目目录中的本地声音文件。但是如何才能通过手机访问音乐库?

我可以将AVAudioEngineMPMediaPickerController结合使用吗?

谢谢

1 个答案:

答案 0 :(得分:2)

是的:)

您需要在MPMediaPickerControllerDelegate上设置MPMediaPickerController,以便在用户对MPMediaPickerController执行某些操作时收到通知。 Here是您可以在MPMediaPickerControllerDelegate上使用的方法。

正如您所看到的,当用户选择要播放的歌曲时,会调用方法mediaPicker(_:didPickMediaItems:)。这会给你一个(MPMediaItemCollection),其中items包含用户选择的歌曲。

您可以遍历该集合,并查看MPMediaItem类型的单个items

最后,每个MPMediaItem都有assetURL,您可以在AVAudioEngine中创建单个节点。

所以......有些东西:

您在哪里创建MPMediaPickerController

let mediaPicker = MPMediaPickerController(mediaTypes: .anyAudio)
mediaPicker.delegate = self
present(mediaPicker, animated: true, completion: nil)

委派方法

public func mediaPicker(_ mediaPicker: MPMediaPickerController, didPickMediaItems mediaItemCollection: MPMediaItemCollection) {
  for item in mediaItemCollection.items {
     if let assetURL = item.assetURL {
        //There you go :)
     }
  }
}

请记住dismiss MPMediaPickerController完成后使用它(并且在取消时也要记得这样做(也有代理方法)。

希望指出你正确的方向。