更新记录
1.0.0(2026-06-27)
下载此版本
初次提交
平台兼容性
uni-app(5.13)
| Vue2 |
Vue3 |
Chrome |
Safari |
app-vue |
app-nvue |
Android |
iOS |
鸿蒙 |
| √ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
| 微信小程序 |
支付宝小程序 |
抖音小程序 |
百度小程序 |
快手小程序 |
京东小程序 |
鸿蒙元服务 |
QQ小程序 |
飞书小程序 |
小红书小程序 |
快应用-华为 |
快应用-联盟 |
| √ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
uni-app x(5.13)
| Chrome |
Safari |
Android |
iOS |
鸿蒙 |
微信小程序 |
| √ |
√ |
√ |
√ |
√ |
- |
laoqianjunzi-audio
laoqianjunzi-audio 是一个面向 uni-app x 的标准 UTS 音频插件,聚焦后台播放、播放队列、远程控制、能力探测与运行诊断。
插件实现参考了以下公开资料,并在此基础上按当前模块的接口设计与多端适配需求完成了独立封装:
https://doc.dcloud.net.cn/uni-app-x/api/get-background-audio-manager.html
https://gitcode.com/dcloud/uni-api/tree/alpha/uni_modules/uni-getBackgroundAudioManager/utssdk
功能概览
- 统一封装
Android、iOS、HarmonyOS、Web 四端音频播放能力
- 支持单曲设置、歌单设置、追加曲目、移除曲目、按索引切换
- 支持播放、暂停、继续、停止、跳转进度、倍速、音量、循环模式控制
- 支持状态变更、进度、缓冲、播放结束、远程命令、中断等事件监听
- 支持能力探测、调试轨迹、异常报告读取与清理
- 自带插件内示例页,便于直接运行和联调
适用场景
- 音乐播放
- 有声书 / 播客连续播放
- 需要后台保活播放与系统控制中心联动的业务
- 需要统一管理播放队列和播放状态的多页面项目
平台支持
| 平台 |
支持情况 |
说明 |
| Android App |
支持 |
支持后台播放、通知栏控制、媒体会话 |
| iOS App |
支持 |
支持后台播放、锁屏信息与远程控制 |
| HarmonyOS App |
支持 |
支持后台音频连续任务与系统会话控制 |
| Web |
支持 |
受浏览器自动播放、后台策略与媒体会话实现差异影响 |
目录说明
uni_modules/laoqianjunzi-audio/utssdk/:插件接口与各平台实现
uni_modules/laoqianjunzi-audio/pages/index.uvue:插件示例页
uni_modules/laoqianjunzi-audio/changelog.md:版本变更记录
安装方式
将插件放入项目的 uni_modules 目录后,直接通过模块路径引入即可。
import {
initPlayer,
setPlaylist,
play,
on,
type AudioDeckTrack
} from '@/uni_modules/laoqianjunzi-audio'
快速开始
1. 初始化播放器
initPlayer({
debug: true,
preloadNext: true,
preloadNextTime: 20,
nextTrackTimeout: 12000,
success: (res : any) => {
console.log('initPlayer success', res)
},
fail: (err : any) => {
console.error('initPlayer fail', err)
}
})
2. 准备歌单并开始播放
const tracks : Array<AudioDeckTrack> = [
{
id: 'kalimba-1',
url: 'https://www.learningcontainer.com/wp-content/uploads/2020/02/Kalimba.mp3',
title: 'Kalimba',
singer: 'Learning Container',
album: 'Demo Album',
durationHint: 348
},
{
id: 'samplelib-45',
url: 'https://download.samplelib.com/mp3/sample-45s.mp3',
title: 'Samplelib Preview 45s',
singer: 'Samplelib',
album: 'Demo Album',
durationHint: 45
}
]
setPlaylist({
tracks,
startIndex: 0,
tracksPayloadJson: JSON.stringify({ tracks }),
success: (_res : any) => {
play(null)
}
})
3. 监听关键事件
on('stateChange', (event) => {
console.log('stateChange', event.payload)
})
on('progress', (event) => {
console.log('progress', event.payload)
})
on('error', (event) => {
console.error('error', event.payload)
})
API 列表
初始化与装载
| API |
说明 |
initPlayer |
初始化播放器、预加载与远程控制能力 |
setTrack |
设置单曲为当前播放项 |
setPlaylist |
设置完整播放队列并指定起始索引 |
appendTrack |
追加单曲到当前队列末尾 |
removeTrack |
按曲目 id 从队列中移除 |
播放控制
| API |
说明 |
play |
开始播放,可指定起播位置 |
pause |
暂停播放 |
resume |
从暂停状态继续播放 |
stop |
停止播放 |
seek |
跳转到指定秒数 |
skipToNext |
播放下一首 |
skipToPrev |
播放上一首 |
skipToIndex |
跳转到指定索引的曲目 |
播放参数
| API |
说明 |
setPlaybackRate |
设置倍速 |
setVolume |
设置音量 |
setLoopMode |
设置循环模式,支持 off、single、all |
查询能力
| API |
说明 |
getPlayerState |
获取当前播放器状态快照 |
getQueueState |
获取当前播放队列与索引 |
getCapabilities |
获取当前平台能力探测结果 |
事件与诊断
| API |
说明 |
on |
订阅插件事件 |
off |
取消事件订阅 |
getDebugTrace |
读取调试轨迹 |
clearDebugTrace |
清空调试轨迹 |
getCrashReports |
读取异常报告 |
clearCrashReports |
清空异常报告 |
主要类型
AudioDeckTrack
| 字段 |
类型 |
必填 |
说明 |
id |
string |
是 |
曲目唯一标识 |
url |
string |
是 |
音频地址 |
title |
string |
是 |
曲目标题 |
singer |
string |
否 |
歌手名 |
album |
string |
否 |
专辑名 |
epname |
string |
否 |
节目名 / 专辑补充名称 |
cover |
string |
否 |
封面图地址 |
coverImgUrl |
string |
否 |
原生媒体信息用封面图地址 |
webUrl |
string |
否 |
业务详情页地址 |
protocol |
string |
否 |
协议标记,例如 http、hls |
cache |
boolean |
否 |
是否缓存音频 |
audioType |
string |
否 |
音频类型扩展字段 |
referrerPath |
string |
否 |
关联页面路径 |
referrerPolicy |
string |
否 |
引用策略 |
startTime |
number |
否 |
初始播放位置,单位秒 |
durationHint |
number |
否 |
时长提示,单位秒 |
headers |
any \| null |
否 |
请求头 |
extras |
any \| null |
否 |
业务扩展字段 |
AudioDeckState
AudioDeckState 用于描述当前运行状态,重点字段包括:
initialized:是否已初始化
status:当前状态,如 idle、ready、playing、paused
currentTrack:当前曲目
currentTime / duration / buffered:进度与缓冲信息
playbackRate / volume / loopMode:当前播放参数
queueIndex / queueLength:当前队列位置与长度
backgroundActive:是否处于后台播放活跃状态
AudioDeckCapabilities
AudioDeckCapabilities 用于描述当前平台能力,包括:
supported:当前平台是否支持插件能力
sessionLevel:底层会话级别
backgroundAudio:是否支持后台音频
mediaSession:是否支持系统媒体会话
remoteCommand:是否支持远程控制命令
queue:是否支持队列能力
playbackRate / volume:是否支持对应调节能力
platform / adapter:当前平台和适配器标识
requiresCustomBase:是否需要自定义基座
事件说明
| 事件名 |
说明 |
stateChange |
播放状态变化 |
progress |
播放进度更新 |
buffer |
缓冲状态更新 |
error |
播放异常 |
ended |
当前曲目自然结束 |
seeking |
开始跳转进度 |
seeked |
跳转进度完成 |
preloadNext |
触发下一首预加载 |
waitingNext |
等待下一首切换 |
nextTrackTimeout |
下一首切换超时 |
remoteCommand |
收到系统远程控制命令 |
interruption |
收到系统音频中断事件 |
运行示例
插件内置了完整示例页:
- 页面文件:
uni_modules/laoqianjunzi-audio/pages/index.uvue
- 当前项目入口:
pages.json
示例页覆盖以下演示内容:
- 初始化播放器
- 设置单曲与歌单
- 播放 / 暂停 / 继续 / 停止
- 倍速、音量、循环模式调节
- 上一首 / 下一首 / 指定索引切换
- 状态、能力、调试轨迹、异常报告读取
- 事件日志实时输出
使用建议
- 推荐优先使用
https 音频地址,避免平台安全策略或浏览器拦截
- Web 平台的自动播放与后台控制能力受浏览器策略影响,应以真实设备测试结果为准
- 如果曲目较多,建议同时传入
tracks 和 tracksPayloadJson,便于桥接层稳定读取队列数据
- 退出页面前应通过
off 解除监听,避免重复订阅
- 直播流或不适合缓存的音频资源,建议按业务需要显式设置
cache: false
调试建议
- 业务联调时先调用
initPlayer({ debug: true })
- 通过
getDebugTrace() 查看插件内部轨迹
- 通过
getCrashReports() 汇总异常记录
- 每次测试前可调用
clearDebugTrace() 与 clearCrashReports() 清空历史信息
版本记录
请查看 uni_modules/laoqianjunzi-audio/changelog.md。