1 | import Taro from '../../index'
|
2 |
|
3 | declare 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 | }
|