AVPlayer 音乐播放后台播放,以及锁屏主题设置
第一步:在appDelegate中通知app支持后台播放:在方法
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {}
中添加如下代码:
AVAudioSession *audioSession = [AVAudioSession sharedInstance];
//默认情况下扬声器播放
[audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];
[audioSession setActive:YES error:nil];
第二步:在info.plist文件中添加一个key项
第三步:在播放控制界面接受远程控制
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:YES];
// 开始接受远程控制
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];
[self resignFirstResponder];
} - (void)viewWillDisappear:(BOOL)animated
{
// 接触远程控制
[[UIApplication sharedApplication] endReceivingRemoteControlEvents];
[self becomeFirstResponder];
}
// 重写父类成为响应者方法
- (BOOL)canBecomeFirstResponder
{
return YES;
}
第四步:对远程控制事件作出相应的操作
//重写父类方法,接受外部事件的处理
- (void) remoteControlReceivedWithEvent: (UIEvent *) receivedEvent {
NSLog(@"remote");
if (receivedEvent.type == UIEventTypeRemoteControl) { switch (receivedEvent.subtype) { // 得到事件类型 case UIEventSubtypeRemoteControlTogglePlayPause: // 暂停 ios6
[self.player pause]; // 调用你所在项目的暂停按钮的响应方法 下面的也是如此
break; case UIEventSubtypeRemoteControlPreviousTrack: // 上一首 [self lastMusic:nil];
break; case UIEventSubtypeRemoteControlNextTrack: // 下一首
[self nextMusic:nil];
break; case UIEventSubtypeRemoteControlPlay: //播放
[self playMusic:nil];
break; case UIEventSubtypeRemoteControlPause: // 暂停 ios7
[self playMusic:nil];
break; default:
break;
}
}
}
第五步:设置锁屏主题
注意这个播放仅需要在播放状态改变的时候调用,例如初始化播放器,上一首下一首等操作
//Now Playing Center可以在锁屏界面展示音乐的信息,也达到增强用户体验的作用。
////传递信息到锁屏状态下 此方法在播放歌曲与切换歌曲时调用即可 - (void)configNowPlayingCenter {
NSLog(@"锁屏设置");
// BASE_INFO_FUN(@"配置NowPlayingCenter");
NSMutableDictionary * info = [NSMutableDictionary dictionary];
//音乐的标题
[info setObject:self.nameLabel.text forKey:MPMediaItemPropertyTitle];
//音乐的艺术家
NSString *author= [[self.playlistArr[self.currentNum] valueForKey:@"songinfo"] valueForKey:@"author"];
[info setObject:author forKey:MPMediaItemPropertyArtist];
//音乐的播放时间
[info setObject:@(self.player.currentTime.value) forKey:MPNowPlayingInfoPropertyElapsedPlaybackTime];
//音乐的播放速度
[info setObject:@() forKey:MPNowPlayingInfoPropertyPlaybackRate];
//音乐的总时间
[info setObject:@(self.totalTime) forKey:MPMediaItemPropertyPlaybackDuration];
//音乐的封面
MPMediaItemArtwork * artwork = [[MPMediaItemArtwork alloc] initWithImage:[UIImage imageNamed:@"0.jpg"]];
[info setObject:artwork forKey:MPMediaItemPropertyArtwork];
//完成设置
[[MPNowPlayingInfoCenter defaultCenter]setNowPlayingInfo:info];
}
AVPlayer 音乐播放后台播放,以及锁屏主题设置的更多相关文章
- 重新想象 Windows 8 Store Apps (65) - 后台任务: 音乐的后台播放和控制
[源码下载] 重新想象 Windows 8 Store Apps (65) - 后台任务: 音乐的后台播放和控制 作者:webabcd 介绍重新想象 Windows 8 Store Apps 之 后台 ...
- iOS - Mac 锁屏快捷键设置
Mac 锁屏快捷键设置 control + shift + Eject 锁屏快捷键 如果用户要离开电脑一段时间,可以选择直接把笔记本直接合上.但是这样原先在跑的进程就会挂起或者结束,如果正在下载,那么 ...
- Linux系列:Ubuntu/fedora实用小技巧—禁止自动锁屏、设置免密码自动登录、免密码执行sudo操作
首先声明:该文虽以Ubuntu 13.04为例,同样适用于Fedora 17(已测试),但在较低版本的Ubuntu下可能有所差异,具体看后面的注意事项. 技巧目录: 解决Ubuntu下每隔几分钟自动锁 ...
- iOS开发--QQ音乐练习,后台播放和锁屏界面
一.设置后台播放 首先允许程序后台播放 代码实现 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOpti ...
- Android-bindService本地服务-音乐播放(后台播放)-下
在上一篇 Android-bindService本地服务-音乐播放-上,博客中是不能在后台中播放到,这次博客增加了一个后台播放 通常情况下,Activity切换到后台,Service提升到前台进程, ...
- ubuntu 18.04取消自动锁屏以及设置键盘快捷锁屏
1:操作设置取消自动锁屏: setting-->power--->never 2: 设置自动锁屏快捷键: 快捷键设置一般在setting-->devices--->keybo ...
- Windows 聚焦的锁屏壁纸设置为桌面壁纸
需求: Windows的锁屏壁纸偶尔遇到非常喜欢的壁纸,想设置为桌面壁纸. 步骤如下: 1. “Windows 聚焦”的锁屏壁纸都保存在隐藏文件夹 --- Assets里. a. 打开“资源管理器 b ...
- iOS音乐后台播放及锁屏信息显示
实现音乐的后台播放.以及播放时,能够控制其暂停,下一首等操作,以及锁屏图片歌曲名等的显示 此实例须要真机调试.效果图例如以下: project下载:githubproject下载 实现步骤: 1.首先 ...
- OC-音乐播放器-锁屏处理
QQ音乐播放的过程中,锁屏状态下的效果如下: 也就是说,QQ音乐播放过程中,添加锁屏远程事件的监听. 本文只记录本人知道的小知识点,不提供完整的代码. 实现的原理: (1)获取锁屏歌曲信息中心:MPN ...
随机推荐
- BZOJ 4517--[Sdoi2016]排列计数(乘法逆元)
4517: [Sdoi2016]排列计数 Time Limit: 60 Sec Memory Limit: 128 MBSubmit: 1727 Solved: 1067 Description ...
- django 使用celery 实现异步任务
celery 情景:用户发起request,并等待response返回.在本些views中,可能需要执行一段耗时的程序,那么用户就会等待很长时间,造成不好的用户体验,比如发送邮件.手机验证码等. 使用 ...
- LayUI把表格中的时间戳改成格式化的时间
- Python(文件上传)
day26 通过socket上传文件. post_client.py import socket import os sk = socket.socket() print(sk) address = ...
- Centos之文件搜索命令find
find [搜索范围] [搜索条件] #搜索文件 find / -name install.log #避免大范围搜索,会非常耗费系统资源 #find是在系统当中搜索符合条件的文件名.如果需要匹配, 使 ...
- 【BZOJ1859】【ZJOI2006】碗的叠放
题目大意:给你n个碗,求如何堆叠,使得它们的总高度最低. 首先,我们枚举碗的叠放顺序. 假设我们已经堆好了前i个碗,那么在堆第i+1个碗时,我们要将第i+1个碗与前i个碗比较,确定第i+1个碗的离地高 ...
- POJ 1157
#include<iostream> //成大才子---经典代码~ #include<stdio.h> #include<algorithm> #define MA ...
- Collection、Set、List概念上的区别及关联
类图如下:
- Weinre远程调试工具
1.Weinre是什么? Weinre全称 Web Inspector Remote,是一个简单好用的远程调试工具.我们可以在自己的PC上修改对应网页的页面元素.样式,或是查看Javascript变量 ...
- R语言运算符
运算符是一个符号,它告诉编译器执行特定的数学或逻辑操作. R语言丰富的内置运算符,并提供以下类型的运算符. 运算符类型 在R编程中有以下类型的运算符 - 算术运算符 关系运算符 逻辑运算符 赋值运算符 ...