我已经成功地创建了一个AVAudioEngine。它播放项目目录中的本地声音文件。但是我怎样才能在手机上访问音乐图书馆呢?
有没有一种方法可以把AVAudioEngine和MPMediaPickerController结合起来?
谢谢
发布于 2017-03-14 18:27:10
是:)
您需要在MPMediaPickerController上设置MPMediaPickerControllerDelegate,以便在用户在MPMediaPickerController中执行某些操作时得到通知。Here是可以在MPMediaPickerControllerDelegate上使用的方法。
如您所见,当用户选择要播放的歌曲时,将调用mediaPicker(_:didPickMediaItems:)方法。这将为您提供一个(MPMediaItemCollection),其中包含包含用户选择的歌曲的items。
您可以遍历该集合并查看MPMediaItem类型的各个items。
最后,每个MPMediaItem都有一个assetURL,您可以用它在AVAudioEngine中创建单独的节点。
So...something是这样的:
创建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 :)
}
}
}记住在完成MPMediaPickerController时对其进行委派(并且在取消时也要记住这样做(也有一个用于该委派的方法)。
希望这能为你指明正确的方向。
https://stackoverflow.com/questions/42781836
复制相似问题