• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# ringtonePlayer (铃声播放器)(系统接口)
2<!--Kit: Audio Kit-->
3<!--Subsystem: Multimedia-->
4<!--Owner: @songshenke-->
5<!--Designer: @caixuejiang; @hao-liangfei; @zhanganxiang-->
6<!--Tester: @Filger-->
7<!--Adviser: @zengyawen-->
8
9铃声播放器提供了系统铃声的播放、配置、获取信息等功能。
10
11ringtonePlayer需要和[@ohos.multimedia.systemSoundManager](js-apis-systemSoundManager-sys.md)配合使用,才能完成管理系统铃声的功能。
12
13> **说明:**
14>
15> - 本模块首批接口从API version 10开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
16> - 本模块接口为系统接口。
17
18## 导入模块
19
20```ts
21import { systemSoundManager } from '@kit.AudioKit';
22```
23
24## RingtoneOptions
25
26铃声参数选项。
27
28**系统接口:** 该接口为系统接口
29
30**系统能力:** SystemCapability.Multimedia.SystemSound.Core
31
32| 名称      | 类型            |必填   | 说明                              |
33| --------- | -------------- | ---- | --------------------------------- |
34| volume    | number         | 是   | 指定的相对音量大小,取值范围为[0.00, 1.00],1表示最大音量,即100%。 |
35| loop      | boolean        | 是   | 是否开启循环播放,true表示开启循环播放,false表示不开启循环播放。 |
36
37## RingtonePlayer
38
39系统铃声播放器,提供系统铃声的参数设置、参数获取、播放、停止等功能。在调用RingtonePlayer的接口前,需要先通过[getRingtonePlayer](./js-apis-systemSoundManager-sys.md#getringtoneplayer11)创建实例。
40
41### 属性
42
43**系统接口:** 该接口为系统接口
44
45**系统能力:** SystemCapability.Multimedia.SystemSound.Core
46
47| 名称  | 类型                        | 只读 | 可选 | 说明               |
48| ----- | -------------------------- | ---- | ---- | ------------------ |
49| state | [media.AVPlayerState](../apis-media-kit/arkts-apis-media-t.md#avplayerstate9) | 是   | 否   | 音频渲染器的状态。 |
50
51**示例:**
52
53```ts
54import { media } from '@kit.MediaKit';
55let state: media.AVPlayerState = systemRingtonePlayer.state;
56```
57
58### getTitle
59
60getTitle(callback: AsyncCallback&lt;string&gt;): void
61
62获取铃声标题。使用callback异步回调。
63
64**系统接口:** 该接口为系统接口
65
66**系统能力:** SystemCapability.Multimedia.SystemSound.Core
67
68**参数:**
69
70| 参数名   | 类型                                      | 必填 | 说明                       |
71| -------- | -----------------------------------------| ---- | ------------------------- |
72| callback | AsyncCallback&lt;string&gt;              | 是   | 回调函数。当获取铃声标题成功,err为undefined,data为获取到的铃声标题;否则为错误对象。 |
73
74**示例:**
75
76```ts
77import { BusinessError } from '@kit.BasicServicesKit';
78
79systemRingtonePlayer.getTitle((err: BusinessError, value: string) => {
80  if (err) {
81    console.error(`Failed to get system ringtone title. ${err}`);
82    return;
83  }
84  console.info(`Callback invoked to indicate the value of the system ringtone title is obtained ${value}.`);
85});
86```
87
88### getTitle
89
90getTitle(): Promise&lt;string&gt;
91
92获取铃声标题。使用Promise异步回调。
93
94**系统接口:** 该接口为系统接口
95
96**系统能力:** SystemCapability.Multimedia.SystemSound.Core
97
98**返回值:**
99
100| 类型                  | 说明                              |
101| --------------------- | -------------------------------- |
102| Promise&lt;string&gt; | Promise对象,返回获取的系统铃声标题。 |
103
104**示例:**
105
106```ts
107import { BusinessError } from '@kit.BasicServicesKit';
108
109systemRingtonePlayer.getTitle().then((value: string) => {
110  console.info(`Promise returned to indicate that the value of the system ringtone title is obtained ${value}.`);
111}).catch ((err: BusinessError) => {
112  console.error(`Failed to get the system ringtone title ${err}`);
113});
114```
115
116### getAudioRendererInfo
117
118getAudioRendererInfo(callback: AsyncCallback&lt;audio.AudioRendererInfo&gt;): void
119
120获取铃声使用的AudioRendererInfo。使用callback异步回调。
121
122**系统接口:** 该接口为系统接口
123
124**系统能力:** SystemCapability.Multimedia.SystemSound.Core
125
126**参数:**
127
128| 参数名   | 类型                                      | 必填 | 说明                       |
129| -------- | -----------------------------------------| ---- | ------------------------- |
130| callback | AsyncCallback&lt;[audio.AudioRendererInfo](../apis-audio-kit/arkts-apis-audio-i.md#audiorendererinfo8)&gt; | 是 | 回调函数。当获取音频渲染器信息成功,err为undefined,data为获取到的音频渲染器信息;否则为错误对象。 |
131
132**示例:**
133
134```ts
135import { audio } from '@kit.AudioKit';
136import { BusinessError } from '@kit.BasicServicesKit';
137
138let audioRendererInfo: audio.AudioRendererInfo | undefined = undefined;
139
140systemRingtonePlayer.getAudioRendererInfo((err: BusinessError, value: audio.AudioRendererInfo) => {
141  if (err) {
142    console.error(`Failed to get ringtone AudioRendererInfo. ${err}`);
143    return;
144  }
145  console.info(`Callback invoked to indicate the value of the ringtone AudioRendererInfo is obtained.`);
146  audioRendererInfo = value;
147});
148```
149
150### getAudioRendererInfo
151
152getAudioRendererInfo(): Promise&lt;audio.AudioRendererInfo&gt;
153
154获取铃声使用的AudioRendererInfo。使用Promise异步回调。
155
156**系统接口:** 该接口为系统接口
157
158**系统能力:** SystemCapability.Multimedia.SystemSound.Core
159
160**返回值:**
161
162| 类型                | 说明                            |
163| ------------------- | ------------------------------- |
164| Promise&lt;[audio.AudioRendererInfo](../apis-audio-kit/arkts-apis-audio-i.md#audiorendererinfo8)&gt; | Promise对象,返回获取的音频渲染器信息。 |
165
166**示例:**
167
168```ts
169import { audio } from '@kit.AudioKit';
170import { BusinessError } from '@kit.BasicServicesKit';
171
172let audioRendererInfo: audio.AudioRendererInfo | undefined = undefined;
173
174systemRingtonePlayer.getAudioRendererInfo().then((value: audio.AudioRendererInfo) => {
175  console.info(`Promise returned to indicate that the value of the ringtone AudioRendererInfo is obtained ${value}.`);
176  audioRendererInfo = value;
177}).catch ((err: BusinessError) => {
178  console.error(`Failed to get the ringtone AudioRendererInfo ${err}`);
179});
180```
181
182### configure
183
184configure(options: RingtoneOptions, callback: AsyncCallback&lt;void&gt;): void
185
186配置铃声播放参数。使用callback异步回调。
187
188**系统接口:** 该接口为系统接口
189
190**系统能力:** SystemCapability.Multimedia.SystemSound.Core
191
192**参数:**
193
194| 参数名   | 类型                                      | 必填 | 说明                       |
195| -------- | -----------------------------------------| ---- | ------------------------- |
196| options  | [RingtoneOptions](#ringtoneoptions)      | 是   | 指定铃声参数。             |
197| callback | AsyncCallback&lt;void&gt;                | 是   | 回调函数。当配置铃声播放参数成功,err为undefined,否则为错误对象。 |
198
199**示例:**
200
201```ts
202import { BusinessError } from '@kit.BasicServicesKit';
203
204class RingtoneOptions {
205  volume: number = 0;
206  loop: boolean = false;
207}
208let ringtoneOptions: RingtoneOptions = {volume: 0.5, loop: true};
209
210systemRingtonePlayer.configure(ringtoneOptions, (err: BusinessError) => {
211  if (err) {
212    console.error(`Failed to configure ringtone options. ${err}`);
213    return;
214  }
215  console.info(`Callback invoked to indicate a successful setting of ringtone options.`);
216});
217```
218
219### configure
220
221configure(options: RingtoneOptions): Promise&lt;void&gt;
222
223配置铃声播放参数。使用Promise异步回调。
224
225**系统接口:** 该接口为系统接口
226
227**系统能力:** SystemCapability.Multimedia.SystemSound.Core
228
229**参数:**
230
231| 参数名   | 类型                                      | 必填 | 说明                       |
232| -------- | -----------------------------------------| ---- | ------------------------- |
233| options  | [RingtoneOptions](#ringtoneoptions)      | 是   | 指定铃声参数。              |
234
235**返回值:**
236
237| 类型                | 说明                            |
238| ------------------- | ------------------------------- |
239| Promise&lt;void&gt; | Promise对象。无返回结果的Promise对象。 |
240
241**示例:**
242
243```ts
244import { BusinessError } from '@kit.BasicServicesKit';
245
246class RingtoneOptions {
247  volume: number = 0;
248  loop: boolean = false;
249}
250let ringtoneOptions: RingtoneOptions = {volume: 0.5, loop: true};
251
252systemRingtonePlayer.configure(ringtoneOptions).then(() => {
253  console.info(`Promise returned to indicate a successful setting of ringtone options.`);
254}).catch ((err: BusinessError) => {
255  console.error(`Failed to configure ringtone options. ${err}`);
256});
257```
258
259### start
260
261start(callback: AsyncCallback&lt;void&gt;): void
262
263开始播放铃声。使用callback异步回调。
264
265**系统接口:** 该接口为系统接口
266
267**系统能力:** SystemCapability.Multimedia.SystemSound.Core
268
269**参数:**
270
271| 参数名   | 类型                                      | 必填 | 说明                       |
272| -------- | -----------------------------------------| ---- | ------------------------- |
273| callback | AsyncCallback&lt;void&gt;                | 是   | 回调函数。当开始播放铃声成功,err为undefined,否则为错误对象。 |
274
275**示例:**
276
277```ts
278import { BusinessError } from '@kit.BasicServicesKit';
279
280systemRingtonePlayer.start((err: BusinessError) => {
281  if (err) {
282    console.error(`Failed to start playing ringtone. ${err}`);
283    return;
284  }
285  console.info(`Callback invoked to indicate a successful starting of ringtone.`);
286});
287```
288
289### start
290
291start(): Promise&lt;void&gt;
292
293开始播放铃声。使用Promise异步回调。
294
295**系统接口:** 该接口为系统接口
296
297**系统能力:** SystemCapability.Multimedia.SystemSound.Core
298
299**返回值:**
300
301| 类型                | 说明                              |
302| ------------------- | -------------------------------- |
303| Promise&lt;void&gt; | Promise对象。无返回结果的Promise对象。 |
304
305**示例:**
306
307```ts
308import { BusinessError } from '@kit.BasicServicesKit';
309
310systemRingtonePlayer.start().then(() => {
311  console.info(`Promise returned to indicate a successful starting of ringtone.`);
312}).catch ((err: BusinessError) => {
313  console.error(`Failed to start playing ringtone. ${err}`);
314});
315```
316
317### stop
318
319stop(callback: AsyncCallback&lt;void&gt;): void
320
321停止播放铃声。使用callback异步回调。
322
323**系统接口:** 该接口为系统接口
324
325**系统能力:** SystemCapability.Multimedia.SystemSound.Core
326
327**参数:**
328
329| 参数名   | 类型                                      | 必填 | 说明                       |
330| -------- | -----------------------------------------| ---- | ------------------------- |
331| callback | AsyncCallback&lt;void&gt;                | 是   | 回调函数。当停止播放铃声成功,err为undefined,否则为错误对象。 |
332
333**示例:**
334
335```ts
336import { BusinessError } from '@kit.BasicServicesKit';
337
338systemRingtonePlayer.stop((err: BusinessError) => {
339  if (err) {
340    console.error(`Failed to stop playing ringtone. ${err}`);
341    return;
342  }
343  console.info(`Callback invoked to indicate a successful stopping of ringtone.`);
344});
345```
346
347### stop
348
349stop(): Promise&lt;void&gt;
350
351停止播放铃声。使用Promise异步回调。
352
353**系统接口:** 该接口为系统接口
354
355**系统能力:** SystemCapability.Multimedia.SystemSound.Core
356
357**返回值:**
358
359| 类型                | 说明                              |
360| ------------------- | -------------------------------- |
361| Promise&lt;void&gt; | Promise对象。无返回结果的Promise对象。 |
362
363**示例:**
364
365```ts
366import { BusinessError } from '@kit.BasicServicesKit';
367
368systemRingtonePlayer.stop().then(() => {
369  console.info(`Promise returned to indicate a successful stopping of ringtone.`);
370}).catch ((err: BusinessError) => {
371  console.error(`Failed to stop playing ringtone. ${err}`);
372});
373```
374
375### release
376
377release(callback: AsyncCallback&lt;void&gt;): void
378
379释放铃声播放器。使用callback异步回调。
380
381**系统接口:** 该接口为系统接口
382
383**系统能力:** SystemCapability.Multimedia.SystemSound.Core
384
385**参数:**
386
387| 参数名   | 类型                                      | 必填 | 说明                       |
388| -------- | -----------------------------------------| ---- | ------------------------- |
389| callback | AsyncCallback&lt;void&gt;                | 是   | 回调函数。当释放铃声播放器成功,err为undefined,否则为错误对象。 |
390
391**示例:**
392
393```ts
394import { BusinessError } from '@kit.BasicServicesKit';
395
396systemRingtonePlayer.release((err: BusinessError) => {
397  if (err) {
398    console.error(`Failed to release ringtone player. ${err}`);
399    return;
400  }
401  console.info(`Callback invoked to indicate a successful releasing of ringtone player.`);
402});
403```
404
405### release
406
407release(): Promise&lt;void&gt;
408
409释放铃声播放器。使用Promise异步回调。
410
411**系统接口:** 该接口为系统接口
412
413**系统能力:** SystemCapability.Multimedia.SystemSound.Core
414
415**返回值:**
416
417| 类型                | 说明                            |
418| ------------------- | ------------------------------- |
419| Promise&lt;void&gt; | Promise对象。无返回结果的Promise对象。 |
420
421**示例:**
422
423```ts
424import { BusinessError } from '@kit.BasicServicesKit';
425
426systemRingtonePlayer.release().then(() => {
427  console.info(`Promise returned to indicate a successful releasing of ringtone player.`);
428}).catch ((err: BusinessError) => {
429  console.error(`Failed to release ringtone player. ${err}`);
430});
431```
432
433### on('audioInterrupt')
434
435on(type: 'audioInterrupt', callback: Callback&lt;audio.InterruptEvent&gt;): void
436
437监听音频中断事件(当音频焦点发生变化时触发)。使用callback异步回调。
438
439**系统接口:** 该接口为系统接口
440
441**系统能力:** SystemCapability.Multimedia.SystemSound.Core
442
443**参数:**
444
445| 参数名   | 类型                     | 必填 | 说明                                                                       |
446| -------- | ----------------------- | ---- | -------------------------------------------------------------------------- |
447| type     | string                  | 是   | 事件回调类型,支持的事件为'audioInterrupt',当音频焦点状态发生变化时,触发该事件。 |
448| callback | Callback&lt;[audio.InterruptEvent](../apis-audio-kit/arkts-apis-audio-i.md#interruptevent9)&gt; | 是   | 回调函数,返回中断事件信息。 |
449
450**错误码:**
451
452以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[Audio错误码](errorcode-audio.md)。
453
454| 错误码ID | 错误信息 |
455| ------- | --------------------------------------------|
456| 401     | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. |
457| 6800101 | Parameter verification failed. |
458
459**示例:**
460
461```ts
462import { audio } from '@kit.AudioKit';
463
464let isPlaying: boolean = false; // 标识符,表示是否正在渲染。
465let isDucked: boolean = false; // 标识符,表示是否被降低音量。
466
467systemRingtonePlayer.on('audioInterrupt', async(interruptEvent: audio.InterruptEvent) => {
468  if (interruptEvent.forceType == audio.InterruptForceType.INTERRUPT_FORCE) {
469    // 由系统进行操作,强制打断音频渲染,应用需更新自身状态及显示内容等。
470    switch (interruptEvent.hintType) {
471      case audio.InterruptHint.INTERRUPT_HINT_PAUSE:
472        // 音频流已被暂停,临时失去焦点,待可重获焦点时会收到resume对应的interruptEvent。
473        console.info('Force paused. Update playing status and stop writing');
474        isPlaying = false; // 简化处理,代表应用切换至暂停状态的若干操作。
475        break;
476      case audio.InterruptHint.INTERRUPT_HINT_STOP:
477        // 音频流已被停止,永久失去焦点,若想恢复渲染,需用户主动触发。
478        console.info('Force stopped. Update playing status and stop writing');
479        isPlaying = false; // 简化处理,代表应用切换至暂停状态的若干操作。
480        break;
481      case audio.InterruptHint.INTERRUPT_HINT_DUCK:
482        // 音频流已被降低音量渲染。
483        console.info('Force ducked. Update volume status');
484        isDucked = true; // 简化处理,代表应用更新音量状态的若干操作。
485        break;
486      case audio.InterruptHint.INTERRUPT_HINT_UNDUCK:
487        // 音频流已被恢复正常音量渲染。
488        console.info('Force unducked. Update volume status');
489        isDucked = false; // 简化处理,代表应用更新音量状态的若干操作。
490        break;
491      default:
492        break;
493    }
494  } else if (interruptEvent.forceType == audio.InterruptForceType.INTERRUPT_SHARE) {
495    // 由应用进行操作,应用可以自主选择响应操作或忽略该事件。
496    switch (interruptEvent.hintType) {
497      case audio.InterruptHint.INTERRUPT_HINT_RESUME:
498        // 建议应用继续渲染(说明音频流此前被强制暂停,临时失去焦点,现在可以恢复渲染)。
499        console.info('Resume force paused renderer or ignore');
500        // 若选择继续渲染,需在此处主动执行开始渲染的若干操作。
501        break;
502      default:
503        break;
504    }
505  }
506});
507```
508
509### off('audioInterrupt') <sup>10+</sup>
510
511off(type: 'audioInterrupt'): void
512
513取消监听音频中断事件。
514
515**系统接口:** 该接口为系统接口
516
517**系统能力:** SystemCapability.Multimedia.SystemSound.Core
518
519**参数:**
520
521| 参数名 | 类型   | 必填 | 说明                                              |
522| :----- | :----- | :--- | :------------------------------------------------ |
523| type   | string | 是   | 事件回调类型,支持的事件为'audioInterrupt',当取消监听音频中断事件时,触发该事件。 |
524
525**错误码:**
526
527以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[Audio错误码](errorcode-audio.md)。
528
529| 错误码ID | 错误信息 |
530| ------- | --------------------------------------------|
531| 401     | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. |
532| 6800101 | Parameter verification failed. |
533
534**示例:**
535
536```ts
537systemRingtonePlayer.off('audioInterrupt');
538```
539