我已经成功创建了AVAudioEngine
。它从项目目录播放本地声音文件。但是,如何通过电话访问音乐库?
有没有一种方法可以将AVAudioEngine
与MPMediaPickerController
结合使用?
谢谢
最佳答案
是的:)
您需要在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/