我成功创建了AVAudioEngine
。它播放项目目录中的本地声音文件。但是如何才能通过手机访问音乐库?
我可以将AVAudioEngine
与MPMediaPickerController
结合使用吗?
谢谢
答案 0 :(得分:2)
是的:)
您需要在MPMediaPickerControllerDelegate
上设置MPMediaPickerController
,以便在用户对MPMediaPickerController
执行某些操作时收到通知。 Here是您可以在MPMediaPickerControllerDelegate
上使用的方法。
正如您所看到的,当用户选择要播放的歌曲时,会调用方法mediaPicker(_:didPickMediaItems:)
。这会给你一个(MPMediaItemCollection
),其中items
包含用户选择的歌曲。
您可以遍历该集合,并查看MPMediaItem
类型的单个items
。
最后,每个MPMediaItem
都有assetURL
,您可以在AVAudioEngine
中创建单个节点。
所以......有些东西:
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
完成后使用它(并且在取消时也要记得这样做(也有代理方法)。
希望指出你正确的方向。