iOS后台播放音乐及用户交互处理

后台播放是任何一个音频软件都支持的功能,在上一篇博客中,详细介绍了使用AVAudioPlayer播放音频的方法,这篇博客将对后台的处理做介绍,关于播放与设置音频的博客地址:http://my.oschina.net/u/2340880/blog/420129。

一、设置后台播放

iOS设置后台音频播放的步骤非常简单,首先需要在系统设置的plist文件中添加一个键Required background modes,值为App plays audio or streams audio/video using AirPlay,如下:

然后进行如下代码设置:

?
1
2
3
     AVAudioSession *session = [AVAudioSession sharedInstance];
     [session setActive:YES error:nil];
     [session setCategory:AVAudioSessionCategoryPlayback error:nil];

此时播放音频时我们点击HOME回到主页面,会发现音频不会停,已经实现后台播放的功能。

二、设置后台用户交互

在appDelegate中,我们需要先注册响应后台控制:

?
1
[[UIApplication sharedApplication] beginReceivingRemoteControlEvents];

然后在appDelegate中我们实现如下函数处理后台传递给我们的信息:

?
1
2
3
4
5
-( void )remoteControlReceivedWithEvent:(UIEvent *)event{
     if  (event.type==UIEventTypeRemoteControl) {
         NSLog(@ "%ld" ,event.subtype);
     }
}

event中的subtype是操作类型,我们打开系统桌面抽屉,可以看到如下的控制键:

subtype中的枚举便是点击这些控制键后传递给我们的消息,我们可以根据这些消息在app内做逻辑处理。枚举如下,其中只有100之后的在音频控制中对我们有效:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
typedef  NS_ENUM(NSInteger, UIEventSubtype) {
     // available in iPhone OS 3.0
     UIEventSubtypeNone                              = 0,
     // for UIEventTypeMotion, available in iPhone OS 3.0
     UIEventSubtypeMotionShake                       = 1,
     //这之后的是我们需要关注的枚举信息
     // for UIEventTypeRemoteControl, available in iOS 4.0
     //点击播放按钮或者耳机线控中间那个按钮
     UIEventSubtypeRemoteControlPlay                 = 100,
     //点击暂停按钮
     UIEventSubtypeRemoteControlPause                = 101,
     //点击停止按钮
     UIEventSubtypeRemoteControlStop                 = 102,
     //点击播放与暂停开关按钮(iphone抽屉中使用这个)
     UIEventSubtypeRemoteControlTogglePlayPause      = 103,
     //点击下一曲按钮或者耳机中间按钮两下
     UIEventSubtypeRemoteControlNextTrack            = 104,
     //点击上一曲按钮或者耳机中间按钮三下   
     UIEventSubtypeRemoteControlPreviousTrack        = 105,
     //快退开始 点击耳机中间按钮三下不放开
     UIEventSubtypeRemoteControlBeginSeekingBackward = 106,
     //快退结束 耳机快退控制松开后
     UIEventSubtypeRemoteControlEndSeekingBackward   = 107,
     //开始快进 耳机中间按钮两下不放开
     UIEventSubtypeRemoteControlBeginSeekingForward  = 108,
     //快进结束 耳机快进操作松开后
     UIEventSubtypeRemoteControlEndSeekingForward    = 109,
};

三、设置后台信息显示及锁屏界面设置

设置锁屏界面显示信息的原理是通过设置一个系统的字典,当音频开始播放时,系统会自动从这个字典中读取要显示的信息,如果需要动态显示,我们只需要不断更新这个字典即可。首先需要添加<MediaPlayer/MediaPlayer.h>这个头文件。

代码示例如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
     //设置歌曲题目
     [dict setObject:@ "题目"  forKey:MPMediaItemPropertyTitle];
     //设置歌手名
     [dict setObject:@ "歌手"  forKey:MPMediaItemPropertyArtist];
     //设置专辑名
     [dict setObject:@ "专辑"  forKey:MPMediaItemPropertyAlbumTitle];
     //设置显示的图片
     UIImage *newImage = [UIImage imageNamed:@ "43.png" ];
     [dict setObject:[[MPMediaItemArtwork alloc] initWithImage:newImage]
              forKey:MPMediaItemPropertyArtwork];
     //设置歌曲时长
     [dict setObject:[NSNumber numberWithDouble:300] forKey:MPMediaItemPropertyPlaybackDuration];
     //设置已经播放时长
     [dict setObject:[NSNumber numberWithDouble:150] forKey:MPNowPlayingInfoPropertyElapsedPlaybackTime]; 
     //更新字典
     [[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:dict];

效果如下:

iOS后台音频播放及锁屏界面显示音频信息相关推荐

  1. iOS音乐后台播放、锁屏封面及播放控制

    在默认情况下App被切换到后台时,音乐的就停止播放了,但音乐类App的一般都会需要在后台继续播放,这样用户就可以一边听音乐,一边操作其他的App.对于这种情况我们可以对App做一些简单的配置,实现后台 ...

  2. iOS锁屏界面音频播放控制

    公司的app里面有后台音频播放功能,最近发现,当在锁屏界面(后台)时,不能控制播放页面的音频播放,是因为没有实现远程控制事件处理. 下面说说大概实现过程:由于后台播放功能早已实现(不做详细叙述),这里 ...

  3. 关于音乐播放器锁屏播放,后台播放,封面显示等

    1. 如果应用需要后台播放:那么在appdelegate 中添加 [AVAudioSession *session = [AVAudioSession sharedInstance];[session ...

  4. android锁屏音乐歌词的实现,在锁屏界面显示 Apple Music 的歌词

    Apple Music 一直以来的一个缺点就是歌词.不只是缺少歌词,还有歌词的显示.没有滚动歌词,也不能在锁屏界面显示.当然其他播放器的锁屏显示功能在 iOS 11 通知中心改版时也挂掉了.但是这个需 ...

  5. android 系统锁屏音乐播放器,Android实现音乐播放器锁屏页

    本文实例为大家分享了Android音乐播放器锁屏页的具体代码,供大家参考,具体内容如下 首页我们先看一下效果图 下边来说一下实现逻辑,其主要思路就是新建一个activity使其覆盖在锁屏页上边. 一. ...

  6. android app应用后台休眠,安卓手机锁屏后程序自动关闭,怎么设置手机app允许锁屏后台运行...

    原标题:安卓手机锁屏后程序自动关闭,怎么设置手机app允许锁屏后台运行 安卓手机锁屏后,很多程序就会自动关闭,实际上,这是安卓手机的一种保护机制.为了使系统能够流畅稳定的运行以及更加省电,它都会在手机 ...

  7. iOS锁屏显示歌曲信息

    导入头文件#import <MediaPlayer/MediaPlayer.h> 远程控制事件接收与处理 - (void)viewWillAppear:(BOOL)animated { [ ...

  8. iOS音乐后台播放及锁屏信息显示

    实现音乐的后台播放.以及播放时,能够控制其暂停,下一首等操作,以及锁屏图片歌曲名等的显示 此实例须要真机调试.效果图例如以下: project下载:githubproject下载 实现步骤: 1.首先 ...

  9. iOS 音乐播放器之锁屏效果+歌词解析

    概述 功能描述:锁屏歌曲信息.控制台远程控制音乐播放:暂停/播放.上一首/下一首.快进/快退.列表菜单弹框和拖拽控制台的进度条调节进度(结合了QQ音乐和网易云音乐在锁屏状态下的效果).歌词解析并随音乐 ...

最新文章

  1. Object-c基础之一:#import,NSLog(),数据类型
  2. JDBC之一:JDBC快速入门
  3. VScode 汉化以及侧栏npm脚本显示
  4. UIKit框架各个类的简介
  5. java服务器修改缓存数据,java监控服务器数据存入缓存
  6. mysql开启日志记录
  7. 磁测仪高斯计与特斯拉计、磁通计的区别
  8. mysql数据库没有导出权限_mysql导出没有数据库
  9. 高等数学笔记:定积分换元谬误
  10. 运动控制 轨迹规划综述
  11. 水火箭的工作原理(化学反应)//2021-2-24 从群众中来,到群众中去
  12. C# 读取outlook 本地签名
  13. 自学python能成功吗_自学Python之路一
  14. MySQL——数据库基本操作(教程)
  15. HTML5期末大作业:在线电影介绍(6页) HTML+CSS+JavaScript 大学生毕设网页设计源码HTML web网页设计制作成品
  16. 2021年全国职业院校技能大赛(中职组)网络安全竞赛试题(1)详细解析教程
  17. 从你的全世界路过-Freedom
  18. win10 10074版本qq显示问题
  19. 虚拟机如何使用共享文件夹传文件
  20. 国内免费发布信息平台哪个好?

热门文章

  1. 电脑开机内存占用超50%如何解决
  2. Java线程同步(含详细解释/代码实例)
  3. oracle 锁表,锁对象,锁记录
  4. 如何规范App广告的隐私获取,让用户拥有更多知情权?
  5. 高中学历能学python_高中生学Python编程基础知识(4) | k12教育网
  6. 自动拼写检查---jazzy简介
  7. Mac取消远程控制的技巧
  8. 仿支付宝金额滚动代码
  9. RocketMQ系列:rocketmq运维控制台使用详解(全网独家)
  10. 常见鸟的种类及特点_玄凤鹦鹉_种类_特征_宠物鸟百科