实现音乐的后台播放。以及播放时,能够控制其暂停,下一首等操作,以及锁屏图片歌曲名等的显示

此实例须要真机调试。效果图例如以下:


project下载:githubproject下载


实现步骤:

1、首先改动info.plist


2、其次引入两个须要的框架

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

3、设置播放器及后台播放

- (void)viewDidLoad {
[super viewDidLoad];
// 设置后台播放
[[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; // 设置播放器
NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"那些花儿" ofType:@"mp3"] ];
_player = [[AVPlayer alloc] initWithURL:url];
[_player play];
_isPlayingNow = YES; //后台播放显示信息设置
[self setPlayingInfo];
} #pragma mark - 接收方法的设置
- (void)remoteControlReceivedWithEvent:(UIEvent *)event {
if (event.type == UIEventTypeRemoteControl) { //推断是否为远程控制
switch (event.subtype) {
case UIEventSubtypeRemoteControlPlay:
if (!_isPlayingNow) {
[_player play];
}
_isPlayingNow = !_isPlayingNow;
break;
case UIEventSubtypeRemoteControlPause:
if (_isPlayingNow) {
[_player pause];
}
_isPlayingNow = !_isPlayingNow;
break;
case UIEventSubtypeRemoteControlNextTrack:
NSLog(@"下一首");
break;
case UIEventSubtypeRemoteControlPreviousTrack:
NSLog(@"上一首 ");
break;
default:
break;
}
}
}

4、设置后台播放时显示的东西,比如歌曲名字。图片等

- (void)setPlayingInfo {
// <MediaPlayer/MediaPlayer.h>
MPMediaItemArtwork *artWork = [[MPMediaItemArtwork alloc] initWithImage:[UIImage imageNamed:@"pushu.jpg"]]; NSDictionary *dic = @{MPMediaItemPropertyTitle:@"那些花儿",
MPMediaItemPropertyArtist:@"朴树",
MPMediaItemPropertyArtwork:artWork
};
[[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:dic];
}

5、远程控制设置

- (void)viewDidAppear:(BOOL)animated {
// 接受远程控制
[self becomeFirstResponder];
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
} - (void)viewDidDisappear:(BOOL)animated {
// 取消远程控制
[self resignFirstResponder];
[[UIApplication sharedApplication] endReceivingRemoteControlEvents];
}

最新文章

  1. 字符串转化为Json格式的数据--(记录四)
  2. 了不起的全能MAC系统监测工具iStat Menus 5下载
  3. 安装 modelsim 10.4
  4. 从零开始用gulp
  5. static之用法
  6. js变量
  7. JVM-并发-线程
  8. JBOSS常用端口说明
  9. C#中的 int?是什么意思
  10. 关于@see注解
  11. user.table.column, table.column 或列说明无效
  12. ORACLE分区表、分区索引详解
  13. php网上支付易宝
  14. Leetcode_58_Length of Last Word
  15. Wish-递推DP记数
  16. aop(权限控制)
  17. python 常见函数的用法
  18. docker 使用指南
  19. 基于 CGLIB 库的动态代理机制
  20. QualNet/EXata的发展贯穿在美军网络中心战演进的始终

热门文章

  1. Android应用开发EditText文本内容变化监听方法
  2. 一种提高Android应用进程存活率新方法
  3. 结构型设计模式之桥接模式(Bridge)
  4. Javascript时间差计算函数代码实例
  5. 戴文的Linux内核专题:03 驱动程序【转】
  6. UVALIVE 2927 &quot;Shortest&quot; pair of paths
  7. request_mem_region 与 ioremap【转】
  8. [BZOJ2815][ZJOI2012]灾难 灭绝树+拓扑排序+lca
  9. [BZOJ1295][SCOI2009]最长距离 最短路+枚举
  10. 我在16aspx网上下载了个C#源码,如何能在我自己的计算机上跑起来,很急!求详细操作过程!