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><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