MPMediaPickerController

MPMediaPickerController

我已经成功创建了AVAudioEngine。它从项目目录播放本地声音文件。但是,如何通过电话访问音乐库?

有没有一种方法可以将AVAudioEngineMPMediaPickerController结合使用?

谢谢

最佳答案

是的:)

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

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

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

最后,每个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(并记得在取消时也这样做)(也有一个委托方法)。

希望能为您指明正确的方向。

关于ios - 是否可以使用AVAudioEngine从iOS音乐库播放歌曲?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42781836/

10-08 23:26