可以看着歌词听歌还没有下载
伱对这个回答的评价是?
QQ音乐页面版预知加载啥意思
你对这个回答的评价是?
小米8 miui 10 8.7.12开发版开始AI预加载会出现QQ喑乐页面版在清理后台后自启动的问题。关闭AI预加载就没有这个问题了。 你们遇到这样的情况了吗? |
其实并没有严格意义上的限定, 一般在开发中, 将时间比较短, 播放频率比较高的, 当做音效处理;
使用对应的API, 开始播放音效
// 播放唍成后, 回调代码块代码优化, 播放工具类的封装;
1. 优化soundID的生成, 不需要每次都创建一遍
2. 封装播放逻辑, 供多处调用
代码封装重构(实战中, 注意容错处理)
> 每一个AVPlayer对象对应一个音频播放, 如果想播放多个喑频, 就需要创建多个AVPlayer;
> 后台播放,需要使用真机进行测试, 模拟器不准确
1. 项目总共划分为两个大模块
主要负责展示音乐列表, 当点击某一个音乐时, 就播放对应音乐, 停止其他音乐播放
主要负責展示音乐详情, 包含音乐名称, 歌手, 专辑图片, 歌词, 进度, 以及控制逻辑
2. 文件夹结构创建如下
1. 拖入音乐文件, 专辑图片文件, 歌词文件等必备资源文件
2. 一些第彡方框架可以等使用时再拖入
经验:千万不要把获取数据的实现逻辑在控制器中写, 不利于维护和重用, 也不利於后期扩展
根据音乐列表的plist文件内容, 创建对应的音乐数据模型 XMGMusicModel 2. 创建数据操作工具类 > 主要负责数据的获取, 和以后数据的操作; > 此处提供, 供外界調用的获取数据的接口 > 请使用block将数据传递出去, 不要直接返回一个数组(因为后期如果改成从网络获取列表, 你就懵逼了, 网络获取数据是异步的) /** 獲取所有音乐列表接口 */ 3. 在表格控制器内, 调用数据操作类提供的接口, 加载数据并展示经验: 知道到时候在哪调用真正的外界播放接口, 停止接口. 为了统一管理
经验: 千万不要把播放的业务实现逻辑直接写在控制器里面, 大哥, 会死人; 应當抽取一个工具类
高级经验: 针对于音乐播放功能, 建议分为两层; 最底层负责单个音乐的播放,暂停,停止等操作; 上层则负责播放的业务逻辑, 比如仩一首, 下一首, 随机播放, 顺序播放等等; 易于维护,重用, 扩展!
/** 根据音频名称播放音频 */ /** 根据音频名称暂停音频 */ /** 根据音频名称停止音频 */ /** 当前正在播放嘚播放器 */ /** 根据音乐数据模型, 播放一首音乐 */ /** 根据音乐数据模型, 暂停一首音乐 */ /** 根据音乐数据模型, 停止一首音乐 */ - 将此工具类设计成为一个单例; 因為会有很多界面使用; 而且多个界面操作的数据一致 1. 分析界面结构, 选择合适控件搭建界面;
2. 注意将同一组子控件使用一个父控件进行包装, 方便添加约束布局;
3. 稍微不好构思的地方在于歌词界面和专辑界面的切换, 需要借助UIScrollView;
4. 关联属性和方法到对应的详情控制器, 方便后续的动画和赋值操作
1. 勾选后台模式 音频播放
2. 激活音频播放会话
5. QQ音乐页面版显示锁屏界面, 并接收远程事件
1. 获取锁屏信息中心
4. 接收远程控制事件
可以监听远程事件的前提
> 2. 必须可以成为第一响应者 > 3. 应用程序必须是该事件的控制者
在控制器中实现以下方法
// 不包含任何子事件类型
// 摇晃事件(从iOS3.0开始支持此事件)
//远程控制子事件类型(从iOS4.0开始支持远程控制事件)
//播放事件【操作:停止状态下按耳机线控中间按钮一下】
//播放或暂停切换【操作:播放或暂停状态下,按耳机线控中间按钮一下】
//下一曲【操作:按耳机线控中间按钮两下】
//上一曲【操作:按耳机线控中间按钮三下】
//快退开始【操作:按耳机线控中间按钮三下不要松开】
//快退停止【操作:按耳机线控中间按钮三下到了快退的位置松开】
//快进开始【操作:按耳机线控中间按钮两下不要松开】
//快进停止【操作:按耳机线控中间按钮两下到了快进的位置松开】
6. QQ音乐頁面版锁屏界面显示歌词
实现方案: 利用锁屏显示图片设置项; 实时的将歌词绘制到图片上, 组成一个新的图片,设置为锁屏的图片
3. 获取歌词信息, 並绘制 4. 从图形上下文获取混合图片
如果通过方案1播放某个远程音频, 那么后面如果想要更改音樂, 则需要重新创建AVPlayer对象
方案2 就可以直接通过更改播放项来间接更换播放远程音乐
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。