• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Deprecated Interface (AudioPlayer, deprecated)
2<!--Kit: Media Kit-->
3<!--Subsystem: Multimedia-->
4<!--Owner: @xushubo; @chennotfound-->
5<!--Designer: @dongyu_dy-->
6<!--Tester: @xchaosioda-->
7<!--Adviser: @zengyawen-->
8
9> **NOTE**
10>
11> This API is supported since API version 6 and deprecated since API version 9. You are advised to use [AVPlayer](arkts-apis-media-AVPlayer.md) instead.
12
13AudioPlayer is a class for audio playback management. It provides APIs to manage and play audio. Before calling any API in AudioPlayer, you must use [createAudioPlayer()](arkts-apis-media-f.md#mediacreateaudioplayerdeprecated) to create an AudioPlayer instance.
14
15## Modules to Import
16
17```ts
18import { media } from '@kit.MediaKit';
19```
20
21## Properties<sup>(deprecated)</sup>
22
23**System capability**: SystemCapability.Multimedia.Media.AudioPlayer
24
25| Name                           | Type                                                  | Read-Only| Optional| Description                                                        |
26| ------------------------------- | ------------------------------------------------------ | ---- | ---- | ------------------------------------------------------------ |
27| src                             | string                                                 | No  | No  | Audio file URI. The mainstream audio formats (M4A, AAC, MP3, OGG, WAV, and AMR) are supported.<br>**Example of supported URLs**:<br>1. FD: fd://xx<br>![](figures/en-us_image_url.png)<br>2. HTTP: http\://xx<br>3. HTTPS: https\://xx<br>4. HLS: http\://xx or https\://xx<br>**Required permissions**: ohos.permission.READ_MEDIA or ohos.permission.INTERNET|
28| fdSrc<sup>9+</sup>              | [AVFileDescriptor](arkts-apis-media-i.md#avfiledescriptor9)                 | No  | No  | Description of the audio file. This property is required when audio assets of an application are continuously stored in a file.<br>**Example:**<br>Assume that a music file that stores continuous music assets consists of the following:<br>Music 1 (address offset: 0, byte length: 100)<br>Music 2 (address offset: 101; byte length: 50)<br>Music 3 (address offset: 151, byte length: 150)<br>1. To play music 1: AVFileDescriptor { fd = resource handle; offset = 0; length = 100; }<br>2. To play music 2: AVFileDescriptor { fd = resource handle; offset = 101; length = 50; }<br>3. To play music 3: AVFileDescriptor { fd = resource handle; offset = 151; length = 150; }<br>To play an independent music file, use **src=fd://xx**.<br>|
29| loop                            | boolean                                                | No  | No | Whether to loop audio playback. **true** to loop, **false** otherwise.                |
30| audioInterruptMode<sup>9+</sup> | [audio.InterruptMode](../apis-audio-kit/arkts-apis-audio-e.md#interruptmode9) | Yes  | Yes  | Audio interruption mode.                                              |
31| currentTime                     | number                                                 | Yes  | No  | Current audio playback position, in ms.                      |
32| duration                        | number                                                 | Yes  | No  | Audio duration, in ms.                                |
33| state                           | [AudioState](arkts-apis-media-t.md#audiostatedeprecated)                              | Yes  | No  | Audio playback state. This state cannot be used as the condition for triggering the call of **play()**, **pause()**, or **stop()**.|
34
35## play<sup>(deprecated)</sup>
36
37play(): void
38
39Starts to play an audio asset. This API can be called only after the **'dataLoad'** event is triggered.
40
41> **NOTE**
42>
43> This API is supported since API version 6 and deprecated since API version 9. You are advised to use [AVPlayer.play](arkts-apis-media-AVPlayer.md#play9) instead.
44
45**System capability**: SystemCapability.Multimedia.Media.AudioPlayer
46
47**Example**
48
49```ts
50audioPlayer.on('play', () => {    // Set the 'play' event callback.
51  console.info('audio play called');
52});
53audioPlayer.play();
54```
55
56## pause<sup>(deprecated)</sup>
57
58pause(): void
59
60Pauses audio playback.
61
62> **NOTE**
63>
64> This API is supported since API version 6 and deprecated since API version 9. You are advised to use [AVPlayer.pause](arkts-apis-media-AVPlayer.md#pause9) instead.
65
66**System capability**: SystemCapability.Multimedia.Media.AudioPlayer
67
68**Example**
69
70```ts
71audioPlayer.on('pause', () => {    // Set the 'pause' event callback.
72  console.info('audio pause called');
73});
74audioPlayer.pause();
75```
76
77## stop<sup>(deprecated)</sup>
78
79stop(): void
80
81Stops audio playback.
82
83> **NOTE**
84>
85> This API is supported since API version 6 and deprecated since API version 9. You are advised to use [AVPlayer.stop](arkts-apis-media-AVPlayer.md#stop9) instead.
86
87**System capability**: SystemCapability.Multimedia.Media.AudioPlayer
88
89**Example**
90
91```ts
92audioPlayer.on('stop', () => {    // Set the 'stop' event callback.
93  console.info('audio stop called');
94});
95audioPlayer.stop();
96```
97
98## reset<sup>(deprecated)</sup>
99
100reset(): void
101
102Resets the audio asset to be played.
103
104> **NOTE**
105>
106> This API is supported since API version 7 and deprecated since API version 9. You are advised to use [AVPlayer.reset](arkts-apis-media-AVPlayer.md#reset9) instead.
107
108**System capability**: SystemCapability.Multimedia.Media.AudioPlayer
109
110**Example**
111
112```ts
113audioPlayer.on('reset', () => {    // Set the 'reset' event callback.
114  console.info('audio reset called');
115});
116audioPlayer.reset();
117```
118
119## seek<sup>(deprecated)</sup>
120
121seek(timeMs: number): void
122
123Seeks to the specified playback position.
124
125> **NOTE**
126>
127> This API is supported since API version 6 and deprecated since API version 9. You are advised to use [AVPlayer.seek](arkts-apis-media-AVPlayer.md#seek9) instead.
128
129**System capability**: SystemCapability.Multimedia.Media.AudioPlayer
130
131**Parameters**
132
133| Name| Type  | Mandatory| Description                                                       |
134| ------ | ------ | ---- | ----------------------------------------------------------- |
135| timeMs | number | Yes  | Position to seek to, in ms. The value range is [0, duration].|
136
137**Example**
138
139```ts
140audioPlayer.on('timeUpdate', (seekDoneTime: number) => {    // Set the 'timeUpdate' event callback.
141  if (seekDoneTime == null) {
142    console.error('Failed to seek');
143    return;
144  }
145  console.info('Succeeded in seek. seekDoneTime: ' + seekDoneTime);
146});
147audioPlayer.seek(30000); // Seek to 30000 ms.
148```
149
150## setVolume<sup>(deprecated)</sup>
151
152setVolume(vol: number): void
153
154Sets the volume.
155
156> **NOTE**
157>
158> This API is supported since API version 6 and deprecated since API version 9. You are advised to use [AVPlayer.setVolume](arkts-apis-media-AVPlayer.md#setvolume9) instead.
159
160**System capability**: SystemCapability.Multimedia.Media.AudioPlayer
161
162**Parameters**
163
164| Name| Type  | Mandatory| Description                                                        |
165| ------ | ------ | ---- | ------------------------------------------------------------ |
166| vol    | number | Yes  | Relative volume. The value ranges from 0.00 to 1.00. The value **1.00** indicates the maximum volume (100%).|
167
168**Example**
169
170```ts
171audioPlayer.on('volumeChange', () => {    // Set the 'volumeChange' event callback.
172  console.info('audio volumeChange called');
173});
174audioPlayer.setVolume(1);    // Set the volume to 100%.
175```
176
177## release<sup>(deprecated)</sup>
178
179release(): void
180
181Releases the audio playback resources.
182
183> **NOTE**
184>
185> This API is supported since API version 6 and deprecated since API version 9. You are advised to use [AVPlayer.release](arkts-apis-media-AVPlayer.md#release9) instead.
186
187**System capability**: SystemCapability.Multimedia.Media.AudioPlayer
188
189**Example**
190
191```ts
192audioPlayer.release();
193audioPlayer = undefined;
194```
195
196## getTrackDescription<sup>(deprecated)</sup>
197
198getTrackDescription(callback: AsyncCallback\<Array\<MediaDescription>>): void
199
200Obtains the audio track information. It can be called only after the **'dataLoad'** event is triggered. This API uses an asynchronous callback to return the result.
201
202> **NOTE**
203>
204> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [AVPlayer.getTrackDescription](arkts-apis-media-AVPlayer.md#gettrackdescription9) instead.
205
206**System capability**: SystemCapability.Multimedia.Media.AudioPlayer
207
208**Parameters**
209
210| Name  | Type                                                        | Mandatory| Description                                      |
211| -------- | ------------------------------------------------------------ | ---- | ------------------------------------------ |
212| callback | AsyncCallback\<Array\<[MediaDescription](arkts-apis-media-i.md#mediadescription8)>> | Yes  | Callback used to return the result. If the operation is successful, **err** is **undefined** and **data** is the MediaDescription array obtained; otherwise, **err** is an error object.|
213
214**Example**
215
216```ts
217import { BusinessError } from '@kit.BasicServicesKit';
218
219audioPlayer.getTrackDescription((error: BusinessError, arrList: Array<media.MediaDescription>) => {
220  if (arrList != null) {
221    console.info('Succeeded in getting TrackDescription');
222  } else {
223    console.error(`Failed to get TrackDescription, error:${error}`);
224  }
225});
226```
227
228## getTrackDescription<sup>(deprecated)</sup>
229
230getTrackDescription(): Promise\<Array\<MediaDescription>>
231
232Obtains the audio track information. It can be called only after the **'dataLoad'** event is triggered. This API uses a promise to return the result.
233
234> **NOTE**
235>
236> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [AVPlayer.getTrackDescription](arkts-apis-media-AVPlayer.md#gettrackdescription9-1) instead.
237
238**System capability**: SystemCapability.Multimedia.Media.AudioPlayer
239
240**Return value**
241
242| Type                                                  | Description                                           |
243| ------------------------------------------------------ | ----------------------------------------------- |
244| Promise<Array<[MediaDescription](arkts-apis-media-i.md#mediadescription8)>> | Promise used to return a **MediaDescription** array, which records the audio track information.|
245
246**Example**
247
248```ts
249import { BusinessError } from '@kit.BasicServicesKit';
250
251audioPlayer.getTrackDescription().then((arrList: Array<media.MediaDescription>) => {
252  console.info('Succeeded in getting TrackDescription');
253}).catch((error: BusinessError) => {
254  console.error(`Failed to get TrackDescription, error:${error}`);
255});
256```
257
258## on('bufferingUpdate')<sup>(deprecated)</sup>
259
260on(type: 'bufferingUpdate', callback: (infoType: BufferingInfoType, value: number) => void): void
261
262Subscribes to the audio buffering update event. This API works only under online playback.
263
264> **NOTE**
265>
266> This API is supported since API version 8 and deprecated since API version 9. You are advised to use [AVPlayer.on('bufferingUpdate')](arkts-apis-media-AVPlayer.md#onbufferingupdate9) instead.
267
268**System capability**: SystemCapability.Multimedia.Media.AudioPlayer
269
270**Parameters**
271
272| Name  | Type    | Mandatory| Description                                                        |
273| -------- | -------- | ---- | ------------------------------------------------------------ |
274| type     | string   | Yes  | Event type, which is **'bufferingUpdate'** in this case.       |
275| callback | function | Yes  | Callback invoked when the event is triggered.<br>The value of [BufferingInfoType](arkts-apis-media-e.md#bufferinginfotype8) is fixed at **0**.|
276
277**Example**
278
279```ts
280audioPlayer.on('bufferingUpdate', (infoType: media.BufferingInfoType, value: number) => {
281  console.info('audio bufferingInfo type: ' + infoType);
282  console.info('audio bufferingInfo value: ' + value);
283});
284```
285
286## on('play' | 'pause' | 'stop' | 'reset' | 'dataLoad' | 'finish' | 'volumeChange')<sup>(deprecated)</sup>
287
288on(type: 'play' | 'pause' | 'stop' | 'reset' | 'dataLoad' | 'finish' | 'volumeChange', callback: () => void): void
289
290Subscribes to the audio playback events.
291
292> **NOTE**
293>
294> This API is supported since API version 6 and deprecated since API version 9. You are advised to use [AVPlayer.on('stateChange')](arkts-apis-media-AVPlayer.md#onstatechange9) instead.
295
296**System capability**: SystemCapability.Multimedia.Media.AudioPlayer
297
298**Parameters**
299
300| Name  | Type      | Mandatory| Description                                                        |
301| -------- | ---------- | ---- | ------------------------------------------------------------ |
302| type     | string     | Yes  | Event type. The following events are supported:<br>- 'play': triggered when the [play()](#playdeprecated) API is called and audio playback starts.<br>- 'pause': triggered when the [pause()](#pausedeprecated) API is called and audio playback is paused.<br>- 'stop': triggered when the [stop()](#stopdeprecated) API is called and audio playback stops.<br>- 'reset': triggered when the [reset()](#resetdeprecated) API is called and audio playback is reset.<br>- 'dataLoad': triggered when the audio data is loaded, that is, when the **src** property is configured.<br>- 'finish': triggered when the audio playback is finished.<br>- 'volumeChange': triggered when the [setVolume()](#setvolumedeprecated) API is called and the playback volume is changed.|
303| callback | () => void | Yes  | Callback invoked when the event is triggered.                                          |
304
305**Example**
306
307```ts
308import { fileIo as fs } from '@kit.CoreFileKit';
309import { BusinessError } from '@kit.BasicServicesKit';
310
311let audioPlayer: media.AudioPlayer = media.createAudioPlayer();  // Create an AudioPlayer instance.
312audioPlayer.on('dataLoad', () => {            // Set the 'dataLoad' event callback, which is triggered when the src property is set successfully.
313  console.info('audio set source called');
314  audioPlayer.play();                       // Start the playback and trigger the 'play' event callback.
315});
316audioPlayer.on('play', () => {                // Set the 'play' event callback.
317  console.info('audio play called');
318  audioPlayer.seek(30000);                  // Call the seek() API and trigger the 'timeUpdate' event callback.
319});
320audioPlayer.on('pause', () => {               // Set the 'pause' event callback.
321  console.info('audio pause called');
322  audioPlayer.stop();                       // Stop the playback and trigger the 'stop' event callback.
323});
324audioPlayer.on('reset', () => {               // Set the 'reset' event callback.
325  console.info('audio reset called');
326  audioPlayer.release();                    // Release the AudioPlayer instance.
327  audioPlayer = undefined;
328});
329audioPlayer.on('timeUpdate', (seekDoneTime: number) => {  // Set the 'timeUpdate' event callback.
330  if (seekDoneTime == null) {
331    console.error('Failed to seek');
332    return;
333  }
334  console.info('Succeeded in seek, and seek time is ' + seekDoneTime);
335  audioPlayer.setVolume(0.5);                // Set the volume to 50% and trigger the 'volumeChange' event callback.
336});
337audioPlayer.on('volumeChange', () => {         // Set the 'volumeChange' event callback.
338  console.info('audio volumeChange called');
339  audioPlayer.pause();                       // Pause the playback and trigger the 'pause' event callback.
340});
341audioPlayer.on('finish', () => {               // Set the 'finish' event callback.
342  console.info('audio play finish');
343  audioPlayer.stop();                        // Stop the playback and trigger the 'stop' event callback.
344});
345audioPlayer.on('error', (error: BusinessError) => {  // Set the 'error' event callback.
346  console.error(`audio error called, error: ${error}`);
347});
348
349// Set the FD (local playback) of the audio file selected by the user.
350let fdPath = 'fd://';
351// The stream in the path can be pushed to the device by running the "hdc file send D:\xxx\01.mp3 /data/accounts/account_0/appdata" command.
352let path = '/data/accounts/account_0/appdata/ohos.xxx.xxx.xxx/01.mp3';
353fs.open(path).then((file) => {
354  fdPath = fdPath + '' + file.fd;
355  console.info('Succeeded in opening fd, fd is' + fdPath);
356  audioPlayer.src = fdPath;  // Set the src property and trigger the 'dataLoad' event callback.
357}, (err: BusinessError) => {
358  console.error('Failed to open fd, err is' + err);
359}).catch((err: BusinessError) => {
360  console.error('Failed to open fd, err is' + err);
361});
362```
363
364## on('timeUpdate')<sup>(deprecated)</sup>
365
366on(type: 'timeUpdate', callback: Callback\<number>): void
367
368Subscribes to the **'timeUpdate'** event. This event is reported every second when the audio playback is in progress.
369
370> **NOTE**
371>
372> This API is supported since API version 6 and deprecated since API version 9. You are advised to use [AVPlayer.on('timeUpdate')](arkts-apis-media-AVPlayer.md#ontimeupdate9) instead.
373
374**System capability**: SystemCapability.Multimedia.Media.AudioPlayer
375
376**Parameters**
377
378| Name  | Type             | Mandatory| Description                                                        |
379| -------- | ----------------- | ---- | ------------------------------------------------------------ |
380| type     | string            | Yes  | Event type, which is **'timeUpdate'** in this case.<br>The **'timeUpdate'** event is triggered when the audio playback starts after an audio playback timestamp update.|
381| callback | Callback\<number> | Yes  | Callback invoked when the event is triggered. The input parameter is the updated timestamp.            |
382
383**Example**
384
385```ts
386audioPlayer.on('timeUpdate', (newTime: number) => {    // Set the 'timeUpdate' event callback.
387  if (newTime == null) {
388    console.error('Failed to do timeUpdate');
389    return;
390  }
391  console.info('Succeeded in doing timeUpdate. seekDoneTime: ' + newTime);
392});
393audioPlayer.play();    // The 'timeUpdate' event is triggered when the playback starts.
394```
395
396## on('audioInterrupt')<sup>(deprecated)</sup>
397
398on(type: 'audioInterrupt', callback: (info: audio.InterruptEvent) => void): void
399
400Subscribes to the audio interruption event. For details, see [audio.InterruptEvent](../apis-audio-kit/arkts-apis-audio-i.md#interruptevent9).
401
402> **NOTE**
403>
404> This API is supported since API version 9 and deprecated since API version 9. You are advised to use [AVPlayer.on('audioInterrupt')](arkts-apis-media-AVPlayer.md#onaudiointerrupt9) instead.
405
406**System capability**: SystemCapability.Multimedia.Media.AudioPlayer
407
408**Parameters**
409
410| Name  | Type                                                        | Mandatory| Description                                                    |
411| -------- | ------------------------------------------------------------ | ---- | -------------------------------------------------------- |
412| type     | string                                                       | Yes  | Event type, which is **'audioInterrupt'** in this case.|
413| callback | function  | Yes  | Callback invoked when the event is triggered.                              |
414
415**Example**
416
417```ts
418import { audio } from '@kit.AudioKit';
419
420audioPlayer.on('audioInterrupt', (info: audio.InterruptEvent) => {
421  console.info('audioInterrupt called,and InterruptEvent info is:' + info);
422});
423```
424
425## on('error')<sup>(deprecated)</sup>
426
427on(type: 'error', callback: ErrorCallback): void
428
429Subscribes to audio playback error events. After an error event is reported, you must handle the event and exit the playback.
430
431> **NOTE**
432>
433> This API is supported since API version 6 and deprecated since API version 9. You are advised to use [AVPlayer.on('error')](arkts-apis-media-AVPlayer.md#onerror9) instead.
434
435**System capability**: SystemCapability.Multimedia.Media.AudioPlayer
436
437**Parameters**
438
439| Name  | Type         | Mandatory| Description                                                        |
440| -------- | ------------- | ---- | ------------------------------------------------------------ |
441| type     | string        | Yes  | Event type, which is **'error'** in this case.<br>This event is triggered when an error occurs during audio playback.|
442| callback | [ErrorCallback](../apis-basic-services-kit/js-apis-base.md#errorcallback) | Yes  | Callback invoked when the event is triggered.                                      |
443
444**Example**
445
446```ts
447import { BusinessError } from '@kit.BasicServicesKit';
448
449audioPlayer.on('error', (error: BusinessError) => {  // Set the 'error' event callback.
450  console.error(`audio error called, error: ${error}`);
451});
452audioPlayer.setVolume(3); // Set volume to an invalid value to trigger the 'error' event.
453```
454