Swift 第三方 播放器AliyunPlayer(阿里云播放器)(源码)

news2024/11/18 5:39:26

一直觉得自己写的不是技术,而是情怀,一个个的教程是自己这一路走来的痕迹。靠专业技能的成功是最具可复制性的,希望我的这条路能让你们少走弯路,希望我能帮你们抹去知识的蒙尘,希望我能帮你们理清知识的脉络,希望未来技术之巅上有你们也有我。

前言

公司的两个三个项目用到了阿里云的播放器,今天有空简单的记录一下,使用阿里云播放器的整个过程.我会从简单开始慢慢增加需求来完善使用的过程.

下面我会封装一个播放器管理器,跟UI拆分开,然后慢慢加需求.

正题

1.最简单的播放器

在这里插入图片描述

直接拿一个MP3的链接,调用AliyunPlayer的接口进行播放
封装播放器管理对象
在这里插入图片描述
调用
在这里插入图片描述

2.增加播放按键, 可以开始,暂停

在这里插入图片描述

增加一个暂停的方法和一个开始和暂停的按键可以进行开始和停止播放的动作
新增一个暂停的方法
在这里插入图片描述
UI页面增加多一个播放按键
在这里插入图片描述

3.增加滚动条现实播放进度

在这里插入图片描述

增加一个播放进度条,能够实时的监听播放的进度
1.编写进度条的UI
2.代理实现播放监听播放的进度实时更新UI

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
播放器管理器
在这里插入图片描述
在这里插入图片描述
回到UI控制器
在这里插入图片描述
在这里插入图片描述

4.增加开始结束播放的Label

在这里插入图片描述

增加播放歌曲进度的Label和歌曲总时间的Label
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
回到播放管理器
在这里插入图片描述
在这里插入图片描述

5.点击拖拽滚动条改变播放进度

在这里插入图片描述

实现拖拽滚动条和点击滚动条改变播放进度
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.快进后退10秒

在这里插入图片描述

实现前进10秒后腿10秒改变播放进度
UI控制器在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
回到播放管理器
在这里插入图片描述

7.前一首下一首

在这里插入图片描述

实现切换歌曲,可以上一首歌曲和下一首歌曲
播放管理器新增的代码
在这里插入图片描述
在这里插入图片描述

回到UI控制器
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

8.顺序播放 或者 随机播放

在这里插入图片描述

UI界面,增加多一个按键
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
播放管理器
在这里插入图片描述
在这里插入图片描述

9.播放模式

在这里插入图片描述
说明:经过上面的一系列开发应该发现,播放音乐和结束播放音乐的时候,播放按键的状态是没有跟随变化的,所以先完善这个步骤先,这时候需要时间SDK提供监听播放状态的代理.

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

UI界面
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

点击按键改变枚举的状态
在这里插入图片描述

播放控制器
新建一个用于控制播放模式的枚举
在这里插入图片描述
在这里插入图片描述

每一首歌曲播放完毕之后,能正常自动播放下一曲的逻辑就是下面的图片内容决定
在这里插入图片描述

当我们点击按键的时候,会根据目前的播放模式来决定选择下一首什么样的歌曲
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/380776.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

卡尔曼滤波——一种基于滤波的时序状态估计方法

文章目录1. Kalman滤波及其应用2. Kalman原理公式推导:Step 1:模型建立Step 2:开始Kalman滤波Step 3:迭代滤波本文是对 How a Kalman filter works, in pictures一文学习笔记,主要是提炼核心知识,方便作者快…

已解决pip install wxPython模块安装失败

已解决(pip install wxPython安装失败)error: legacy-instal1-failure Encountered error while trying to install package.wxPython note: This is an issue with the package mentioned above,not pip. hint : See above for output from …

如何用AST还原某音的JSVMP

1. 什么是JSVMP vmp简单来说就是将一些高级语言的代码通过自己实现的编译器进行编译得到字节码,这样就可以更有效的保护原有代码,而jsvmp自然就是对JS代码的编译保护,具体的可以看看H5应用加固防破解-JS虚拟机保护方案。 如何区分是不是jsv…

OpenFeign 切换HttpClient遇到的问题

背景 OpenFeign支持三种Http请求方式,默认情况下通过jdk中的HttpURLConnection向下游服务发起http请求(详见下图,源码详见feign.Client.Default), 默认的Client 采用 HttpURLConnection, 这种是无法复用的…

为什么一定要做集成测试?

集成测试,我们都不陌生,几乎我们产品每天都在进行。但是我们真的有好好思考:为什么一定要做集成测试吗?只是为了简单的将“积木”搭起来就行,还是有什么其他的深意? 深意可能不一定会有,但是意…

qt5.15 快速安装 国内源

1 qt5.15 安装问题 最大的问题就是需要在线下载与安装。即使挂了科学上网,国外的服务器下载速度也还是超级慢。 在网上找了各种解决办法后,终于找到一个快速下载安装的办法。 2 安装器下载 阿里源、清华源都没有Windows的安装器了,在腾讯…

IPv4地址细讲

文章目录一、IPv4地址简介二、IPv4地址的表示方法点分十进制记法三、IP地址的分类四、特殊IPv4地址:全 “0” 和全 “1”五、常用的三类IP地址使用范围六、五类IP地址的范围一、IPv4地址简介 IPv4地址分5类,每一类地址都由固定长度的字段组成&#xff1…

软件项目管理简答题复习(1)

1.项目:创造唯一的产品,唯一的服务临时性的努力 2.项目特征:不可见性,复杂性,一致性,变更性,特殊性 3.项目和日常活动的区别? 项目具有特殊性,负责人是项目经理&#…

软件项目管理计算题复习(1)

软件项目管理计算题复习(1) 1.关键路径:决定项目最早完成的一系列的活动。网络图中最长的路,最少的时差,总是差为0,也是关键路径。 2.最短路径也是最短工期 3.总时差:最晚开始-最早开始最晚结…

激光共聚焦显微镜在材料生产领域中的应用

在材料生产领域中,如需要分析金属材料/部件粗糙度的时候,不管是使用原子力显微镜还是台阶仪,都没有办法同时兼顾分辨率、扫描区域以及扫描速度。而基于激光共聚焦显微测量技术的共聚焦激光扫描显微镜,配备了真彩相机并提供还原的3…

NVIDIA CUDA初级教程视频学习笔记1

周斌老师 课程链接: 目录第一课内容生态环境第一课 CPU体系架构的概述什么是CPU指令存储器架构CPU内部的并行性第一课 预修课程: Cuda c programming guide 参考内容 1,2,3查找一下。 内容 CPU体系架构概述 并行程序设计概述 CUDA开发环境…

二叉树——二叉搜索树的最近公共祖先

二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。 百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大&#…

design\project\学习 OAuth 读书笔记(一)

OAuth(一) 原文链接:OAuth 2.0 tutorial | OAuth flows 目录OAuth(一)应用场景分析问题1:代表用户授予有限访问权限OAuth 代表用户授权问题2:允许第三方应用程序有限的访问API(服务…

TPS74525PQWDRVRQ1典型应用TPS62992QRYTRQ1汽车用稳压器 规格参数

TPS74525PQWDRVRQ1线性稳压器 IC 2.5V 500MA 6WSON明佳达电子【概述】TPS745/TPS745-Q1可调节500mA LDO稳压器具有极低的静态电流,并可提供快速的线路和负载瞬态性能。TPS745/TPS745-Q1具有130mV的超低压差(500mA电流),这有助于提…

EEP封装?METS封装?还是ZIP封装?

档案信息化行业的老兵想必对10多年前的EEP封装包印象深刻,其自包含、自描述、自证明的“洋葱结构”曾经火遍大江南北,为电子文件的真实性和完整性保证提供了一种重要手段,但其过分严谨刻板的封装结构也曾让很多档案从业人员抓狂。笔者曾经主导…

Java开发 - 分页查询初体验

前言在上一篇,我们对es进行了深入讲解,相信看过的小伙伴已经能基本掌握es的使用方法,我们知道,es主要针对的是搜索条件,在这方面es具有无可比拟的优势,但我们也会注意到,有时候搜索条件过于宽泛…

基于JavaWeb实现的学生选课系统(源码+数据库+文档)

一、项目简介 本项目是一套基于JavaWeb实现的学生选课系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,e…

基于开源IM即时通讯框架MobileIMSDK:RainbowChat-iOS端v6.2版已发布

关于MobileIMSDK MobileIMSDK 是一套专门为移动端开发的开源IM即时通讯框架,超轻量级、高度提炼,一套API优雅支持UDP 、TCP 、WebSocket 三种协议,支持iOS、Android、H5、标准Java平台,服务端基于Netty编写。 工程开源地址是&…

Nuxt.js项目开发过程遇到的问题以及对Nuxt.js的学习与总结

文章目录📋前言💻Nuxtjs3快速了解🎯nuxtjs是什么?官网是这样介绍它的。🎯关于nuxtjs的SSR开发🧩SSR应用场景🧩nuxtjs的特性💻nuxtjs的初始目录结构🎯关于各个目录的解释&…

智能家居控制系统

🥁作者: 华丞臧. 📕​​​​专栏:【项目经验】 各位读者老爷如果觉得博主写的不错,请诸位多多支持(点赞收藏关注)。如果有错误的地方,欢迎在评论区指出。 推荐一款刷题网站 👉 LeetCode刷题网站…