• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

uniapp-z-audio: uniapp插件: 支持h5, app, 微信小程序的音频背景播放组件 ...

原作者: [db:作者] 来自: 网络 收藏 邀请

开源软件名称:

uniapp-z-audio

开源软件地址:

https://gitee.com/jingangtui/uniapp-z-audio

开源软件介绍:

uniapp-zaudio 背景音频播放组件

当前版本v2.2.51, 查看版本console.log(ZAudio.version)

预览

http://jingangtui.gitee.io/uniapp-z-audio/#/

若文档展示不全,请查看gitee或下载示例

特性

  • 支持 H5, app, 微信小程序播放
  • 支持背景音频播放
  • 支持多页面同步状态
  • 支持 3 种 UI 样式
  • 支持来电中断后续播
  • 支持同一个音频回调中注册多个业务事件(v2.1.0 后版本)

简要说明

  • 插件分为ZAudio类和 zaudio 组件, ZAudio类处理音频播放逻辑, zaudio组件用于渲染
  • ZAudio基于uni.getBackgroundAudioManageruni.createInnerAudioContext创建
  • 示例在 app 运行时,注意开启网络权限,若不显示数据则重启 app 应用,或者检查网络权限问题
  • v2.0 版本依赖vuex, v2.1.0 后版本不依赖 vuex, 建议下载最新版本
  • 如果你觉得这个项目不错, 或是想增加新功能 欢迎Star Fork PR

使用步骤

  1. 插件市场下载npm install uniapp-zaudio;

  2. 实例化 ZAudio类 并挂载

注意大小写:ZAudio是类

HbuilderX插件导入方式, import可能需要修改目录名哦

import ZAudio from '@/components/uniapp-zaudio' //HbuilderX插件导入方式, import可能需要修改目录名哦// import ZAudio from 'uniapp-zaudio' // npm引用方式let zaudio = new ZAudio({  continuePlay: true, //续播  autoPlay: true, //自动播放 部分浏览器不支持});Vue.prototype.$zaudio = zaudio; //挂载vue原型链上//模拟音频初始数据,切勿业务中使用var data = [  {    src:      "https://96.f.1ting.com/local_to_cube_202004121813/96kmp3/zzzzzmp3/2016aJan/18X/18d_DeH/01.mp3",    title: "恭喜发财",    singer: "刘德华",    coverImgUrl:      "https://img.1ting.com/images/special/75/s150_f84ef5082b0420f74cd2546b986ab0fc.jpg",  },  {    src:      "https://96.f.1ting.com/local_to_cube_202004121813/96kmp3/zzzzzmp3/2015kNov/25X/25m_XiaoQ/03.mp3",    title: "好运来",    singer: "作者1111",    coverImgUrl:      "https://img.1ting.com/images/special/204/s150_77254cd4a4da1a33b8faf89c4cbf6e40.jpg",  },];zaudio.setAudio(data); //添加音频zaudio.setRender(0)//渲染第一首音频
  1. 引用组件

注意大小写:zaudio是组件

<zaudio theme="theme3"></zaudio>
import zaudio from '@/components/uniapp-zaudio/zaudio';// import zaudio from 'uniapp-zaudio/zaudio'export default {  components: { zaudio: zaudio },};

< zaudio > 组件参数配置

参数类型必填描述其他
themeStringfalse主题theme2 or theme1 or theme3; 默认theme1
themeColorStringfalse进度条颜色默认 #42b983
  • 用法示例:
<zaudio theme="theme1"  themeColor="#42b983" />

ZAudio对象的参数和实例方法

参数类型必填描述其他
defaultCoverStringfalse默认音频封面
continuePlayBooleanfalse自动播放下一首,完成后从头播放默认 true
autoPlayBooleanfalse自动播放,部分浏览器不支持默认 false
实例方法描述参数
on(event, action, fn)回调函数中注册业务事件event(音频回调方法), action(业务名), fn(业务函数); 见音频回调事件中注册业务
off(event, action)回调函数中卸载业务事件, 重要event(音频回调方法), action(业务名);见音频回调事件中注册业务
setAudio(data)设置音频列表(audiolist赋值)对象数组, 例: [{src: 音频地址, title: 音频名, singer: 歌手 coverImgUrl: 封面}]
updateAudio(data)添加音频列表(push数据到audiolist)对象数组, 例: [{src: 音频地址, title: 音频名, singer: 歌手 coverImgUrl: 封面}]
setRender(data)指定音频索引或对象,渲染到 zaudio 组件, 可用于异步渲染索引(number或string类型) 或 音频对象(object类型)
operate(index)指定索引, 自动判断播放暂停,并渲染对应的音频数据,没有索引时则判断当前音频索引, Number或undefined
stop()停止播放音频 (强制停止)
stepPlay(count)快进快退单位秒, Number类型
syncRender()实时渲染当前播放状态,见实时渲染当前播放状态
syncStateOn(action, fn)注册一个用于实时获取当前播放状态的事件,用法见获取音频播放状态和属性action(业务名), fn(回调函数,回调参数见音频对象属性)
syncStateOff(action)卸载用于实时获取当前播放状态的事件,用法见获取音频播放状态和属性action(与注册时的业务名对应)
  • 用法示例:

初始化ZAudio类, 并渲染音频

let zaudio = new ZAudio({  continuePlay: true, //续播  autoPlay: true, //自动播放 部分浏览器不支持});var data = [  {    src:      "https://96.f.1ting.com/local_to_cube_202004121813/96kmp3/zzzzzmp3/2016aJan/18X/18d_DeH/01.mp3",    title: "恭喜发财",    singer: "刘德华",    coverImgUrl:      "https://img.1ting.com/images/special/75/s150_f84ef5082b0420f74cd2546b986ab0fc.jpg",  },  {    src:      "https://96.f.1ting.com/local_to_cube_202004121813/96kmp3/zzzzzmp3/2015kNov/25X/25m_XiaoQ/03.mp3",    title: "好运来",    singer: "作者1111",    coverImgUrl:      "https://img.1ting.com/images/special/204/s150_77254cd4a4da1a33b8faf89c4cbf6e40.jpg",  },];// 设置音频数据zaudio.setAudio(data)//渲染第一首音频zaudio.setRender(0)

异步加载

setTimeout(()=>{	zaudio.setAudio(data);	zaudio.operate(0); //手动去渲染第1首音频},2000)

音频回调事件中注册业务

  • 音频事件会触发不同的回调(如播放回调, 暂停回调), 而一个回调中允许注册多个互不影响的业务事件
  • zaudio.on(event, action, fn): 注册业务事件
  • zaudio.off(event, action): 卸载业务事件, 页面卸载时可以卸载不必要的业务事件, 这样可以提高页面性能
  • event: 回调方法名,具体表格如下
  • action: 自定义的业务名, 一个业务名在同一个音频回调中只能注册一次, 多次注册不会被覆盖
  • fn: 触发的业务函数, 部分回调会实时返回当前播放的状态, 见下表
event(音频回调名)action(自定义业务名)描述fn参数
waiting类型string或symbol加载音频时回调当前加载状态
error类型string或symbol错误播放时回调
playing类型string或symbol播放时回调实时返回当前播放的音频对象
canPlay类型string或symbol初始播放时回调当前播放的音频对象
pause类型string或symbol暂停回调
ended类型string或symbol结束回调
setAudio类型string或symbol覆盖音频的回调当前音频列表
updateAudio类型string或symbol添加音频的回调当前音频列表
stop类型string或symbol强制停止播放回调, 小程序音频浮窗关闭回调
seek类型string或symbol快进拖动回调当前跳转的时间点
  • 用法示例:

一个playing回调,触发两个业务事件

	onLoad(query) {		//playing回调, 注册`event-a`和`event-b`两个打印事件		this.$zaudio.on('playing', 'event-a', data => {			console.log(data,'event-a')		});		this.$zaudio.on('playing', 'event-b', data => {			console.log(data,'event-b')		});	},		destroyed(){			//页面卸载时卸载业务, 提高页面性能		this.$zaudio.off('playing', 'event-a')		this.$zaudio.off('playing', 'event-b')	}

实时渲染当前播放状态到zaudio组件

  • 适用情况: 当zaudio组件渲染了非当前播放的数据, 且需要实时渲染当前的播放状态时
  • 用法示例:
onShow(){	//实时渲染当前的播放状态	this.$zaudio.syncRender();},

实时获取音频播放状态和属性

  • 由于v2.1.x之后版本不依赖vuex, 音频状态需要使用syncStateOn方法来实时监听获取
  • syncStateOn(action, fn): 注册一个获取音频播放状态和属性的事件
  • syncStateOff(action): 卸载获取音频播放状态和属性的事件, 页面卸载时卸载该事件, 这样可以提高页面性能
  • action: 自定义业务名, 用于区分多个不同的实时获取音频播放状态和属性事件
  • fn: 实时获取音频播放状态和属性的回调, 回调参数见音频对象属性
  • 用法示例:
data(){	return {			audiolist: this.$zaudio.audiolist, //当前音频列表			playIndex: this.$zaudio.playIndex, //当前播放的索引			paused: this.$zaudio.paused, //当前是否暂停			playinfo: this.$zaudio.playinfo //当前播放的信息	}}onShow(){	//获取音频播放状态和属性	this.getAudioState();},methods:{	getAudioState() {		//注册page-index-get-state, 实时获取zaudio属性状态		this.$zaudio.syncStateOn('page-index-get-state', ({ audiolist, playIndex, paused, playinfo }) => {			this.audiolist = audiolist;			this.playIndex = playIndex;			this.paused = paused;			this.playinfo = playinfo;		});	}},onHide(){	//卸载page-index-get-state,提高页面性能	this.$zaudio.syncStateOff('page-index-get-state')}

音频对象属性

name描述其他
renderIndex当前zaudio渲染索引
audiolist音频列表数组[{src:音频导致, title:音频名, singer: 作者, coverImgUrl: 音频封面}]
renderinfo当前渲染信息
playinfo当前播放信息
paused音频暂停状态true:暂停
playIndex当前播放索引
renderIsPlay渲染与播放是否一致
loading加载状态
  • 用法示例:
let zaudio = new ZAudio();console.log(zaudio.audiolist); //获取当前的音频列表数据console.log(zaudio.renderIndex); //获取当前zaudio组件渲染音频的索引值

注意: 上面的获取的属性不是实时的状态, 实时获取见实时获取音频播放状态和属性

背景播放配置

在 manifest.json 中配置小程序

 "mp-weixin" : {		"requiredBackgroundModes" : [ "audio" ],        "appid" : "",        "setting" : {            "urlCheck" : false        },        "usingComponents" : true    }

注意 ios 端需要打包 ipa 才生效iOS

"ios" : {    "UIBackgroundModes" : [ "audio" ]}

如果你觉得这个项目不错, 或是想增加新功能 欢迎Star Fork PR


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap