我已经成功地创建了一个AVAudioEngine
。它播放项目目录中的本地声音文件。但是我怎样才能访问手机上的音乐库?
有没有办法将 AVAudioEngine
与 MPMediaPickerController
结合起来?
谢谢
最佳答案
是的:)
您需要在 MPMediaPickerController
上设置 MPMediaPickerControllerDelegate
,这样当用户在 MPMediaPickerController
中执行操作时您会收到通知。 Here是您可以在 MPMediaPickerControllerDelegate
上使用的方法。
如您所见,有方法 mediaPicker(_:didPickMediaItems:)
当用户选择要播放的歌曲时调用。这为您提供了一个 ( MPMediaItemCollection
),其中包含包含用户选择的歌曲的 items
。
您可以遍历该集合并查看类型为 MPMediaItem
的各个项
.
最后,每个 MPMediaItem
都有一个 assetURL
,您可以在 AVAudioEngine
中创建单独的节点。
所以...类似的东西:
在哪里创建 MPMediaPickerController
let mediaPicker = MPMediaPickerController(mediaTypes: .anyAudio)
mediaPicker.delegate = self
present(mediaPicker, animated: true, completion: nil)
委托(delegate)方法
public func mediaPicker(_ mediaPicker: MPMediaPickerController, didPickMediaItems mediaItemCollection: MPMediaItemCollection) {
for item in mediaItemCollection.items {
if let assetURL = item.assetURL {
//There you go :)
}
}
}
记得在完成时关闭
MPMediaPickerController
(并且在取消时也记得这样做(也有一个委托(delegate)方法))。
希望这能为您指明正确的方向。
关于ios - 是否可以使用 AVAudioEngine 播放 iOS 音乐库中的歌曲?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42781836/