iOS音乐后台播放及锁屏信息显示
2024-08-31 16:19:45
实现音乐的后台播放。以及播放时,能够控制其暂停,下一首等操作,以及锁屏图片歌曲名等的显示
此实例须要真机调试。效果图例如以下:
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];
}
最新文章
- 字符串转化为Json格式的数据--(记录四)
- 了不起的全能MAC系统监测工具iStat Menus 5下载
- 安装 modelsim 10.4
- 从零开始用gulp
- static之用法
- js变量
- JVM-并发-线程
- JBOSS常用端口说明
- C#中的 int?是什么意思
- 关于@see注解
- user.table.column, table.column 或列说明无效
- ORACLE分区表、分区索引详解
- php网上支付易宝
- Leetcode_58_Length of Last Word
- Wish-递推DP记数
- aop(权限控制)
- python 常见函数的用法
- docker 使用指南
- 基于 CGLIB 库的动态代理机制
- QualNet/EXata的发展贯穿在美军网络中心战演进的始终
热门文章
- Android应用开发EditText文本内容变化监听方法
- 一种提高Android应用进程存活率新方法
- 结构型设计模式之桥接模式(Bridge)
- Javascript时间差计算函数代码实例
- 戴文的Linux内核专题:03 驱动程序【转】
- UVALIVE 2927 ";Shortest"; pair of paths
- request_mem_region 与 ioremap【转】
- [BZOJ2815][ZJOI2012]灾难 灭绝树+拓扑排序+lca
- [BZOJ1295][SCOI2009]最长距离 最短路+枚举
- 我在16aspx网上下载了个C#源码,如何能在我自己的计算机上跑起来,很急!求详细操作过程!