UNPKG

12.8 kBTypeScriptView Raw
1import Taro from '../../index'
2
3declare module '../../index' {
4 namespace stopBackgroundAudio {
5 interface Option {
6 /** 接口调用结束的回调函数(调用成功、失败都会执行) */
7 complete?: (res: TaroGeneral.CallbackResult) => void
8 /** 接口调用失败的回调函数 */
9 fail?: (res: TaroGeneral.CallbackResult) => void
10 /** 接口调用成功的回调函数 */
11 success?: (res: TaroGeneral.CallbackResult) => void
12 }
13 }
14
15 namespace seekBackgroundAudio {
16 interface Option {
17 /** 音乐位置,单位:秒 */
18 position: number
19 /** 接口调用结束的回调函数(调用成功、失败都会执行) */
20 complete?: (res: TaroGeneral.CallbackResult) => void
21 /** 接口调用失败的回调函数 */
22 fail?: (res: TaroGeneral.CallbackResult) => void
23 /** 接口调用成功的回调函数 */
24 success?: (res: TaroGeneral.CallbackResult) => void
25 }
26 }
27
28 namespace playBackgroundAudio {
29 interface Option {
30 /** 音乐链接,目前支持的格式有 m4a, aac, mp3, wav */
31 dataUrl: string
32 /** 接口调用结束的回调函数(调用成功、失败都会执行) */
33 complete?: (res: TaroGeneral.CallbackResult) => void
34 /** 封面URL */
35 coverImgUrl?: string
36 /** 接口调用失败的回调函数 */
37 fail?: (res: TaroGeneral.CallbackResult) => void
38 /** 接口调用成功的回调函数 */
39 success?: (res: TaroGeneral.CallbackResult) => void
40 /** 音乐标题 */
41 title?: string
42 }
43 }
44
45 namespace pauseBackgroundAudio {
46 interface Option {
47 /** 接口调用结束的回调函数(调用成功、失败都会执行) */
48 complete?: (res: TaroGeneral.CallbackResult) => void
49 /** 接口调用失败的回调函数 */
50 fail?: (res: TaroGeneral.CallbackResult) => void
51 /** 接口调用成功的回调函数 */
52 success?: (res: TaroGeneral.CallbackResult) => void
53 }
54 }
55
56 namespace getBackgroundAudioPlayerState {
57 interface Option {
58 /** 接口调用结束的回调函数(调用成功、失败都会执行) */
59 complete?: (res: TaroGeneral.CallbackResult) => void
60 /** 接口调用失败的回调函数 */
61 fail?: (res: TaroGeneral.CallbackResult) => void
62 /** 接口调用成功的回调函数 */
63 success?: (result: SuccessCallbackResult) => void
64 }
65 interface SuccessCallbackResult extends TaroGeneral.CallbackResult {
66 /** 选定音频的播放位置(单位:s),只有在音乐播放中时返回 */
67 currentPosition: number
68 /** 歌曲数据链接,只有在音乐播放中时返回 */
69 dataUrl: string
70 /** 音频的下载进度百分比,只有在音乐播放中时返回 */
71 downloadPercent: number
72 /** 选定音频的长度(单位:s),只有在音乐播放中时返回 */
73 duration: number
74 /** 播放状态 */
75 status: keyof Status
76 /** 调用结果 */
77 errMsg: string
78 }
79 interface Status {
80 /** 暂停中 */
81 0
82 /** 播放中 */
83 1
84 /** 没有音乐播放 */
85 2
86 }
87 }
88
89 /** BackgroundAudioManager 实例,可通过 [Taro.getBackgroundAudioManager](/docs/apis/media/background-audio/getBackgroundAudioManager) 获取。
90 * @example
91 * ```tsx
92 * const backgroundAudioManager = Taro.getBackgroundAudioManager()
93 * backgroundAudioManager.title = '此时此刻'
94 * backgroundAudioManager.epname = '此时此刻'
95 * backgroundAudioManager.singer = '许巍'
96 * backgroundAudioManager.coverImgUrl = 'https://y.gtimg.cn/music/photo_new/T002R300x300M000003rsKF44GyaSk.jpg?max_age=2592000'
97 * // 设置了 src 之后会自动播放
98 * backgroundAudioManager.src = 'https://ws.stream.qqmusic.qq.com/M500001VfvsJ21xFqb.mp3?guid=ffffffff82def4af4b12b3cd9337d5e7&uin=346897220&vkey=6292F51E1E384E061FF02C31F716658E5C81F5594D561F2E88B854E81CAAB7806D5E4F103E55D33C16F3FAC506D1AB172DE8600B37E43FAD&fromtag=46'
99 * ```
100 * @see https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/BackgroundAudioManager.html
101 */
102 interface BackgroundAudioManager {
103 /** 音频的数据源([2.2.3](https://developers.weixin.qq.com/miniprogram/dev/framework/compatibility.html) 开始支持云文件ID)。默认为空字符串,**当设置了新的 src 时,会自动开始播放**,目前支持的格式有 m4a, aac, mp3, wav。 */
104 src: string
105 /** 音频开始播放的位置(单位:s)。 */
106 startTime: number
107 /** 音频标题,用于原生音频播放器音频标题(必填)。原生音频播放器中的分享功能,分享出去的卡片标题,也将使用该值。 */
108 title: string
109 /** 专辑名,原生音频播放器中的分享功能,分享出去的卡片简介,也将使用该值。 */
110 epname: string
111 /** 歌手名,原生音频播放器中的分享功能,分享出去的卡片简介,也将使用该值。 */
112 singer: string
113 /** 封面图 URL,用于做原生音频播放器背景图。原生音频播放器中的分享功能,分享出去的卡片配图及背景也将使用该图。 */
114 coverImgUrl: string
115 /** 页面链接,原生音频播放器中的分享功能,分享出去的卡片简介,也将使用该值。 */
116 webUrl: string
117 /** 音频协议。默认值为 'http',设置 'hls' 可以支持播放 HLS 协议的直播音频。 */
118 protocol: string
119 /** 播放速度。范围 0.5-2.0。
120 * @default 1
121 */
122 playbackRate?: number
123 /** 当前音频的长度(单位:s),只有在有合法 src 时返回。
124 * @readonly
125 */
126 duration: number
127 /** 当前音频的播放位置(单位:s),只有在有合法 src 时返回。
128 * @readonly
129 */
130 currentTime: number
131 /** 当前是否暂停或停止。
132 * @readonly
133 */
134 paused: boolean
135 /** 音频已缓冲的时间,仅保证当前播放时间点到此时间点内容已缓冲。
136 * @readonly
137 */
138 buffered: number
139 /** origin: 发送完整的 referrer; no-referrer: 不发送 */
140 referrerPolicy?: 'origin' | 'no-referrer' | string
141 /** 播放 */
142 play(): void
143 /** 暂停 */
144 pause(): void
145 /** 跳转到指定位置,单位 s */
146 seek(position: any): void
147 /** 停止 */
148 stop(): void
149 /** 背景音频进入可以播放状态,但不保证后面可以流畅播放 */
150 onCanplay(callback?: () => void): void
151 /** 音频加载中事件,当音频因为数据不足,需要停下来加载时会触发 */
152 onWaiting(callback?: () => void): void
153 /** 背景音频播放错误事件 */
154 onError(callback?: () => void): void
155 /** 背景音频播放事件 */
156 onPlay(callback?: () => void): void
157 /** 背景音频暂停事件 */
158 onPause(callback?: () => void): void
159 /** 背景音频开始跳转操作事件 */
160 onSeeking(callback?: () => void): void
161 /** 背景音频完成跳转操作事件 */
162 onSeeked(callback?: () => void): void
163 /** 背景音频自然播放结束事件 */
164 onEnded(callback?: () => void): void
165 /** 背景音频停止事件 */
166 onStop(callback?: () => void): void
167 /** 背景音频播放进度更新事件 */
168 onTimeUpdate(callback?: () => void): void
169 /** 用户在系统音乐播放面板点击上一曲事件(iOS only) */
170 onPrev(callback?: () => void): void
171 /** 用户在系统音乐播放面板点击下一曲事件(iOS only) */
172 onNext(callback?: () => void): void
173 }
174
175 interface TaroStatic {
176 /**
177 * 停止播放音乐。
178 * @supported weapp
179 * @example
180 * ```tsx
181 * Taro.stopBackgroundAudio()
182 * ```
183 * @see https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.stopBackgroundAudio.html
184 */
185 stopBackgroundAudio(option?: stopBackgroundAudio.Option): void
186
187 /** 控制音乐播放进度。
188 * @supported weapp
189 * @example
190 * ```tsx
191 * Taro.seekBackgroundAudio({
192 * position: 30
193 * })
194 * ```
195 * @see https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.seekBackgroundAudio.html
196 */
197 seekBackgroundAudio(option: seekBackgroundAudio.Option): Promise<TaroGeneral.CallbackResult>
198
199 /** 使用后台播放器播放音乐,对于微信客户端来说,只能同时有一个后台音乐在播放。当用户离开小程序后,音乐将暂停播放;当用户点击“显示在聊天顶部”时,音乐不会暂停播放;当用户在其他小程序占用了音乐播放器,原有小程序内的音乐将停止播放。
200 * @supported weapp
201 * @example
202 * ```tsx
203 * Taro.playBackgroundAudio({
204 * dataUrl: '',
205 * title: '',
206 * coverImgUrl: ''
207 * })
208 * ```
209 * @see https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.playBackgroundAudio.html
210 */
211 playBackgroundAudio(option: playBackgroundAudio.Option): Promise<TaroGeneral.CallbackResult>
212
213 /** 暂停播放音乐。
214 * @supported weapp
215 * @example
216 * ```tsx
217 * Taro.pauseBackgroundAudio()
218 * ```
219 * @see https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.pauseBackgroundAudio.html
220 */
221 pauseBackgroundAudio(option?: pauseBackgroundAudio.Option): void
222
223 /** 监听音乐停止。
224 *
225 * **bug & tip:**
226 *
227 * 1. `bug`: `iOS` `6.3.30` Taro.seekBackgroundAudio 会有短暂延迟
228 * @supported weapp
229 * @see https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.onBackgroundAudioStop.html
230 */
231 onBackgroundAudioStop(
232 /** 音乐停止事件的回调函数 */
233 callback: (res: TaroGeneral.CallbackResult) => void,
234 ): void
235
236 /** 监听音乐播放。
237 * @supported weapp
238 * @see https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.onBackgroundAudioPlay.html
239 */
240 onBackgroundAudioPlay(
241 /** 音乐播放事件的回调函数 */
242 callback: (res: TaroGeneral.CallbackResult) => void,
243 ): void
244
245 /** 监听音乐暂停。
246 * @supported weapp
247 * @see https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.onBackgroundAudioPause.html
248 */
249 onBackgroundAudioPause(
250 /** 音乐暂停事件的回调函数 */
251 callback: (res: TaroGeneral.CallbackResult) => void,
252 ): void
253
254 /** 获取后台音乐播放状态。
255 * **注意:1.2.0 版本开始,本接口不再维护。建议使用能力更强的 [Taro.getBackgroundAudioManager](/docs/apis/media/background-audio/getBackgroundAudioManager) 接口**
256 * @supported weapp
257 * @example
258 * ```tsx
259 * Taro.getBackgroundAudioPlayerState({
260 * success: function (res) {
261 * var status = res.status
262 * var dataUrl = res.dataUrl
263 * var currentPosition = res.currentPosition
264 * var duration = res.duration
265 * var downloadPercent = res.downloadPercent
266 * }
267 * })
268 * ```
269 * @see https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.getBackgroundAudioPlayerState.html
270 */
271 getBackgroundAudioPlayerState(option?: getBackgroundAudioPlayerState.Option): Promise<getBackgroundAudioPlayerState.SuccessCallbackResult>
272
273 /** 获取**全局唯一**的背景音频管理器。
274 * 小程序切入后台,如果音频处于播放状态,可以继续播放。但是后台状态不能通过调用API操纵音频的播放状态。
275 *
276 * 从微信客户端6.7.2版本开始,若需要在小程序切后台后继续播放音频,需要在 [app.json](https://developers.weixin.qq.com/miniprogram/dev/reference/configuration/app.html) 中配置 `requiredBackgroundModes` 属性。开发版和体验版上可以直接生效,正式版还需通过审核。
277 * @supported weapp
278 * @example
279 * ```tsx
280 * const backgroundAudioManager = Taro.getBackgroundAudioManager()
281 * backgroundAudioManager.title = '此时此刻'
282 * backgroundAudioManager.epname = '此时此刻'
283 * backgroundAudioManager.singer = '许巍'
284 * backgroundAudioManager.coverImgUrl = 'https://y.gtimg.cn/music/photo_new/T002R300x300M000003rsKF44GyaSk.jpg?max_age=2592000'
285 * backgroundAudioManager.src = 'https://ws.stream.qqmusic.qq.com/M500001VfvsJ21xFqb.mp3?guid=ffffffff82def4af4b12b3cd9337d5e7&uin=346897220&vkey=6292F51E1E384E061FF02C31F716658E5C81F5594D561F2E88B854E81CAAB7806D5E4F103E55D33C16F3FAC506D1AB172DE8600B37E43FAD&fromtag=46' // 设置了 src 之后会自动播放
286 * ```
287 * @see https://developers.weixin.qq.com/miniprogram/dev/api/media/background-audio/wx.getBackgroundAudioManager.html
288 */
289 getBackgroundAudioManager(): BackgroundAudioManager
290 }
291}