ios - 是否可以使用 AVAudioEngine 播放 iOS 音乐库中的歌曲?

标签 ios objective-c swift avaudioengine mpmediapickercontroller

我已经成功地创建了一个AVAudioEngine。它播放项目目录中的本地声音文件。但是我怎样才能访问手机上的音乐库?

有没有办法将 AVAudioEngineMPMediaPickerController 结合起来?

谢谢

最佳答案

是的:)

您需要在 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/

相关文章:

ios - UITableviewCell 中的图像大小无法正确加载

ios - 无法在 iOS 中隐藏 MBProgressHUD

ios - Socket.IO 错误 : zlib no such module (Swift 3, Xcode 8.3)

ios - 允许后谷歌登录不重定向到应用程序

ios - 使用位置服务在移动 safari 中使用 geolocation.watchPosition()

iOS : To get selected photos in sequence with PHImageManager

ios - 在 Swift 应用程序中访问 Objective-C sharedInstance

objective-c - 为什么多线程在此实现中不起作用?

iOS:应用程序组缺少用户默认 key

ios - 如何在 swift 中使用单例访问另一个 Controller 中的模型类值?