更新记录

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

功能概览

  • 统一封装 AndroidiOSHarmonyOSWeb 四端音频播放能力
  • 支持单曲设置、歌单设置、追加曲目、移除曲目、按索引切换
  • 支持播放、暂停、继续、停止、跳转进度、倍速、音量、循环模式控制
  • 支持状态变更、进度、缓冲、播放结束、远程命令、中断等事件监听
  • 支持能力探测、调试轨迹、异常报告读取与清理
  • 自带插件内示例页,便于直接运行和联调

适用场景

  • 音乐播放
  • 有声书 / 播客连续播放
  • 需要后台保活播放与系统控制中心联动的业务
  • 需要统一管理播放队列和播放状态的多页面项目

平台支持

平台 支持情况 说明
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 设置循环模式,支持 offsingleall

查询能力

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 协议标记,例如 httphls
cache boolean 是否缓存音频
audioType string 音频类型扩展字段
referrerPath string 关联页面路径
referrerPolicy string 引用策略
startTime number 初始播放位置,单位秒
durationHint number 时长提示,单位秒
headers any \| null 请求头
extras any \| null 业务扩展字段

AudioDeckState

AudioDeckState 用于描述当前运行状态,重点字段包括:

  • initialized:是否已初始化
  • status:当前状态,如 idlereadyplayingpaused
  • 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 平台的自动播放与后台控制能力受浏览器策略影响,应以真实设备测试结果为准
  • 如果曲目较多,建议同时传入 trackstracksPayloadJson,便于桥接层稳定读取队列数据
  • 退出页面前应通过 off 解除监听,避免重复订阅
  • 直播流或不适合缓存的音频资源,建议按业务需要显式设置 cache: false

调试建议

  • 业务联调时先调用 initPlayer({ debug: true })
  • 通过 getDebugTrace() 查看插件内部轨迹
  • 通过 getCrashReports() 汇总异常记录
  • 每次测试前可调用 clearDebugTrace()clearCrashReports() 清空历史信息

版本记录

请查看 uni_modules/laoqianjunzi-audio/changelog.md

隐私、权限声明

1. 本插件需要申请的系统权限列表:

Android 端涉及后台音频、媒体会话、通知权限与前台服务;iOS 端涉及后台音频与锁屏控制;Harmony 端涉及音频后台连续任务;Web 端能力受浏览器媒体会话与后台策略限制。

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件本身不采集用户数据,音频地址、请求头与扩展字段仅按调用参数透传给目标平台播放器。

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议