网易云音乐开发--音乐播放暂停切换上下首功能实现
音乐播放暂停功能实现
封装一个控制音乐播放/暂停的功能函数
看一下文档,我需要用的api
这个接口好像没有音频的url,查看一下,换个api

这样就能拿到id,并可以播放了

但是音乐并没有播放
我们少了这个
现在可以播放了,如果有上面的需要,可以参考一下

"requiredBackgroundModes": ["audio", "location"]

完善代码,暂停音乐
解决系统任务栏控制音乐播放状态显示不一致问题
问题:如果用户操作系统的控制音乐播放/暂停的按钮,页面不知道,导致页面显示是否播放的状态和真实播放状态不一致
解决方案:
通过控股音频的实例backgroundAudioManager 去监听音乐播放/暂停

我们需要写俩个的回调
我们将backgroundAudioManager提升了一下,并挂载到this上。这样页面都能用它

这样就写完了三个监视,但是代码的重复率太高了。所以我们要封装一个修改播放状态的功能函数

getApp解决页面销毁音乐播放状态问题
刚刚解决了系统任务栏控制音乐播放状态显示不一致问题

就是把数据存储在app.js这个全局中,这样不会随页面的销毁,数据也销毁了
在全局初始化这俩个参数
直接拿来用
判断当前页面音乐是否在播放

页面通信需求分析,npm包使用准备工作
通过点击这个,绑定事件。实现上下首的切换
注意的是我们还要传入一个id,来分辨是上一首还是下一首
现在我们知道了切哥的类型,但是只在详情页。我们需要这个传递到recommend页面才能实现上下首的切换。其实就是把recommend页面的id传进入就可以了。这里我们需要使用npm包
初始化package.json
微信小程序使用npm init 这个是问你选择的包名是啥?不能以英文开头
然后一直回车就可以了
然后就有包的说明书了
勾选运行使用npm

2022-3-8 现在这个按钮官方改为 将JS编译为es5,把这个勾上就行
mroderick/PubSubJS: Dependency free publish/subscribe for JavaScript (github.com)
在这里我们需要补充一下定义事件的相关内容
1.分类
1.标准DOM事件
2.自定义事件
2.标准DOM事件
1.举例:click,input
2.事件名固定的,事件由浏览器触发
3.自定义事件
1.绑定事件
1.事件名
2.事件的回调
(我们使用的pubsub.js的订阅方)
3.订阅方式为接收数据一方
2.触发事件
1.事件名
2.提供事件参数对象,等同于原生事件的event对象
(我们使用的pubsub.js的发布方:PubSub.publish())
3.发布方为提供数据一方
因为songDeatil需要把类型发送给recommendSong,因此songDeatil是发布方,recommendSong是订阅方
页面先去引用它
但是我们报错了。说的是路径的错误。这是因为,我们没有构建包名
1.开发工具--》工具--》构建npm
2.会将node_modules中的包名打包到miniprogram_npm中
页面通信完整实现
先订阅,后发布

打印出发布回来的俩个数据,第一个是事件的名称,第二个就是传递回来的数据
如何传上一首和下一首。我们这里可以使用data
把下标传进入
为什么,我们要传入下标呢?这是因为这样,可以操作上一首和下一首
我们将这个数据的上下的id拿到手,此时角色互换,需要将musicId回传给songDetail页面

为了防止多次订阅,我们这里还需要使用PubSub.unsubscribe('musicId')取消订阅
切换歌曲功能实现
上一步,我们已经成功的实现了俩个页面之间的通信
之前,我们就封装好了一个函数来获取音乐的i详细信息,这里我们就直接调用它
这样我们就能实现上下音乐的切换了。现在我们要实现一个新的功能,那就是自动播放当前的音乐

还是调用我们之前的方法。现在有一个bug,就是我们如果选择第一首音乐,然后按<发现报错

因为我们在下标为0在去找,不就是为-1了吗。也就是我们要考虑第1首和最后1首,当我们点击点1首,让他切换到最后1首,最后1首切换到第1首
完整效果

解决了一个小bug
这一块搞错了,导致页面跟系统任务栏控制音乐播放状态显示不一致稍微跟想象的不同
相关文章:
网易云音乐开发--音乐播放暂停切换上下首功能实现
音乐播放暂停功能实现 封装一个控制音乐播放/暂停的功能函数 看一下文档,我需要用的api 这个接口好像没有音频的url,查看一下,换个api 这样就能拿到id,并可以播放了 但是音乐并没有播放 我们少了这个 现在可以播放了ÿ…...
如何学习网络安全?
近半年我一直在整理网络安全相关资料,对于网络安全该怎么入门我谈谈我的看法,网络安全一直处于法律的边缘,学的不好或者剑走偏锋一下子人就进去了,所以我建议入门前先熟读《网络安全法》,除此之外还有《互联网安全产品…...
软件测试适合女生吗?
大家好,我是程序员馨馨,一个混过大厂,待过创业公司,有着 6 年工作经验的软件测试妹纸一枚。之前在也写过几篇文章,之后很多朋友过来咨询女生能不能做软件测试。 今天索性写篇文章,详细的介绍一下软件测试&a…...
华为云——代码托管的使用
一、打开前后端项目 登录华为云,点击页面右上角的用户名——点击个人设置 2.点击代码托管的HTTPS密码管理,设置自己的密码 3.回到代码仓库,复制HTTP地址 4.打开GitHubDesktop,点击左上角进行仓库克隆 (我这里已经cl…...
ChatGPT从⼊⻔到精通
编者寄语 ChatGPT 作为⼀种强⼤的⾃然语⾔处理模型,已经成为人工智能领域的重要研究⽅向之⼀。在不断的发展和创新 中,ChatGPT 已经具备了很强的⾃然语⾔处理能⼒,其可以实现⾃然语⾔的⽣成、理解和交互,为⼈类的⽣产和⽣活带来了…...
node + alipay-sdk 沙箱环境简单测试电脑网站支付
正式上线需要上传营业执照,不知道怎么去申请一个。。。。。 使用沙箱测试,首先前往支付宝开放平台控制台可看到左下方的沙箱测试链接: 然后设置接口加签方式,选择系统默认密钥: 系统默认密钥 -> 公钥模式 -> 查看…...
卷积神经网络详解
(一)网络结构 一个卷积神经网络里包括5部分——输入层、若干个卷积操作和池化层结合的部分、全局平均池化层、输出层: ● 输入层:将每个像素代表一个特征节点输入进来。 ● 卷积操作部分:由多个滤波器组合的卷积层。 …...
API架构的选择,RESTful、GraphQL还是gRPC
文章目录 一、RESTful1、什么是RESTful?2、RESTful架构的原则3、RESTful的适用场景4、RESTful的优点5、RESTful的缺点 二、GraphQL1、什么是GraphQL?2、GraphQL的原则3、GraphQL的优点4、GraphQL的缺点 三、gRPC1、什么是gRPC2、gRPC的应用场景3、gRPC的…...
人机融合智能的测量、计算与评价
老子在《道德经》第二十一章写道:"道之为物,惟恍惟惚。惚兮恍兮,其中有象;恍兮惚兮,其中有物。窈兮冥兮,其中有精;其精甚真,其中有信。"(“道”这个东西,没有清楚的固定实体。它是那样的恍恍惚惚啊,其中却有形象。它是那样的恍恍惚…...
虹科新品 | 高可靠性、可适用于高磁/压的线性传感器!
PART 1 什么是线性传感器? 基本上,线性传感器是一种用于测量位移和距离的设备,具有高可靠性。测量网格通过光学传感器移动测量数据,数据被光学记录并通过控制器转换为电气数据,而控制器又可以转换为路径。 因此&…...
支付系统设计五:对账系统设计01-总览
文章目录 前言一、对账系统构建二、执行流程三、获取支付渠道数据1.接口形式1.1 后台配置1.2 脚本编写1.2.1 模板1.2.2 解析脚本 2.FTP形式2.1 后台配置2.2 脚本编写2.2.1 模板2.2.2 解析脚本 四、获取支付平台数据五、数据比对1. 比对模型2. 比对器 总结 前言 从《支付系统设…...
阿里三面过了,却无理由挂了,HR反问一句话:为什么不考虑阿里?
进入互联网大厂一般都是“过五关斩六将”,难度堪比西天取经,但当你真正面对这些大厂的面试时,有时候又会被其中的神操作弄的很是蒙圈。 近日,某位测试员发帖称,自己去阿里面试,三面都过了,却被…...
办公智慧化风起云涌,华为MateBook X Pro 2023是最短距离
今年以来,我们几乎每个月,甚至每星期都可以看到大模型应用,在办公场景下推陈出新。 办公智慧化已成必然,大量智力工作正在被自动化。一个普遍共识是:AI能力范围之内的职业岌岌可危,AI 能力范围之外的职业欣…...
分布式项目 09.服务器之间的通信和三个工具类
项目的结构:1.通过Nginx首先把访问首页的请求发送到前端web服务器,2.web服务器会根据请求的url中的一些细节,来把相关的请求发送到相关的服务器中,3.相关的服务器会处理业务,并且返回结果到web服务器中,最后…...
C# 基本语法
C# 基本语法 C# 是一种面向对象的编程语言。在面向对象的程序设计方法中,程序由各种相互交互的对象组成。相同种类的对象通常具有相同的类型,或者说,是在相同的 class 中。 例如,以 Rectangle(矩形)对象为…...
做网络爬虫需要掌握哪些技术?
网络爬虫是指通过代码自动化地访问网页并收集数据的程序,要开发一个成功的爬虫,需要掌握以下技术: 1. HTTP 协议:了解 HTTP 请求和响应的基本内容,以及如何使用 HTTP 请求头和响应头来优化爬虫性能。 2. HTML/CSS/Ja…...
工作利器:三种简单方法将PPT转换成PDF
PDF是一种常用的文件格式,适合数据传输和阅读。在工作中,有时我们需要将PPT文件转换为PDF格式以方便使用。下面是几种将PPT转换为PDF的方法,其中方法二将修改为使用记灵在线工具进行转换。 方法一:直接将文件导出为PPT 一般来说…...
《设计模式》状态模式
《设计模式》状态模式 定义: 状态模式也称为状态机模式,允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。属于行为型模式。 状态模式的角色组成: State(抽象状态类):定义一个接口用来封装与…...
2023年好用的设计图制作软件推荐
说到设计图制作软件,设计师当然最关注核心设计功能,包括预加载模板、图像数据库、界面和基本编辑功能。此外,还要考虑设计图制作软件是否可以协同工作。 1.即时设计 即时设计是一款「专业UI设计工具」,不受平台限制,…...
JavaNote_1.0.2_Spring
Spring框架定义 Spring Framework: Spring 最初的项目,包括六大模块:DAO、ORM、AOP、JEE、WEB、CORE。控制反转和面向切面编程是它的核心功能。 Spring Boot: 一套全新的基础框架,用来快速搭建Spring应用,…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...
(转)什么是DockerCompose?它有什么作用?
一、什么是DockerCompose? DockerCompose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器。 Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。 DockerCompose就是把DockerFile转换成指令去运行。 …...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)
本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...
C#学习第29天:表达式树(Expression Trees)
目录 什么是表达式树? 核心概念 1.表达式树的构建 2. 表达式树与Lambda表达式 3.解析和访问表达式树 4.动态条件查询 表达式树的优势 1.动态构建查询 2.LINQ 提供程序支持: 3.性能优化 4.元数据处理 5.代码转换和重写 适用场景 代码复杂性…...
【Elasticsearch】Elasticsearch 在大数据生态圈的地位 实践经验
Elasticsearch 在大数据生态圈的地位 & 实践经验 1.Elasticsearch 的优势1.1 Elasticsearch 解决的核心问题1.1.1 传统方案的短板1.1.2 Elasticsearch 的解决方案 1.2 与大数据组件的对比优势1.3 关键优势技术支撑1.4 Elasticsearch 的竞品1.4.1 全文搜索领域1.4.2 日志分析…...
华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)
题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...
Modbus RTU与Modbus TCP详解指南
目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...
