布局如下:

引入框架:

#import <AVFoundation/AVFoundation.h>

#import <MediaPlayer/MediaPlayer.h>

遵循协议及引入头文件

#import "ViewController.h"
#import <AVFoundation/AVFoundation.h>
#import <MediaPlayer/MediaPlayer.h>

@interface ViewController ()<MPMediaPickerControllerDelegate>

@end

@implementation ViewController

点击事件:

- (IBAction)pickMusicAction:(UIButton *)sender {

    //创建一个MPMediaPickerController 并为其指定媒体类型
    //媒体类型:包括音乐,音频等
    //MPMediaTypeMovie
    //MPMediaTypeMusic
    MPMediaPickerController *mediaPC = [[MPMediaPickerController alloc]initWithMediaTypes:(MPMediaTypeMusic)];

    if (mediaPC != nil) {
        NSLog(@"Successfully instantiated a media picker");

        // 设置相关的属性
        // 代理
        mediaPC.delegate = self;
        // 提示文字
        mediaPC.prompt = @"请选择要播放的音乐";
        // 是否允许一次选择多个
        mediaPC.allowsPickingMultipleItems = YES;

        [self presentViewController:mediaPC animated:YES completion:nil];

    }else{
        NSLog(@"Could not instantiate a media picker");
    }

}

// 通过代理方法来获取选中的歌曲

// MPMediaItemCollection  多媒体项集合

// MPMediaItem 单个多媒体项,如一首歌曲

// collection是一组有序的item集合

- (void)mediaPicker:(MPMediaPickerController *)mediaPicker didPickMediaItems:(MPMediaItemCollection *)mediaItemCollection
{
    NSLog(@"%@",mediaItemCollection);

    //MPMusicPlayerController类可以播放音乐库中的音乐
    //MPMusicPlayerController提供两种播放器类型,一种是applicationMusicPlayer,一种是iPodMusicPlayer,这里用iPodMusicPlayer。前者在应用退出后音乐播放会自动停止,后者在应用停止后不会退出播放状态。
    MPMusicPlayerController *musicPC = [[MPMusicPlayerController alloc]init];

    //MPMusicPlayerController加载音乐不同于前面的AVAudioPlayer,AVAudioPlayer是通过一个文件路径来加载,而MPMusicPlayerController需要一个播放队列,正是由于它的播放音频来源是一个队列,因此MPMusicPlayerController支持上一曲、下一曲等操作。

    [musicPC setQueueWithItemCollection:mediaItemCollection];
    [musicPC play];

}
//选中后取消动作
- (void)mediaPickerDidCancel:(MPMediaPickerController *)mediaPicker
{
    NSLog(@"Media Picker was cancelled");

    [mediaPicker dismissViewControllerAnimated:YES completion:nil];

}

最终效果:

每日更新关注:http://weibo.com/hanjunqiang 
新浪微博

iOS中 UIMPMediaPickerController播放系统音乐的更多相关文章

  1. iOS中判断设备系统版本

    @import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...

  2. 在iOS微信浏览器中自动播放HTML5 audio(音乐)的2种正确方式

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. iOS开发----音频播放、录音、视频播放、拍照、视频录制

    随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制,还是对麦克风.摄像头的操 ...

  4. 微信中音乐播放在ios不能自动播放解决

    在微信中,ios手机下面音乐被自动禁掉无法自动播放,我们可以执行触发body上的元素,自动进行播放. //音乐 var x = document.getElementById("myAudi ...

  5. 解决ubuntu系统中firefox无法播放网页版音乐播放器音乐

    Reference: https://blog.csdn.net/h736131708/article/details/80775382 因为网页版的qq音乐或者网易云音乐都把音频换成了AAC格式,这 ...

  6. IOS 后台执行 播放音乐

    iOS 4開始引入的multitask.我们能够实现像ipod程序那样在后台播放音频了. 假设音频操作是用苹果官方的AVFoundation.framework实现.像用AvAudioPlayer.A ...

  7. iOS 实现后台 播放音乐声音 AVAudioPlayer 以及铃声设置(循环播放震动)

    1.步骤一:在Info.plist中,添加"Required background modes"键,value为:App plays audio 或者: 步骤二: - (BOOL) ...

  8. iOS音频篇:使用AVPlayer播放网络音乐

    http://www.cocoachina.com/ios/20160324/15767.html 引言 假如你现在打算做一个类似百度音乐.豆瓣电台的在线音乐类APP,你会怎样做? 首先了解一下音频播 ...

  9. IOS中调用系统的电话、短信、邮件、浏览功能

    iOS开发系列--通讯录.蓝牙.内购.GameCenter.iCloud.Passbook系统服务开发汇总 2015-01-13 09:16 by KenshinCui, 26990 阅读, 35 评 ...

随机推荐

  1. 关于 "java中常量定义在interface中好还是定义在class中好" 的一些思考

    原文链接 http://blog.csdn.net/voo00oov/article/details/50433672 java中interface中定义变量都是"public static ...

  2. 四柱加强版汉诺塔HanoiTower----是甜蜜还是烦恼

    我想很多人第一次学习递归的时候,老师或者书本上可能会举汉诺塔的例子. 但是今天,我们讨论的重点不是简单的汉诺塔算法,而是三柱汉诺塔的延伸.先来看看经典的三柱汉诺塔. 一.三柱汉诺塔(Hanoi_Thr ...

  3. flask+apscheduler+redis实现定时任务持久化

    在我们开发flask的时候,我们会结合apscheduler实现定时任务,我们部署到服务器上,会不会遇到这样的问题,每次我们部署后,我们重启服务后,原来的定时任务都需要重启,这样对我们经常迭代的项目肯 ...

  4. 转:函数signal()

    from:http://blog.sina.com.cn/s/blog_4b226b92010119l5.html 当服务器close一个连接时,若client端接着发数据.根据TCP协议的规定,会收 ...

  5. UltraISO安装centos7系统

    1. 使用最新版UltraISO将ISO镜像刻录到U盘一定要是最新版,试用版都可以,按下图操作: 2. U盘启动电脑进入安装界面正常情况下你应该会看到下面的这个界面: 选择第一项,然后按TAB键(在评 ...

  6. 解决ASP.NET MVC 检测到有潜在危险的 Request.Form 值

    提交使用html编辑器编辑后的数据,由于Request时出现有HTML或JavaScript等字符串时,系统会认为是危险性值.立马报错. "从客户端 ... 中检测到有潜在危险的 Reque ...

  7. android JNI的.so库调用

    在一篇博客中看到一篇文章,感觉描述的还可以: 在前面的博客中介绍的都是使用java开发Android应用,这篇博客将介绍java通过使用jni调用c语言做开发 为了更加形象的介绍jni,先观察下面的图 ...

  8. (译)openURL 在 iOS10中已弃用

    翻译自:openURL Deprecated in iOS10 译者:Haley_Wong 苹果在iOS 2 推出了 openURL:方法 作为一种打开外部链接的方式.而与之相关的方法 canOpen ...

  9. Android开发之手把手教你写ButterKnife框架(二)

    欢迎转载,转载请标明出处: http://blog.csdn.net/johnny901114/article/details/52664112 本文出自:[余志强的博客] 上一篇博客Android开 ...

  10. Linux内核中的有关Page的算法

    static inline int get_order(unsigned long size) { int order; size = (size-1) >> (PAGE_SHIFT-1) ...