# 音频 audio
# 导入模块
import audio from '@system.audio';
# 属性
| 名称 | 参数类型 | 是否可读 | 是否可写 | 必填 | 描述 | 
|---|---|---|---|---|---|
| src | String | 是 | 是 | 是 | 播放的音频媒体 uri | 
| currentTime | Number | 是 | 是 | 否 | 音频的当前进度,单位秒,对值设置可以调整播放进度 | 
| duration | Number | 是 | 否 | 否 | 音频的播放时长,单位秒,未知返回 NaN | 
| autoplay | Boolean | 是 | 是 | 否 | 音频是否自动播放,默认 false | 
| loop | Boolean | 是 | 是 | 否 | 音频是否循环播放,默认 false | 
| volume | Number | 是 | 是 | 否 | 音频的音量,默认当前系统媒体音量,音量变化范围[0.0,1.0] | 
| muted | Boolean | 是 | 是 | 否 | 音频是否静音,默认 false | 
- 示例
 
audio.src = './hello.mp3';
目前其他属性不支持 audio.属性名 获取和设置,后续版本迭代更新支持
# 方法
# audio.play()
开始播放音频
- 示例
 
audio.src = './hello.mp3';
audio.play();
# audio.pause()
暂停播放音频
- 示例
 
audio.pause();
# audio.stop()
停止音频播放,可以通过 play 重新播放音频
- 示例
 
audio.stop();
# audio.getPlayState(OBJECT)
获取当前播放状态数据
- 参数
 
| 参数名 | 类型 | 必填 | 说明 | 
|---|---|---|---|
| success | Function | 否 | 成功回调 | 
| fail | Function | 否 | 失败回调 | 
| complete | Function | 否 | 执行结束后的回调 | 
- success 返回值
 
| 参数值 | 类型 | 说明 | 
|---|---|---|
| state | String | 播放状态,分别为'play','pause','stop' | 
| src | String | 当前播放的音频媒体 uri,停止时返回空字符串 | 
| currentTime | Number | 当前音频的当前进度,单位秒,停止时返回-1 | 
| autoplay | Boolen | 当前音频是否在自动播放 | 
| loop | Boolen | 当前音频是否在循环播放 | 
| volume | Number | 当前音频的音量,默认当前系统媒体音量,音量变化范围[0.0,1.0] | 
| muted | Boolen | 当前音频是否在静音播放 | 
- 示例
 
audio.getPlayState({
  success: function(data) {
    console.log(`handling success: state: ${data.state},src:${ data.src },currentTime:${data.currentTime},
	autoplay:${data.autoplay},loop:${ data.loop },volume: ${data.volume},muted:${data.muted}`)
  },
  fail: function(data, code) {
    console.log('handling fail, code=' + code)
  }
})
# 事件
| 名称 | 描述 | 
|---|---|
| play | 在调用 play 方法后或者 autoplay 为 true 时的回调事件 | 
| pause | 在调用 pause 方法后的回调事件 | 
| stop | 在调用 stop 方法后的回调事件 | 
| loadeddata | 第一次获取到音频数据的回调事件 | 
| ended | 播放结束时的回调事件 | 
| durationchange | 播放时长变化时的回调事件 | 
| error | 播放发生错误时的回调事件 | 
| timeupdate | 播放进度变化时触发,可实现进度条 | 
- 示例
 
audio.onplay = ()=>{
  console.log('playing');
}
audio.ontimeupdate = data => {
    console.log(data.currentTime)
}