diff --git a/zh-cn/application-dev/media/audio-capturer.md b/zh-cn/application-dev/media/audio-capturer.md
new file mode 100644
index 0000000000000000000000000000000000000000..f04137a3504c76ab983a91c4a28424f2d8230cca
--- /dev/null
+++ b/zh-cn/application-dev/media/audio-capturer.md
@@ -0,0 +1,161 @@
+# AudioCapturer音频录制开发指南
+
+---
+## ***注意***:
+ 1. 本文档适用于JavaScript。
+---
+## **摘要**
+指南提供 JS 应用程序如何使用 AudioCapturer 来录制音频。
+应用程序可以使用本文档中提供的方法来录制原始音频文件。
+
+## **音频录制框架**
+AudioCapturer 接口是音频框架中最重要的组件之一。
+### **音频录制:**
+AudioCapturer 框架提供了用于获取原始音频文件的方法。
+
+## **使用步骤**
+- 这是一个如何使用 AudioCapturer 获取原始音频文件的示例。
+
+1. 使用 **createAudioCapturer()** 创建一个 AudioCapturer 实例。 音频录制器参数可以在**audioCapturerOptions**中设置。
+ 该实例可用于录制、控制和获取录制状态,以及注册通知回调。
+
+ ```
+ var audioStreamInfo = {
+ samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_44100,
+ channels: audio.AudioChannel.CHANNEL_1,
+ sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE,
+ encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW
+ }
+
+ var audioCapturerInfo = {
+ source: audio.SourceType.SOURCE_TYPE_MIC,
+ capturerFlags: 1
+ }
+
+ var audioCapturerOptions = {
+ streamInfo: audioStreamInfo,
+ capturerInfo: audioCapturerInfo
+ }
+
+ let audioCapturer = await audio.createAudioCapturer(audioCapturerOptions);
+ var state = audioRenderer.state;
+ ```
+
+2. (可选)使用 **on('stateChange')** API 订阅音频录制器状态更改事件。
+ 如果应用程序想根据录制器中的状态更新采取行动,应用程序可以订阅状态更改事件。
+ 应用程序还可以订阅更多事件,例如“markReach”和“periodReach”。 参考[**js-apis-audio.md**](https://gitee.com/openharmony/docs/blob/master/en/application-dev/reference/apis/js-apis-audio.md) 更多详细信息。
+
+ ```
+ audioCapturer.on('stateChange',(state) => {
+ console.info('AudioCapturerLog: Changed State to : ' + state)
+ switch (state) {
+ case audio.AudioState.STATE_PREPARED:
+ console.info('--------CHANGE IN AUDIO STATE----------PREPARED--------------');
+ console.info('Audio State is : Prepared');
+ break;
+ case audio.AudioState.STATE_RUNNING:
+ console.info('--------CHANGE IN AUDIO STATE----------RUNNING--------------');
+ console.info('Audio State is : Running');
+ break;
+ case audio.AudioState.STATE_STOPPED:
+ console.info('--------CHANGE IN AUDIO STATE----------STOPPED--------------');
+ console.info('Audio State is : stopped');
+ break;
+ case audio.AudioState.STATE_RELEASED:
+ console.info('--------CHANGE IN AUDIO STATE----------RELEASED--------------');
+ console.info('Audio State is : released');
+ break;
+ default:
+ console.info('--------CHANGE IN AUDIO STATE----------INVALID--------------');
+ console.info('Audio State is : invalid');
+ break;
+ }
+ });
+ ```
+
+3. 在 AudioCapturer 实例上调用 **start()** 方法来启动/恢复录制任务。
+ 启动完成后,录制器状态将为 STATE_RUNNING。 然后应用程序可以开始读取缓冲区。
+
+ ```
+ await audioCapturer.start();
+ if (audioCapturer.state == audio.AudioState.STATE_RUNNING) {
+ console.info('AudioRecLog: Capturer started');
+ } else {
+ console.info('AudioRecLog: Capturer start failed');
+ }
+ ```
+
+4. 使用 **getBufferSize()** 方法获取要读取的最小缓冲区大小。
+
+ ```
+ var bufferSize = await audioCapturer.getBufferSize();
+ console.info('AudioRecLog: buffer size: ' + bufferSize);
+ ```
+
+5. 读取录制器的音频数据并将其转换为字节流。 重复调用**read()** 方法读取数据,直到应用程序想要停止录制。
+
+ 以下示例显示如何将记录的数据写入文件。
+
+ ```
+ import fileio from '@ohos.fileio';
+
+ const path = '/data/data/.pulse_dir/capture_js.wav';
+ let fd = fileio.openSync(path, 0o102, 0o777);
+ if (fd !== null) {
+ console.info('AudioRecLog: file fd created');
+ }
+ else{
+ console.info('AudioRecLog: file fd create : FAILED');
+ return;
+ }
+
+ fd = fileio.openSync(path, 0o2002, 0o666);
+ if (fd !== null) {
+ console.info('AudioRecLog: file fd opened in append mode');
+ }
+
+ var numBuffersToCapture = 150;
+ while (numBuffersToCapture) {
+ var buffer = await audioCapturer.read(bufferSize, true);
+ if (typeof(buffer) == undefined) {
+ console.info('read buffer failed');
+ } else {
+ var number = fileio.writeSync(fd, buffer);
+ console.info('AudioRecLog: data written: ' + number);
+ }
+
+ numBuffersToCapture--;
+ }
+ ```
+
+6. 录制完成后,调用 AudioCapturer 的 **stop()** 方法 停止录制。
+
+ ```
+ await audioCapturer.stop();
+ if (audioCapturer.state == audio.AudioState.STATE_STOPPED) {
+ console.info('AudioRecLog: Capturer stopped');
+ } else {
+ console.info('AudioRecLog: Capturer stop failed');
+ }
+ ```
+
+7. 录制任务完成后,调用AudioCapturer的**release()** 方法释放流资源。
+
+ ```
+ await audioCapturer.release();
+ if (audioCapturer.state == audio.AudioState.STATE_RELEASED) {
+ console.info('AudioRecLog: Capturer released');
+ } else {
+ console.info('AudioRecLog: Capturer release failed');
+ }
+ ```
+## **状态检查的重要性**
+
+应用程序开发人员应该记住,AudioCapturer 是基于状态的。
+
+也就是说,AudioCapturer 有一个内部状态,应用程序在调用录制器控制 API 时必须始终检查该状态,因为某些操作仅在录制器处于给定状态时才可接受。
+如果应用程序在录制器处于不正确状态时执行操作,系统可能会抛出错误/异常或生成其他未定义的行为。
+
+## **其他方法**
+
+更多有用的方法详见[**js api audio.md**](https://gitee.com/openharmony/docs/blob/master/en/application-dev/reference/apis/js-apis-audio.md),如**getAudioTime**、**getCapturerInfo**和**getStreamInfo**。
diff --git a/zh-cn/application-dev/media/audio-renderer.md b/zh-cn/application-dev/media/audio-renderer.md
new file mode 100644
index 0000000000000000000000000000000000000000..390ae77c0ac77334fe2095f6f248478237b93d11
--- /dev/null
+++ b/zh-cn/application-dev/media/audio-renderer.md
@@ -0,0 +1,294 @@
+# AudioRenderer音频播放开发指南
+
+---
+
+## ***注意***:
+
+ 1. 本文档适用于JavaScript。
+
+---
+
+## **摘要**
+
+本指南将向您展示如何使用AudioRenderer创建音频播放器应用程序。
+您可以使用本文档中提供的API在输出设备中播放音频文件,并管理播放任务。
+
+## **音频播放框架**
+
+AudioRenderer接口是音频框架中最重要的组件之一。
+
+### **音频播放:**
+
+AudioRenderer框架提供了用于播放音频文件和控制播放的接口。
+
+### **音频中断:**
+
+当较高优先级的流想要播放时,AudioRenderer 框架会中断较低优先级的流。
+例如,如果您在听音乐时有来电,则音乐播放作为较低优先级的流将被暂停。
+通过下面的示例代码,我们将详细了解 AudioInterrupt 的工作原理。
+
+请参阅 [**js-apis-audio.md**](https://gitee.com/openharmony/docs/blob/master/en/application-dev/reference/apis/js-apis-audio.md) 获取支持的音频流类型和格式的列表,例如 AudioSampleFormat、AudioChannel、AudioSampleFormat 和 AudioEncodingType。
+
+
+## **使用步骤**
+
+- 下面是一个如何使用AudioRenderer播放原始音频文件的示例。
+
+1. 使用 **createAudioRenderer** 创建一个 AudioRenderer 实例。播放器参数可以在**audioRendererOptions**中设置。
+ 该对象可用于播放、控制和获取播放状态,以及接收回调通知。
+
+ ```
+ var audioStreamInfo = {
+ samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_44100,
+ channels: audio.AudioChannel.CHANNEL_1,
+ sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE,
+ encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW
+ }
+
+ var audioRendererInfo = {
+ content: audio.ContentType.CONTENT_TYPE_SPEECH,
+ usage: audio.StreamUsage.STREAM_USAGE_VOICE_COMMUNICATION,
+ rendererFlags: 1
+ }
+
+ var audioRendererOptions = {
+ streamInfo: audioStreamInfo,
+ rendererInfo: audioRendererInfo
+ }
+
+ let audioRenderer = await audio.createAudioRenderer(audioRendererOptions);
+ ```
+
+2. 使用 **on** 方法订阅音频中断事件。
+ 当优先级更高或相等的 Stream-B 请求激活并使用输出设备时,Stream-A 被中断。
+ 在某些情况下,框架会采取暂停和降低音量等强制操作,并使用 **InterruptEvent** 通知应用程序。 在其他情况下,应用程序可以自行选择对 **InterruptEvent** 做出响应。 当应用程序被强制操作中断时,它应该处理状态、更新用户界面等。
+
+ 在音频中断的情况下,应用程序可能会遇到写入失败,不感知、不处理中断的应用程序在写入音频数据之前可以使用 **audioRenderer.state** 方法检查播放器状态,而中断可通过此监听获取到更多详细信息。
+
+ 中断事件信息:
+
+ 1) **eventType:**中断是开始还是结束。
+
+ | 名称 | 描述 |
+ | -------------------- | ------------------ |
+ | INTERRUPT_TYPE_BEGIN | 表示中断已经开始。 |
+ | INTERRUPT_TYPE_END | 表示中断已经结束。 |
+
+ 2) **forceType:**框架是否已经采取行动,或者是否建议应用程序采取行动。
+
+ | 名称 | 描述 |
+ | :-------------- | :------------------------- |
+ | INTERRUPT_FORCE | 音频状态已被框架更改。 |
+ | INTERRUPT_SHARE | 应用程序可以决定是否响应。 |
+
+ 3) **hintType:**中断事件类型。
+
+ | 名称 | 描述 |
+ | :-------------------- | :----------------- |
+ | INTERRUPT_HINT_PAUSE | 暂停播放。 |
+ | INTERRUPT_HINT_RESUME | 恢复播放。 |
+ | INTERRUPT_HINT_STOP | 停止播放。 |
+ | INTERRUPT_HINT_DUCK | 降低播放流的音量。 |
+ | INTERRUPT_HINT_UNDUCK | 恢复播放流的音量。 |
+
+ 4) **某些操作是完全强制或共享的**,分别代表,强制表示框架执行,共享表示应用执行。
+ 例如,当音乐流正在进行时收到呼叫时,框架会强制音乐流暂停。调用结束后框架不会强制恢复音乐流.相反,它会提醒应用程序恢复播放。
+
+ | 名称 | 描述 |
+ | --------------------- | -------------------------------------------------------- |
+ | INTERRUPT_HINT_RESUME | forceType类型为:INTERRUPT_SHARE。它只能由应用程序完成。 |
+ | INTERRUPT_HINT_DUCK | forceType类型为:INTERRUPT_FORCE。它只能由框架来完成。 |
+ | INTERRUPT_HINT_UNDUCK | forceType类型为:INTERRUPT_FORCE。它只能由框架来完成。 |
+
+ ```
+ audioRenderer.on('interrupt', (interruptEvent) => {
+ console.info('InterruptEvent Received');
+ console.info('InterruptType: ' + interruptEvent.eventType);
+ console.info('InterruptForceType: ' + interruptEvent.forceType);
+ console.info('AInterruptHint: ' + interruptEvent.hintType);
+
+ if (interruptEvent.forceType == audio.InterruptForceType.INTERRUPT_FORCE) {
+ switch (interruptEvent.hintType) {
+ // Force Pause: Action was taken by framework.
+ // Halt the write calls to avoid data loss.
+ case audio.InterruptHint.INTERRUPT_HINT_PAUSE:
+ isPlay = false;
+ break;
+ // Force Stop: Action was taken by framework.
+ // Halt the write calls to avoid data loss.
+ case audio.InterruptHint.INTERRUPT_HINT_STOP:
+ isPlay = false;
+ break;
+ // Force Duck: Action was taken by framework,
+ // just notifying the app that volume has been reduced.
+ case audio.InterruptHint.INTERRUPT_HINT_DUCK:
+ break;
+ // Force Unduck: Action was taken by framework,
+ // just notifying the app that volume has been restored.
+ case audio.InterruptHint.INTERRUPT_HINT_UNDUCK:
+ break;
+ }
+ } else if (interruptEvent.forceType == audio.InterruptForceType.INTERRUPT_SHARE) {
+ switch (interruptEvent.hintType) {
+ // Share Resume: Action is to be taken by App.
+ // Resume the force paused stream if required.
+ case audio.InterruptHint.INTERRUPT_HINT_RESUME:
+ startRenderer();
+ break;
+ // Share Pause: Stream has been interrupted,
+ // It can choose to pause or play concurrently.
+ case audio.InterruptHint.INTERRUPT_HINT_PAUSE:
+ isPlay = false;
+ pauseRenderer();
+ break;
+ }
+ }
+ });
+```
+
+3. 在 AudioRenderer 实例上调用 **start()** 函数来启动/恢复播放任务。
+ 启动完成后,渲染器状态将为 STATE_RUNNING。 然后您可以开始写入缓冲区。
+
+ ```
+ async function startRenderer() {
+ var state = audioRenderer.state;
+ // state should be prepared, paused or stopped.
+ if (state != audio.AudioState.STATE_PREPARED || state != audio.AudioState.STATE_PAUSED ||
+ state != audio.AudioState.STATE_STOPPED) {
+ console.info('Renderer is not in a correct state to start');
+ return;
+ }
+
+ await audioRenderer.start();
+
+ state = audioRenderer.state;
+ if (state == audio.AudioState.STATE_RUNNING) {
+ console.info('Renderer started');
+ } else {
+ console.error('Renderer start failed');
+ }
+ }
+ ```
+
+4. 调用 **write** 开始向缓冲区写入数据。
+ 将要播放的音频数据读入缓冲区。 反复调用write方法写入数据。
+
+ ```
+ async function writeBuffer(buf) {
+ var state = audioRenderer.state;
+ if (state != audio.AudioState.STATE_RUNNING) {
+ console.error('Renderer is not running, do not write');
+ isPlay = false;
+ return;
+ }
+ let writtenbytes = await audioRenderer.write(buf);
+
+ console.info('Actual written bytes: ' + writtenbytes);
+ if (writtenbytes < 0) {
+ console.error('Write buffer failed. check the state of renderer');
+ }
+ }
+
+ // Reasonable minimum buffer size for renderer. However, the renderer can accept other read sizes as well.
+ const bufferSize = await audioRenderer.getBufferSize();
+ const path = '/data/file_example_WAV_2MG.wav';
+ let ss = fileio.createStreamSync(path, 'r');
+ const totalSize = 2146166; // file_example_WAV_2MG.wav
+ let rlen = 0;
+ let discardHeader = new ArrayBuffer(44);
+ ss.readSync(discardHeader);
+ rlen += 44;
+
+ var id = setInterval(() => {
+ if (isPlay || isRelease) {
+ if (rlen >= totalSize || isRelease) {
+ ss.closeSync();
+ stopRenderer();
+ clearInterval(id);
+ }
+ let buf = new ArrayBuffer(bufferSize);
+ rlen += ss.readSync(buf);
+ console.info('Total bytes read from file: ' + rlen);
+ writeBuffer(buf);
+ } else {
+ console.info('check after next interval');
+ }
+ } , 30); // interval to be set based on audio file format
+ ```
+
+5. (可选)在 AudioRenderer 实例上调用 **pause()** 或 **stop()**。
+
+ ```
+ async function pauseRenderer() {
+ var state = audioRenderer.state;
+ if (state != audio.AudioState.STATE_RUNNING) {
+ console.info('Renderer is not running');
+ return;
+ }
+
+ await audioRenderer.pause();
+
+ state = audioRenderer.state;
+ if (state == audio.AudioState.STATE_PAUSED) {
+ console.info('Renderer paused');
+ } else {
+ console.error('Renderer pause failed');
+ }
+ }
+
+ async function stopRenderer() {
+ var state = audioRenderer.state;
+ if (state != audio.AudioState.STATE_RUNNING || state != audio.AudioState.STATE_PAUSED) {
+ console.info('Renderer is not running or paused');
+ return;
+ }
+
+ await audioRenderer.stop();
+
+ state = audioRenderer.state;
+ if (state == audio.AudioState.STATE_STOPPED) {
+ console.info('Renderer stopped');
+ } else {
+ console.error('Renderer stop failed');
+ }
+ }
+ ```
+
+6. 播放任务完成后,调用AudioRenderer实例上的**release()** 函数释放资源。
+ AudioRenderer 可以使用大量的系统资源。因此,只要不再需要资源,就必须释放它们。为确保分配给它的任何系统资源都得到适当释放, 您应该始终调用**release()**。
+
+ ```
+ async function releaseRenderer() {
+ if (state_ == RELEASED || state_ == NEW) {
+ console.info('Resourced already released');
+ return;
+ }
+
+ await audioRenderer.release();
+
+ state = audioRenderer.state;
+ if (state == STATE_RELEASED) {
+ console.info('Renderer released');
+ } else {
+ console.info('Renderer release failed');
+ }
+
+ }
+ ```
+
+## **状态检查的重要性:**
+
+您还应该记住,AudioRenderer 是基于状态的。
+也就是说,AudioRenderer 有一个内部状态,在调用播放控制 API 时必须始终检查它,因为某些操作仅在音频播放器处于给定状态时才可接受。
+如果您在不正确的状态下执行操作,系统可能会抛出错误/异常或生成其他未定义的行为。
+
+## **异步操作:**
+
+大多数AudioRenderer调用都是异步的。因此,UI线程不会被阻塞。
+
+对于每个API,框架都提供callback函数和promise函数。
+在本例中,为了简单起见,使用了promise函数。[**js api audio.md**](https://gitee.com/openharmony/docs/blob/master/en/application-dev/reference/apis/js-apis-audio.md)为callback和promise提供参考。
+
+## **其他 APIs 接口:**
+
+详见[**js api audio.md**](https://gitee.com/openharmony/docs/blob/master/en/application-dev/reference/apis/js-apis-audio.md)获取更有用的API,如getAudioTime、drain和getBufferSize。
\ No newline at end of file
diff --git a/zh-cn/application-dev/reference/apis/js-apis-audio.md b/zh-cn/application-dev/reference/apis/js-apis-audio.md
index 607758131ea1a1cf097668faf3f64b466abba8f8..d41375211629ad489b7a4d4f23025ec48f2b5417 100644
--- a/zh-cn/application-dev/reference/apis/js-apis-audio.md
+++ b/zh-cn/application-dev/reference/apis/js-apis-audio.md
@@ -1,7 +1,11 @@
# 音频管理
+<<<<<<< HEAD
+该模块提供以下功能:音频管理、音频播放、系统声音管理。
+=======
> **说明:**
> 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
+>>>>>>> fa9ed42f82b05774857a54cc011927699ad85740
## 导入模块
@@ -9,8 +13,11 @@
import audio from '@ohos.multimedia.audio';
```
+## 权限
-## getAudioManager
+无
+
+## audioManager
getAudioManager(): AudioManager
@@ -19,6 +26,7 @@ getAudioManager(): AudioManager
**系统能力:** SystemCapability.Multimedia.Audio.Core
**返回值:**
+
| 类型 | 说明 |
| -------- | -------- |
| [AudioManager](#audiomanager) | 音频管理类。 |
@@ -28,6 +36,69 @@ getAudioManager(): AudioManager
var audioManager = audio.getAudioManager();
```
+## audioRenderer
+
+createAudioRenderer(options: AudioRendererOptions): AudioRenderer
+
+获取音频播放器。
+
+**参数**:
+
+| 参数名 | 类型 | 必填 | 说明 |
+| ------- | --------------------------------------------- | ---- | ----------- |
+| options | [AudioRendererOptions](#audiorendereroptions) | 是 | 配置播放器. |
+
+**返回值**:
+
+| 类型 | 说明 |
+| ------------- | ---------------- |
+| AudioRenderer | 音频播放器对象。 |
+
+**示例:**
+
+```
+var audioStreamInfo = {
+ samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_44100,
+ channels: audio.AudioChannel.CHANNEL_1,
+ sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE,
+ encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW
+}
+
+var audioRendererInfo = {
+ content: audio.ContentType.CONTENT_TYPE_SPEECH,
+ usage: audio.StreamUsage.STREAM_USAGE_VOICE_COMMUNICATION,
+ rendererFlags: 1
+}
+
+var audioRendererOptions = {
+ streamInfo: audioStreamInfo,
+ rendererInfo: audioRendererInfo
+}
+
+let audioRenderer = await audio.createAudioRenderer(audioRendererOptions);
+```
+
+## systemSoundManager
+
+getSystemSoundManager(): SystemSoundManager
+
+获取 **SystemSoundManager**实例对象。
+
+**参数**
+
+无
+
+**返回值**
+
+| Type | Description |
+| ------------------ | -------------- |
+| SystemSoundManager | 系统声音管理器 |
+
+**示例:**
+
+```
+const systemSoundManager = audio.getSystemSoundManager();
+```
## AudioVolumeType
@@ -64,6 +135,18 @@ var audioManager = audio.getAudioManager();
枚举,设备类型。
+<<<<<<< HEAD
+| 名称 | 默认值 | 描述 |
+| -------------- | ------ | ------------------------------------------------------- |
+| INVALID | 0 | 无效设备。 |
+| SPEAKER | 2 | 扬声器。 |
+| WIRED_HEADSET | 3 | 有线耳机。 |
+| BLUETOOTH_SCO | 7 | 蓝牙设备SCO连接(Synchronous Connection Oriented)。 |
+| BLUETOOTH_A2DP | 8 | 蓝牙设备A2DP连接(Advanced Audio Distribution Profile)。 |
+| MIC | 15 | 麦克风。 |
+
+## AudioRingMode7+
+=======
| 名称 | 默认值 | 描述 |
| -------------- | ------ | ------------------------------------------------------------ |
| INVALID | 0 | 无效设备。
**系统能力:** SystemCapability.Multimedia.Audio.Device |
@@ -84,6 +167,7 @@ var audioManager = audio.getAudioManager();
| BLUETOOTH_SCO | 7 | 蓝牙设备SCO连接(Synchronous Connection Oriented)。
**系统能力:** SystemCapability.Multimedia.Audio.Device |
## AudioRingMode
+>>>>>>> fa9ed42f82b05774857a54cc011927699ad85740
枚举,铃声模式。
@@ -93,12 +177,200 @@ var audioManager = audio.getAudioManager();
| RINGER_MODE_VIBRATE | 1 | 震动模式。
**系统能力:** SystemCapability.Multimedia.Audio.Communication |
| RINGER_MODE_NORMAL | 2 | 响铃模式。
**系统能力:** SystemCapability.Multimedia.Audio.Communication |
+## AudioSampleFormat8+
+
+枚举,音频采样格式。
+
+| 名称 | 默认值 | 描述 |
+| --------------------- | ------ | ------------------------ |
+| SAMPLE_FORMAT_INVALID | -1 | 无效格式。 |
+| SAMPLE_FORMAT_U8 | 0 | 无符号8位整数。 |
+| SAMPLE_FORMAT_S16LE | 1 | 带符号的16位整数,小尾数 |
+| SAMPLE_FORMAT_S24LE | 2 | 带符号的24位整数,小尾数 |
+| SAMPLE_FORMAT_S32LE | 3 | 带符号的24位整数,小尾数 |
+
+## AudioChannel8+
+
+枚举, 音频声道。
+
+| 名称 | 默认值 | 描述 |
+| --------- | -------- | -------- |
+| CHANNEL_1 | 0x1 << 0 | 单声道。 |
+| CHANNEL_2 | 0x1 << 1 | 双声道。 |
+
+## AudioSamplingRate8+
+
+枚举,音频采样率。
+
+| 名称 | 默认值 | 描述 |
+| ----------------- | ------ | -------------- |
+| SAMPLE_RATE_8000 | 8000 | 采样率8000。 |
+| SAMPLE_RATE_11025 | 11025 | 采样率11025。 |
+| SAMPLE_RATE_12000 | 12000 | 采样率12000。 |
+| SAMPLE_RATE_16000 | 16000 | 采样率16000。 |
+| SAMPLE_RATE_22050 | 22050 | 采样率22050。 |
+| SAMPLE_RATE_24000 | 24000 | 采样率24000。 |
+| SAMPLE_RATE_32000 | 32000 | 采样率32000。 |
+| SAMPLE_RATE_44100 | 44100 | 采样率 44100。 |
+| SAMPLE_RATE_48000 | 48000 | 采样率48000。 |
+| SAMPLE_RATE_64000 | 64000 | 采样率64000。 |
+| SAMPLE_RATE_96000 | 96000 | 采样率96000。 |
+
+## AudioEncodingType8+
+
+枚举,音频编码类型。
+
+| 名称 | 默认值 | 描述 |
+| --------------------- | ------ | ---------- |
+| ENCODING_TYPE_INVALID | -1 | 无效类型。 |
+| ENCODING_TYPE_RAW | 0 | RAW类型。 |
+
+## ContentType8+
+
+枚举,媒体类型。
+
+| 名称 | 默认值 | 描述 |
+| ------------------------- | ------ | ---------------- |
+| CONTENT_TYPE_UNKNOWN | 0 | 表示类型为未知。 |
+| CONTENT_TYPE_SPEECH | 1 | 表示类型为语音。 |
+| CONTENT_TYPE_MUSIC | 2 | 表示类型为音乐。 |
+| CONTENT_TYPE_MOVIE | 3 | 表示类型为电影。 |
+| CONTENT_TYPE_SONIFICATION | 4 | 表示类型为加密。 |
+| CONTENT_TYPE_RINGTONE | 5 | 表示类型为铃声。 |
+
+## StreamUsage8+
+
+枚举,音频流使用类型。
+
+| 名称 | 默认值 | 描述 |
+| ---------------------------------- | ------ | -------------- |
+| STREAM_USAGE_UNKNOWN | 0 | 表示未知。 |
+| STREAM_USAGE_MEDIA | 1 | 表示音频。 |
+| STREAM_USAGE_VOICE_COMMUNICATION | 2 | 表示语音通信。 |
+| STREAM_USAGE_NOTIFICATION_RINGTONE | 3 | 表示通知铃声。 |
+
+## AudioState8+
+
+枚举,音频状态。
+
+| 名称 | 默认值 | 描述 |
+| -------------- | ------ | ---------------- |
+| STATE_INVALID | -1 | 无效状态。 |
+| STATE_NEW | 0 | 创建新实例状态。 |
+| STATE_PREPARED | 1 | 准备状态。 |
+| STATE_RUNNING | 2 | 可运行状态。 |
+| STATE_STOPPED | 3 | 停止状态。 |
+| STATE_RELEASED | 4 | 释放状态。 |
+| STATE_PAUSED | 5 | 暂停状态。 |
+
+## AudioRendererRate8+
+
+枚举,渲染速度。
+
+| 名称 | 默认值 | 描述 |
+| ------------------ | ------ | ----------- |
+| RENDER_RATE_NORMAL | 0 | 正常速度。 |
+| RENDER_RATE_DOUBLE | 1 | 双倍速度。 |
+| RENDER_RATE_HALF | 2 | 1/2的速度。 |
+
+## InterruptType8+
+
+枚举,中断类型。
+
+| 名称 | 默认值 | 描述 |
+| -------------------- | ------ | ------------------ |
+| INTERRUPT_TYPE_BEGIN | 1 | 音频播放中断开始。 |
+| INTERRUPT_TYPE_END | 2 | 音频播放中断结束。 |
+
+## InterruptForceType8+
+
+枚举,强制打断类型。
+
+| 名称 | 默认值 | 描述 |
+| --------------- | ------ | ------------------------- |
+| INTERRUPT_FORCE | 0 | 由系统采取强制操作。 |
+| INTERRUPT_SHARE | 1 | App可以选择采取行动或忽略 |
+
+## InterruptHint8+
+
+ 枚举,中断提示。
+
+| 名称 | 默认值 | 描述 |
+| --------------------- | ------ | ---------------------------------------- |
+| INTERRUPT_HINT_NONE | 0 | 无。 |
+| INTERRUPT_HINT_RESUME | 1 | 恢复播放。 |
+| INTERRUPT_HINT_PAUSE | 2 | 暂停/被暂停播放。 |
+| INTERRUPT_HINT_STOP | 3 | 停止/被停止播放。 |
+| INTERRUPT_HINT_DUCK | 4 | 音频躲避。(躲避:音量减弱,而不会停止) |
+| INTERRUPT_HINT_UNDUCK | 5 | 恢复音量。 |
+
+## AudioStreamInfo8+
+
+描述音频流信息。
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| ------------ | --------------------------------------- | ---- | -------------------------- |
+| samplingRate | [AudioSamplingRate](#audiosamplingrate) | 是 | 表示播放音频文件的采样率。 |
+| channels | [AudioChannel](#audiochannel) | 是 | 表示播放音频文件的通道数。 |
+| sampleFormat | [AudioSampleFormat](#audiosampleformat) | 是 | 表示音频采样格式。 |
+| encodingType | [AudioEncodingType](#audioencodingtype) | 是 | 表示音频编码格式。 |
+
+## AudioRendererInfo8+
+
+描述音频渲染器信息。
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| ------------- | --------------------------- | ---- | -------------------- |
+| contentType | [ContentType](#contenttype) | 是 | 表示媒体类型。 |
+| usage | [StreamUsage](#streamusage) | 是 | 表示音频流使用类型。 |
+| rendererFlags | number | 是 | 表示音频渲染器标志。 |
+
+## AudioRendererOptions8+
+
+描述音频渲染器信息。
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| ------------ | --------------------------------------- | ---- | ---------------- |
+| streamInfo | [AudioStreamInfo](#audiostreaminfo) | 是 | 表示音频流信息。 |
+| rendererInfo | [AudioRendererInfo](#audiorendererinfo) | 是 | 表示播放器信息。 |
+
+## InterruptEvent8+
+
+描述播放中断时应用程序接收的中断事件。
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| --------- | ----------------------------------------- | ---- | ------------------------------------------ |
+| eventType | [InterruptType](#interrupttype) | 是 | 表示指示中断是开始还是结束。 |
+| forceType | [InterruptForceType](#interruptforcetype) | 是 | 表示指示操作是由系统执行还是由应用程序执行 |
+| hintType | [InterruptHint](#interrupthint) | 是 | 表示系统已采取或应用程序将采取的操作。 |
-## AudioManager
+## VolumeEvent8+
+
+描述应用程序在音量发生更改时接收的事件。
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| ---------- | ----------------------------------- | ---- | -------------------------------------------------------- |
+| volumeType | [AudioVolumeType](#AudioVolumeType) | 是 | 音量流类型。 |
+| volume | number | 是 | 音量等级,可设置范围通过getMinVolume和getMaxVolume获取。 |
+| updateUi | boolean | 是 | 在Ui中显示音量变化。 |
+
+
+
+# AudioManager
管理音频音量和音频设备。
-### setVolume
+## audioManager.setVolume
setVolume(volumeType: AudioVolumeType, volume: number, callback: AsyncCallback<void>): void
@@ -114,10 +386,13 @@ setVolume(volumeType: AudioVolumeType, volume: number, callback: AsyncCallback&l
| volume | number | 是 | 音量等级,可设置范围通过getMinVolume和getMaxVolume获取。 |
| callback | AsyncCallback<void> | 是 | 回调表示成功还是失败。 |
+**返回值:**
+
+无
+
**示例:**
```
-var audioManager = audio.getAudioManager();
audioManager.setVolume(audio.AudioVolumeType.MEDIA, 10, (err)=>{
if (err) {
console.error('Failed to set the volume. ${err.message}');
@@ -127,7 +402,7 @@ audioManager.setVolume(audio.AudioVolumeType.MEDIA, 10, (err)=>{
})
```
-### setVolume
+## audioManager.setVolume
setVolume(volumeType: AudioVolumeType, volume: number): Promise<void>
@@ -151,13 +426,12 @@ setVolume(volumeType: AudioVolumeType, volume: number): Promise<void>
**示例:**
```
-var audioManager = audio.getAudioManager();
audioManager.setVolume(audio.AudioVolumeType.MEDIA, 10).then(()=>
console.log('Promise returned to indicate a successful volume setting.');
)
```
-### getVolume
+## audioManager.getVolume
getVolume(volumeType: AudioVolumeType, callback: AsyncCallback<number>): void
@@ -172,10 +446,13 @@ getVolume(volumeType: AudioVolumeType, callback: AsyncCallback<number>): v
| volumeType | [AudioVolumeType](#audiovolumetype) | 是 | 音量流类型。 |
| callback | AsyncCallback<number> | 是 | 回调返回音量大小。 |
+**返回值:**
+
+无
+
**示例:**
```
-var audioManager = audio.getAudioManager();
audioManager.getVolume(audio.AudioVolumeType.MEDIA, (err, value) => {
if (err) {
console.error('Failed to obtain the volume. ${err.message}');
@@ -185,7 +462,7 @@ audioManager.getVolume(audio.AudioVolumeType.MEDIA, (err, value) => {
})
```
-### getVolume
+## audioManager.getVolume
getVolume(volumeType: AudioVolumeType): Promise<number>
@@ -208,13 +485,12 @@ getVolume(volumeType: AudioVolumeType): Promise<number>
**示例:**
```
-var audioManager = audio.getAudioManager();
audioManager.getVolume(audio.AudioVolumeType.MEDIA).then((value) =>
console.log('Promise returned to indicate that the volume is obtained.' + value);
)
```
-### getMinVolume
+## audioManager.getMinVolume
getMinVolume(volumeType: AudioVolumeType, callback: AsyncCallback<number>): void
@@ -229,10 +505,13 @@ getMinVolume(volumeType: AudioVolumeType, callback: AsyncCallback<number>)
| volumeType | [AudioVolumeType](#audiovolumetype) | 是 | 音量流类型。 |
| callback | AsyncCallback<number> | 是 | 回调返回最小音量。 |
+**返回值:**
+
+无
+
**示例:**
```
-var audioManager = audio.getAudioManager();
audioManager.getMinVolume(audio.AudioVolumeType.MEDIA, (err, value) => {
if (err) {
console.error('Failed to obtain the minimum volume. ${err.message}');
@@ -242,7 +521,7 @@ audioManager.getMinVolume(audio.AudioVolumeType.MEDIA, (err, value) => {
})
```
-### getMinVolume
+## audioManager.getMinVolume
getMinVolume(volumeType: AudioVolumeType): Promise<number>
@@ -265,13 +544,12 @@ getMinVolume(volumeType: AudioVolumeType): Promise<number>
**示例:**
```
-var audioManager = audio.getAudioManager();
audioManager.getMinVolume(audio.AudioVolumeType.MEDIA).then((value) =>
console.log('Promised returned to indicate that the minimum volume is obtained.' + value);
)
```
-### getMaxVolume
+## audioManager.getMaxVolume
getMaxVolume(volumeType: AudioVolumeType, callback: AsyncCallback<number>): void
@@ -286,10 +564,13 @@ getMaxVolume(volumeType: AudioVolumeType, callback: AsyncCallback<number>)
| volumeType | [AudioVolumeType](#audiovolumetype) | 是 | 音量流类型。 |
| callback | AsyncCallback<number> | 是 | 回调返回最大音量大小。 |
+**返回值:**
+
+无
+
**示例:**
```
-var audioManager = audio.getAudioManager();
audioManager.getMaxVolume(audio.AudioVolumeType.MEDIA, (err, value) => {
if (err) {
console.error('Failed to obtain the maximum volume. ${err.message}');
@@ -299,7 +580,7 @@ audioManager.getMaxVolume(audio.AudioVolumeType.MEDIA, (err, value) => {
})
```
-### getMaxVolume
+## audioManager.getMaxVolume
getMaxVolume(volumeType: AudioVolumeType): Promise<number>
@@ -322,13 +603,20 @@ getMaxVolume(volumeType: AudioVolumeType): Promise<number>
**示例:**
```
-var audioManager = audio.getAudioManager();
-audioManager.getMaxVolume(audio.AudioVolumeType.MEDIA).then((data)=>
- console.log('Promised returned to indicate that the maximum volume is obtained.');
-)
+audioManager.mute(audio.AudioVolumeType.MEDIA, true, (err) => {
+ if (err) {
+ console.error('Failed to mute the stream. ${err.message}');
+ return;
+ }
+ console.log('Callback invoked to indicate that the stream is muted.');
+})
```
+<<<<<<< HEAD
+## audioManager.mute
+=======
### mute
+>>>>>>> fa9ed42f82b05774857a54cc011927699ad85740
mute(volumeType: AudioVolumeType, mute: boolean, callback: AsyncCallback<void>): void
@@ -344,20 +632,27 @@ mute(volumeType: AudioVolumeType, mute: boolean, callback: AsyncCallback<void
| mute | boolean | 是 | 静音状态,true为静音,false为非静音。 |
| callback | AsyncCallback<void> | 是 | 回调表示成功还是失败。 |
+**返回值:**
+
+无
+
**示例:**
```
-var audioManager = audio.getAudioManager();
-audioManager.mute(audio.AudioVolumeType.MEDIA, true, (err) => {
- if (err) {
- console.error('Failed to mute the stream. ${err.message}');
- return;
- }
- console.log('Callback invoked to indicate that the stream is muted.');
+audioManager.getVolume(audio.AudioVolumeType.MEDIA, (err, value) => {
+ if (err) {
+ console.error('Failed to obtain the volume. ${err.message}');
+ return;
+ }
+ console.log('Callback invoked to indicate that the volume is obtained.');
})
```
+<<<<<<< HEAD
+## audioManager.mute
+=======
### mute
+>>>>>>> fa9ed42f82b05774857a54cc011927699ad85740
mute(volumeType: AudioVolumeType, mute: boolean): Promise<void>
@@ -382,14 +677,17 @@ mute(volumeType: AudioVolumeType, mute: boolean): Promise<void>
```
-var audioManager = audio.getAudioManager();
audioManager.mute(audio.AudioVolumeType.MEDIA, true).then(() =>
console.log('Promise returned to indicate that the stream is muted.');
)
```
+<<<<<<< HEAD
+## audioManager.isMute
+=======
### isMute
+>>>>>>> fa9ed42f82b05774857a54cc011927699ad85740
isMute(volumeType: AudioVolumeType, callback: AsyncCallback<boolean>): void
@@ -404,10 +702,13 @@ isMute(volumeType: AudioVolumeType, callback: AsyncCallback<boolean>): voi
| volumeType | [AudioVolumeType](#audiovolumetype) | 是 | 音量流类型。 |
| callback | AsyncCallback<boolean> | 是 | 回调返回流静音状态,true为静音,false为非静音。 |
+**返回值:**
+
+无
+
**示例:**
```
-var audioManager = audio.getAudioManager();
audioManager.isMute(audio.AudioVolumeType.MEDIA, (err, value) => {
if (err) {
console.error('Failed to obtain the mute status. ${err.message}');
@@ -418,7 +719,11 @@ audioManager.isMute(audio.AudioVolumeType.MEDIA, (err, value) => {
```
+<<<<<<< HEAD
+## audioManager.isMute
+=======
### isMute
+>>>>>>> fa9ed42f82b05774857a54cc011927699ad85740
isMute(volumeType: AudioVolumeType): Promise<boolean>
@@ -441,13 +746,16 @@ isMute(volumeType: AudioVolumeType): Promise<boolean>
**示例:**
```
-var audioManager = audio.getAudioManager();
audioManager.isMute(audio.AudioVolumeType.MEDIA).then((value) =>
console.log('Promise returned to indicate that the mute status of the stream is obtained.' + value);
)
```
+<<<<<<< HEAD
+## audioManager.isActive
+=======
### isActive
+>>>>>>> fa9ed42f82b05774857a54cc011927699ad85740
isActive(volumeType: AudioVolumeType, callback: AsyncCallback<boolean>): void
@@ -462,10 +770,13 @@ isActive(volumeType: AudioVolumeType, callback: AsyncCallback<boolean>): v
| volumeType | [AudioVolumeType](#audiovolumetype) | 是 | 音量流类型。 |
| callback | AsyncCallback<boolean> | 是 | 回调返回流的活跃状态,true为活跃,false为不活跃。 |
+**返回值:**
+
+无
+
**示例:**
```
-var audioManager = audio.getAudioManager();
audioManager.isActive(audio.AudioVolumeType.MEDIA, (err, value) => {
if (err) {
console.error('Failed to obtain the active status of the stream. ${err.message}');
@@ -475,7 +786,11 @@ audioManager.isActive(audio.AudioVolumeType.MEDIA, (err, value) => {
})
```
+<<<<<<< HEAD
+## audioManager.isActive
+=======
### isActive
+>>>>>>> fa9ed42f82b05774857a54cc011927699ad85740
isActive(volumeType: AudioVolumeType): Promise<boolean>
@@ -498,13 +813,16 @@ isActive(volumeType: AudioVolumeType): Promise<boolean>
**示例:**
```
-var audioManager = audio.getAudioManager();
audioManager.isActive(audio.AudioVolumeType.MEDIA).then((value) =>
console.log('Promise returned to indicate that the active status of the stream is obtained.' + value);
)
```
+<<<<<<< HEAD
+## audioManager.setRingerMode
+=======
### setRingerMode
+>>>>>>> fa9ed42f82b05774857a54cc011927699ad85740
setRingerMode(mode: AudioRingMode, callback: AsyncCallback<void>): void
@@ -516,13 +834,16 @@ setRingerMode(mode: AudioRingMode, callback: AsyncCallback<void>): void
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
-| mode | [AudioRingMode](#audioringmode) | 是 | 音频铃声模式。 |
+| mode | [AudioRingMode](#section14948916131018) | 是 | 音频铃声模式。 |
| callback | AsyncCallback<void> | 是 | 回调返回设置成功或失败。 |
+**返回值:**
+
+无
+
**示例:**
```
-var audioManager = audio.getAudioManager();
audioManager.setRingerMode(audio.AudioRingMode.RINGER_MODE_NORMAL, (err) => {
if (err) {
console.error('Failed to set the ringer mode. ${err.message}');
@@ -532,7 +853,11 @@ audioManager.setRingerMode(audio.AudioRingMode.RINGER_MODE_NORMAL, (err) => {
})
```
+<<<<<<< HEAD
+## audioManager.setRingerMode
+=======
### setRingerMode
+>>>>>>> fa9ed42f82b05774857a54cc011927699ad85740
setRingerMode(mode: AudioRingMode): Promise<void>
@@ -544,7 +869,7 @@ setRingerMode(mode: AudioRingMode): Promise<void>
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
-| mode | [AudioRingMode](#audioringmode) | 是 | 音频铃声模式。 |
+| mode | [AudioRingMode](#audioringmode7+) | 是 | 音频铃声模式。 |
**返回值:**
@@ -555,14 +880,17 @@ setRingerMode(mode: AudioRingMode): Promise<void>
**示例:**
```
-var audioManager = audio.getAudioManager();
audioManager.setRingerMode(audio.AudioRingMode.RINGER_MODE_NORMAL).then(() =>
console.log('Promise returned to indicate a successful setting of the ringer mode.');
)
```
+<<<<<<< HEAD
+## audioManager.getRingerMode
+=======
### getRingerMode
+>>>>>>> fa9ed42f82b05774857a54cc011927699ad85740
getRingerMode(callback: AsyncCallback<AudioRingMode>): void
@@ -574,12 +902,15 @@ getRingerMode(callback: AsyncCallback<AudioRingMode>): void
| 参数名 | 类型 | 必填 | 说明 |
| -------- | -------- | -------- | -------- |
-| callback | AsyncCallback<[AudioRingMode](#audioringmode)> | 是 | 回调返回系统的铃声模式。 |
+| callback | AsyncCallback<[AudioRingMode](#audioringmode7+)> | 是 | 回调返回系统的铃声模式。 |
+
+**返回值:**
+
+无
**示例:**
```
-var audioManager = audio.getAudioManager();
audioManager.getRingerMode((err, value) => {
if (err) {
console.error('Failed to obtain the ringer mode. ${err.message}');
@@ -590,7 +921,11 @@ audioManager.getRingerMode((err, value) => {
```
+<<<<<<< HEAD
+## audioManager.getRingerMode
+=======
### getRingerMode
+>>>>>>> fa9ed42f82b05774857a54cc011927699ad85740
getRingerMode(): Promise<AudioRingMode>
@@ -602,18 +937,21 @@ getRingerMode(): Promise<AudioRingMode>
| 类型 | 说明 |
| -------- | -------- |
-| Promise<[AudioRingMode](#audioringmode)> | Promise回调返回系统的铃声模式。 |
+| Promise<[AudioRingMode](#audioringmode7+)> | Promise回调返回系统的铃声模式。 |
**示例:**
```
-var audioManager = audio.getAudioManager();
audioManager.getRingerMode().then((value) =>
console.log('Promise returned to indicate that the ringer mode is obtained.' + value);
)
```
+<<<<<<< HEAD
+## audioManager.setAudioParameter
+=======
### setAudioParameter
+>>>>>>> fa9ed42f82b05774857a54cc011927699ad85740
setAudioParameter(key: string, value: string, callback: AsyncCallback<void>): void
@@ -629,10 +967,13 @@ setAudioParameter(key: string, value: string, callback: AsyncCallback<void>
| value | string | 是 | 被设置的音频参数的值。 |
| callback | AsyncCallback<void> | 是 | 回调返回设置成功或失败。 |
+**返回值:**
+
+无
+
**示例:**
```
-var audioManager = audio.getAudioManager();
audioManager.setAudioParameter('PBits per sample', '8 bit', (err) => {
if (err) {
console.error('Failed to set the audio parameter. ${err.message}');
@@ -642,7 +983,11 @@ audioManager.setAudioParameter('PBits per sample', '8 bit', (err) => {
})
```
+<<<<<<< HEAD
+## audioManager.setAudioParameter
+=======
### setAudioParameter
+>>>>>>> fa9ed42f82b05774857a54cc011927699ad85740
setAudioParameter(key: string, value: string): Promise<void>
@@ -666,13 +1011,16 @@ setAudioParameter(key: string, value: string): Promise<void>
**示例:**
```
-var audioManager = audio.getAudioManager();
audioManager.setAudioParameter('PBits per sample', '8 bit').then(() =>
console.log('Promise returned to indicate a successful setting of the audio parameter.');
)
```
+<<<<<<< HEAD
+## audioManager.getAudioParameter
+=======
### getAudioParameter
+>>>>>>> fa9ed42f82b05774857a54cc011927699ad85740
getAudioParameter(key: string, callback: AsyncCallback<string>): void
@@ -687,10 +1035,13 @@ getAudioParameter(key: string, callback: AsyncCallback<string>): void
| key | string | 是 | 待获取的音频参数的键。 |
| callback | AsyncCallback<string> | 是 | 回调返回获取的音频参数的值。 |
+**返回值:**
+
+无
+
**示例:**
```
-var audioManager = audio.getAudioManager();
audioManager.getAudioParameter('PBits per sample', (err, value) => {
if (err) {
console.error('Failed to obtain the value of the audio parameter. ${err.message}');
@@ -700,7 +1051,11 @@ audioManager.getAudioParameter('PBits per sample', (err, value) => {
})
```
+<<<<<<< HEAD
+## audioManager.getAudioParameter
+=======
### getAudioParameter
+>>>>>>> fa9ed42f82b05774857a54cc011927699ad85740
getAudioParameter(key: string): Promise<string>
@@ -723,13 +1078,12 @@ getAudioParameter(key: string): Promise<string>
**示例:**
```
-var audioManager = audio.getAudioManager();
audioManager.getAudioParameter('PBits per sample').then((value) =>
console.log('Promise returned to indicate that the value of the audio parameter is obtained.' + value);
)
```
-### getDevices
+## audioManager.getDevices
getDevices(deviceFlag: DeviceFlag, callback: AsyncCallback<AudioDeviceDescriptors>): void
@@ -744,9 +1098,13 @@ getDevices(deviceFlag: DeviceFlag, callback: AsyncCallback<AudioDeviceDescrip
| deviceFlag | [DeviceFlag](#deviceflag) | 是 | 设备类型的flag。 |
| callback | AsyncCallback<[AudioDeviceDescriptors](#audiodevicedescriptors)> | 是 | 回调,返回设备列表。 |
+**返回值:**
+
+无
+
**示例:**
+
```
-var audioManager = audio.getAudioManager();
audioManager.getDevices(audio.DeviceFlag.OUTPUT_DEVICES_FLAG, (err, value)=>{
if (err) {
console.error('Failed to obtain the device list. ${err.message}');
@@ -756,7 +1114,7 @@ audioManager.getDevices(audio.DeviceFlag.OUTPUT_DEVICES_FLAG, (err, value)=>{
})
```
-### getDevices
+## audioManager.getDevices
(deviceFlag: DeviceFlag): Promise<AudioDeviceDescriptors>
@@ -779,13 +1137,16 @@ audioManager.getDevices(audio.DeviceFlag.OUTPUT_DEVICES_FLAG, (err, value)=>{
**示例:**
```
-var audioManager = audio.getAudioManager();
audioManager.getDevices(audio.DeviceFlag.OUTPUT_DEVICES_FLAG).then((data)=>
console.log('Promise returned to indicate that the device list is obtained.');
)
```
+<<<<<<< HEAD
+## audioManager.setDeviceActive
+=======
### setDeviceActive
+>>>>>>> fa9ed42f82b05774857a54cc011927699ad85740
setDeviceActive(deviceType: DeviceType, active: boolean, callback: AsyncCallback<void>): void
@@ -801,10 +1162,13 @@ setDeviceActive(deviceType: DeviceType, active: boolean, callback: AsyncCallback
| active | boolean | 是 | 设备激活状态。 |
| callback | AsyncCallback<void> | 是 | 回调返回设置成功或失败。 |
+**返回值:**
+
+无
+
**示例:**
```
-var audioManager = audio.getAudioManager();
audioManager.setDeviceActive(audio.DeviceType.SPEAKER, true, (err)=> {
if (err) {
console.error('Failed to set the active status of the device. ${err.message}');
@@ -814,7 +1178,11 @@ audioManager.setDeviceActive(audio.DeviceType.SPEAKER, true, (err)=> {
})
```
+<<<<<<< HEAD
+## audioManager.setDeviceActive
+=======
### setDeviceActive
+>>>>>>> fa9ed42f82b05774857a54cc011927699ad85740
setDeviceActive(deviceType: DeviceType, active: boolean): Promise<void>
@@ -839,13 +1207,16 @@ setDeviceActive(deviceType: DeviceType, active: boolean): Promise<void>
```
-var audioManager = audio.getAudioManager();
audioManager.setDeviceActive(audio.DeviceType.SPEAKER, true).then(()=>
console.log('Promise returned to indicate that the device is set to the active status.');
)
```
+<<<<<<< HEAD
+## audioManager.isDeviceActive
+=======
### isDeviceActive
+>>>>>>> fa9ed42f82b05774857a54cc011927699ad85740
isDeviceActive(deviceType: DeviceType, callback: AsyncCallback<boolean>): void
@@ -860,10 +1231,13 @@ isDeviceActive(deviceType: DeviceType, callback: AsyncCallback<boolean>):
| deviceType | [DeviceType](#devicetype) | 是 | 音频设备类型。 |
| callback | AsyncCallback<boolean> | 是 | 回调返回设备的激活状态。 |
+**返回值**
+
+无
+
**示例:**
```
-var audioManager = audio.getAudioManager();
audioManager.isDeviceActive(audio.DeviceType.SPEAKER, (err, value) => {
if (err) {
console.error('Failed to obtain the active status of the device. ${err.message}');
@@ -874,7 +1248,11 @@ audioManager.isDeviceActive(audio.DeviceType.SPEAKER, (err, value) => {
```
+<<<<<<< HEAD
+## audioManager.isDeviceActive
+=======
### isDeviceActive
+>>>>>>> fa9ed42f82b05774857a54cc011927699ad85740
isDeviceActive(deviceType: DeviceType): Promise<boolean>
@@ -897,13 +1275,16 @@ isDeviceActive(deviceType: DeviceType): Promise<boolean>
**示例:**
```
-var audioManager = audio.getAudioManager();
audioManager.isDeviceActive(audio.DeviceType.SPEAKER).then((value) =>
console.log('Promise returned to indicate that the active status of the device is obtained.' + value);
)
```
+<<<<<<< HEAD
+## audioManager.setMicrophoneMute
+=======
### setMicrophoneMute
+>>>>>>> fa9ed42f82b05774857a54cc011927699ad85740
setMicrophoneMute(mute: boolean, callback: AsyncCallback<void>): void
@@ -918,10 +1299,13 @@ setMicrophoneMute(mute: boolean, callback: AsyncCallback<void>): void
| mute | boolean | 是 | 待设置的静音状态,true为静音,false为非静音。 |
| callback | AsyncCallback<void> | 是 | 回调返回设置成功或失败。 |
+**返回值**
+
+无
+
**示例:**
```
-var audioManager = audio.getAudioManager();
audioManager.setMicrophoneMute(true, (err) => {
if (err) {
console.error('Failed to mute the microphone. ${err.message}');
@@ -931,7 +1315,11 @@ audioManager.setMicrophoneMute(true, (err) => {
})
```
+<<<<<<< HEAD
+## audioManager.setMicrophoneMute
+=======
### setMicrophoneMute
+>>>>>>> fa9ed42f82b05774857a54cc011927699ad85740
setMicrophoneMute(mute: boolean): Promise<void>
@@ -960,7 +1348,11 @@ audioManager.setMicrophoneMute(true).then(() =>
)
```
+<<<<<<< HEAD
+## audioManager.isMicrophoneMute
+=======
### isMicrophoneMute
+>>>>>>> fa9ed42f82b05774857a54cc011927699ad85740
isMicrophoneMute(callback: AsyncCallback<boolean>): void
@@ -974,10 +1366,13 @@ isMicrophoneMute(callback: AsyncCallback<boolean>): void
| -------- | -------- | -------- | -------- |
| callback | AsyncCallback<boolean> | 是 | 回调返回系统麦克风静音状态,true为静音,false为非静音。 |
+**返回值**
+
+无
+
**示例:**
```
-var audioManager = audio.getAudioManager();
audioManager.isMicrophoneMute((err, value) => {
if (err) {
console.error('Failed to obtain the mute status of the microphone. ${err.message}');
@@ -987,7 +1382,11 @@ audioManager.isMicrophoneMute((err, value) => {
})
```
+<<<<<<< HEAD
+## audioManager.isMicrophoneMute
+=======
### isMicrophoneMute
+>>>>>>> fa9ed42f82b05774857a54cc011927699ad85740
isMicrophoneMute(): Promise<boolean>
@@ -1005,25 +1404,764 @@ isMicrophoneMute(): Promise<boolean>
```
-var audioManager = audio.getAudioManager();
audioManager.isMicrophoneMute().then((value) =>
console.log('Promise returned to indicate that the mute status of the microphone is obtained.', + value);
)
```
+## audioManager.on
+
+on(type: 'volumeChange', callback: Callback): void8+
+
+ 监听系统音量更改事件, 使用Callback来获取音量更改事件。
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| -------- | ------------------------------------ | ---- | ------------------------ |
+| type | string | 是 | 监听的音量改变事件类型。 |
+| callback | Callback<[VolumeEvent](#volumevent)> | 是 | 音量改变事件回调方法。 |
+
+**返回值:**
+
+无
+
+**示例:**
+
+```
+audioManager.on('volumeChange', (volumeEvent) => {
+ console.log('VolumeType of stream: ' + volumeEvent.volumeType);
+ console.log('Volume level: ' + volumeEvent.volume);
+ console.log('Whether to updateUI: ' + volumeEvent.updateUi);
+})
+```
+
+
+
+## audioManager.on
+
+on(type: 'ringerModeChange', callback: Callback): void8+
+
+监听铃声模式更改事件。使用callback来获得铃声模式更改。
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| -------- | ------------------------------------------- | ---- | ------------------------------ |
+| type | string | 是 | 要监听的事件的类型。 |
+| callback | Callback<[AudioRingMode](#audioringmode7+)> | 是 | 用于获取更新的铃声模式的回调。 |
+
+**返回值:**
+
+无
+
+**示例:**
+
+```
+audioManager.on('ringerModeChange', (ringerMode) => {
+ console.log('Updated ringermode: ' + ringerMode);
+})
+```
-## AudioDeviceDescriptor
+# AudioDeviceDescriptor
描述音频设备。
+<<<<<<< HEAD
+=======
| 名称 | 参数型 | 可读 | 可写 | 说明 |
| -------- | -------- | -------- | -------- | -------- |
| deviceRole | [DeviceRole](#devicerole) | 是 | 否 | 设备角色。
**系统能力:** SystemCapability.Multimedia.Audio.Device |
| deviceType | [DeviceType](#devicetype) | 是 | 否 | 设备类型。
**系统能力:** SystemCapability.Multimedia.Audio.Device |
+>>>>>>> fa9ed42f82b05774857a54cc011927699ad85740
## AudioDeviceDescriptors
| 名称 | 描述 |
| -------- | -------- |
+<<<<<<< HEAD
+| 设备属性数组 | AudioDeviceDescriptor的数组,只读。 |
+
+## audioDeviceDescriptor.deviceRole
+
+定义的设备角色( DeviceRole :只读)。
+
+| 名称 | 参数型 | 可读 | 可写 | 说明 |
+| :--------- | :------------------------ | :--- | :--- | ---------- |
+| deviceRole | [DeviceRole](#devicerole) | 是 | 否 | 设备角色。 |
+
+## audioDeviceDescriptor.deviceType
+
+定义的设备类型( DeviceType:只读)。
+
+| 名称 | 参数型 | 可读 | 可写 | 说明 |
+| :--------- | :------------------------ | :--- | :--- | ---------- |
+| deviceType | [DeviceType](#devicetype) | 是 | 否 | 设备类型。 |
+
+```
+function deviceProp(audioDeviceDescriptor, index, array) {
+ deviceRoleValue = audioDeviceDescriptor.deviceRole;
+ deviceTypeValue = audioDeviceDescriptor.deviceType;
+}
+
+deviceRoleValue = null;
+deviceTypeValue = null;
+const promise = audioManager.getDevices(audio.DeviceFlag.OUTPUT_DEVICES_FLAG);
+promise.then(async function (audioDeviceDescriptors) {
+ console.info('getDevices OUTPUT_DEVICES_FLAG');
+ audioDeviceDescriptors.forEach(deviceProp);
+ if (deviceTypeValue != null && deviceRoleValue != null){
+ console.info('OUTPUT_DEVICES_FLAG : Pass');
+ expect(true).assertTrue();
+ }
+ else{
+ console.error('OUTPUT_DEVICES_FLAG : fail');
+ expect(false).assertTrue();
+ }
+ });
+ await promise;
+ done();
+})
+```
+
+# AudioRenderer
+
+提供音频播放的API接口。
+
+## audioRenderer.state
+
+readonly state: AudioState 8+
+
+定义当前播放器的状态。
+
+**参数:**
+
+| 名称 | 参数型 | 可读 | 可写 | 说明 |
+| ----- | ------------------------- | ---- | ---- | ------------------ |
+| state | [AudioState](#audiostate) | 是 | 否 | 音频播放器的状态。 |
+
+**示例:**
+
+```
+var state = audioRenderer.state;
+```
+
+## audioRenderer.getRendererInfo
+
+getRendererInfo(callback: AsyncCallback): void8+
+
+获取当前被创建的音频播放器的信息,使用callback方式返回异步结果。
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| :------- | :-------------------------------------------------------- | :--- | :------------------------- |
+| callback | AsyncCallback<[AudioRendererInfo](#AudioRendererInfo8+)\> | 是 | 回调返回音频播放器的信息。 |
+
+**返回值:**
+
+无
+
+**示例:**
+
+```
+audioRenderer.getRendererInfo((err, rendererInfo)=>{
+ console.log('Renderer GetRendererInfo:');
+ console.log('Renderer content:' + rendererInfo.content);
+ console.log('Renderer usage:' + rendererInfo.usage);
+ console.log('Renderer flags:' + rendererInfo.rendererFlags);
+})
+```
+
+
+## audioRenderer.getRendererInfo
+
+getParams(): Promise8+
+
+获取当前被创建的音频播放器的信息,使用promise方式返回异步结果。
+
+**参数:**
+
+无
+
+**返回值:**
+
+| 类型 | 说明 |
+| -------------------------------------------------- | ------------------------------- |
+| Promise<[AudioRendererInfo](#AudioRendererInfo8+)> | Promise用于返回音频播放器信息。 |
+
+**示例:**
+
+```
+let streamInfo = await audioRenderer.getStreamInfo();
+console.log('Renderer GetStreamInfo:');
+console.log('Renderer sampling rate:' + streamInfo.samplingRate);
+console.log('Renderer channel:' + streamInfo.AudioChannel);
+console.log('Renderer format:' + streamInfo.AudioSampleFormat);
+console.log('Renderer encoding type:' + streamInfo.AudioEncodingType);
+```
+
+## audioRenderer.start
+
+start(callback: AsyncCallback): void8+
+
+启动音频播放器。使用callback方式返回异步结果。
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| -------- | ------------------- | ---- | ---------------- |
+| callback | AsyncCallback | 是 | 返回回调的结果。 |
+
+**返回值:**
+
+无
+
+**示例:**
+
+```
+audioRenderer.start((err)=>{
+ if (err) {
+ console.error('Renderer start failed.');
+ } else {
+ console.info('Renderer start success.');
+ }
+})
+```
+
+## audioRenderer.start
+
+start(): Promise8+
+
+启动音频播放器。使用promise方式返回异步结果。
+
+**参数:**
+
+无
+
+**返回值:**
+
+| 类型 | 说明 |
+| ------------- | ------------------------- |
+| Promise | promise方式返回异步结果。 |
+
+**示例:**
+
+```
+await audioRenderer.start();
+```
+
+## audioRenderer.pause
+
+pause(callback: AsyncCallback): void8+
+
+暂停音频播放器。使用callback方式返回异步结果。
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| -------- | ------------------- | ---- | ---------------- |
+| callback | AsyncCallback | 是 | 返回回调的结果。 |
+
+**返回值:**
+
+无
+
+**示例:**
+
+```
+audioRenderer.pause((err)=>{
+ if (err) {
+ console.error('Renderer pause failed');
+ } else {
+ console.log('Renderer paused.');
+ }
+})
+```
+
+## audioRenderer.pause
+
+pause(): Promise8+
+
+暂停音频播放器。使用promise方式返回异步结果。
+
+**参数:**
+
+无
+
+**返回值:**
+
+| 类型 | 说明 |
+| ------------- | ------------------------- |
+| Promise | promise方式返回异步结果。 |
+
+**示例:**
+
+```
+await audioRenderer.pause();
+```
+
+## audioRenderer.drain
+
+drain(callback: AsyncCallback): void8+
+
+播放缓冲区是否已被耗尽。使用callback方式返回异步结果。
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| -------- | ------------------- | ---- | ---------------- |
+| callback | AsyncCallback | 是 | 返回回调的结果。 |
+
+**返回值:**
+
+无
+
+**示例:**
+
+```
+audioRenderer.drain((err)=>{
+ if (err) {
+ console.error('Renderer drain failed');
+ } else {
+ console.log('Renderer drained.');
+ }
+})
+```
+
+
+
+## audioRenderer.drain
+
+drain(): Promise8+
+
+播放缓冲区是否已被耗尽。使用promise方式返回异步结果。
+
+**参数:**
+
+无
+
+**返回值:**
+
+| 类型 | 说明 |
+| ------------- | ------------------------- |
+| Promise | promise方式返回异步结果。 |
+
+**示例:**
+
+```
+await audioRenderer.drain();
+```
+
+## audioRenderer.stop
+
+stop(callback: AsyncCallback): void8+
+
+停止播放。使用callback方式返回异步结果。
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| -------- | ------------------- | ---- | ---------------- |
+| callback | AsyncCallback | 是 | 返回回调的结果。 |
+
+**返回值:**
+
+无
+
+**示例:**
+
+```
+audioRenderer.stop((err)=>{
+ if (err) {
+ console.error('Renderer stop failed');
+ } else {
+ console.log('Renderer stopped.');
+ }
+})
+```
+
+## audioRenderer.stop
+
+stop(): Promise8+
+
+停止播放。使用promise方式返回异步结果。
+
+**参数:**
+
+无
+
+**返回值:**
+
+| 类型 | 说明 |
+| ------------- | ------------------------- |
+| Promise | promise方式返回异步结果。 |
+
+**示例:**
+
+```
+await audioRenderer.stop();
+```
+
+## audioRenderer.release
+
+release(callback: AsyncCallback): void8+
+
+释放音频播放器。使用callback方式返回异步结果。
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| -------- | ------------------- | ---- | ---------------- |
+| callback | AsyncCallback | 是 | 返回回调的结果。 |
+
+**返回值:**
+
+无
+
+**示例:**
+
+```
+audioRenderer.release((err)=>{
+ if (err) {
+ console.error('Renderer release failed');
+ } else {
+ console.log('Renderer released.');
+ }
+})
+```
+
+## audioRenderer.release
+
+release(): Promise8+
+
+释放渲染器。使用promise方式返回异步结果。
+
+**参数:**
+
+无
+
+**返回值:**
+
+| 类型 | 说明 |
+| ------------- | ------------------------- |
+| Promise | promise方式返回异步结果。 |
+
+**示例:**
+
+```
+await audioRenderer.release();
+```
+
+## audioRenderer.write
+
+write(buffer: ArrayBuffer, callback: AsyncCallback): void8+
+
+写入缓冲区。使用callback方式返回异步结果。
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| -------- | ---------------------- | ---- | --------------------------------------------------- |
+| buffer | ArrayBuffer | 是 | 要写入缓冲区的数据。 |
+| callback | AsyncCallback | 是 | 回调如果成功,返回写入的字节数,否则返回errorcode。 |
+
+**返回值:**
+
+无
+
+**示例:**
+
+```
+let ss = fileio.createStreamSync(filePath, 'r');
+let buf = new ArrayBuffer(bufferSize);
+ss.readSync(buf);
+audioRenderer.write(buf, (err, writtenbytes)=>{
+ if (writtenbytes < 0) {
+ console.error('write failed.');
+ } else {
+ console.log('Actual written bytes: ' + writtenbytes);
+ }
+})
+```
+
+## audioRenderer.write
+
+write(buffer: ArrayBuffer): Promise8+
+
+写入缓冲区。使用promise方式返回异步结果。
+
+**参数:**
+
+无
+
+**返回值:**
+
+| 类型 | 说明 |
+| --------------- | ---------------------------------------------------------- |
+| Promise | promise回调如果成功,返回写入的字节数,否则返回errorcode。 |
+
+**Example**
+
+```
+let ss = fileio.createStreamSync(filePath, 'r');
+let buf = new ArrayBuffer(bufferSize);
+ss.readSync(buf);
+let writtenbytes = await audioRenderer.write(buf);
+if (writtenbytes < 0) {
+ console.error('write failed.');
+} else {
+ console.log('Actual written bytes: ' + writtenbytes);
+}
+```
+
+## audioRenderer.getAudioTime
+
+getAudioTime(callback: AsyncCallback): void8+
+
+获取时间戳。使用callback方式返回异步结果。
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| -------- | --------------------- | ---- | ---------------- |
+| callback | AsyncCallback | 是 | 回调返回时间戳。 |
+
+**返回值:**
+
+无
+
+**示例:**
+
+```
+audioRenderer.getAudioTime((err, timestamp)=>{
+ console.log('Current timestamp: ' + timestamp);
+})
+```
+
+## audioRenderer.getAudioTime
+
+getAudioTime(): Promise8+
+
+获取时间戳。使用promise方式返回异步结果。
+
+**参数:**
+
+无
+
+**返回值:**
+
+| 类型 | 描述 |
+| --------------- | ----------------------- |
+| Promise | Promise回调返回时间戳。 |
+
+**示例:**
+
+```
+let timestamp = await audioRenderer.getAudioTime();
+console.log('Current timestamp: ' + timestamp);
+```
+
+## audioRenderer.getBufferSize
+
+getBufferSize(callback: AsyncCallback): void8+
+
+获取音频播放器的最小缓冲区大小。使用callback方式返回异步结果。
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| -------- | --------------------- | ---- | -------------------- |
+| callback | AsyncCallback | 是 | 回调返回缓冲区大小。 |
+
+**返回值:**
+
+无
+
+**示例:**
+
+```
+audioRenderer.getBufferSize((err, bufferSize)=>{
+ if (err) {
+ console.error('getBufferSize error');
+ }
+})
+let buf = new ArrayBuffer(bufferSize);
+ss.readSync(buf);
+```
+
+## audioRenderer.getBufferSize
+
+getBufferSize(): Promise8+
+
+获取音频播放器的最小缓冲区大小。使用promise方式返回异步结果。
+
+**参数:**
+
+无
+
+**返回值:**
+
+| 类型 | 说明 |
+| --------------- | --------------------------- |
+| Promise | promise回调返回缓冲区大小。 |
+
+**示例:**
+
+```
+var bufferSize = await audioRenderer.getBufferSize();
+let buf = new ArrayBuffer(bufferSize);
+ss.readSync(buf);
+```
+
+## audioRenderer.setRenderRate
+
+setRenderRate(rate: AudioRendererRate, callback: AsyncCallback): voidvoid8+
+
+设置音频播放速率。使用callback方式返回异步结果。
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| -------- | --------------------------------------- | ---- | ------------------------ |
+| rate | [AudioRendererRate](#audiorendererrate) | 是 | 播放的速率。 |
+| callback | AsyncCallback | 是 | 用于返回执行结果的回调。 |
+
+**返回值:**
+
+无
+
+**示例:**
+
+```
+audioRenderer.setRenderRate(audio.AudioRendererRate.RENDER_RATE_NORMAL, (err)=> {
+ if (err) {
+ console.error('Failed to set params');
+ } else {
+ console.log('Callback invoked to indicate a successful render rate setting.');
+ }
+})
+```
+
+## audioRenderer.setRenderRate
+
+setRenderRate(rate: AudioRendererRate): Promise8+
+
+设置音频播放速率。使用promise方式返回异步结果。
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| ------ | ----------------------------------------- | ---- | ------------ |
+| rate | [AudioRendererRate](#AudioRendererRate8+) | 是 | 播放的速率。 |
+
+**返回值:**
+
+| 类型 | 说明 |
+| ------------- | ------------------------- |
+| Promise | Promise用于返回执行结果。 |
+
+**示例:**
+
+```
+await audioRenderer.setRenderRate(audio.AudioRendererRate.RENDER_RATE_NORMAL);
+```
+
+## audioRenderer.getRenderRate
+
+getRenderRate(callback: AsyncCallback): void8+
+
+获取当前播放速率。使用callback方式返回异步结果。
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| -------- | -------------------------------------------------------- | ---- | ------------------ |
+| callback | AsyncCallback<[AudioRendererRate](#AudioRendererRate8+)> | 是 | 回调返回播放速率。 |
+
+**返回值:**
+
+无
+
+**示例:**
+
+```
+audioRenderer.getRenderRate((err, renderrate)=>{
+ console.log('getRenderRate: ' + renderrate);
+})
+```
+
+## audioRenderer.getRenderRate
+
+getRenderRate(): Promise8+
+
+获取当前播放速率。使用promise方式返回异步结果。
+
+**参数:**
+
+无
+
+**返回值:**
+
+| 类型 | 说明 |
+| ------------------------------------------------ | ------------------------- |
+| Promise<[AudioRendererRate](#audiorendererrate)> | Promise回调返回播放速率。 |
+
+**示例:**
+
+```
+let renderRate = await audioRenderer.getRenderRate();
+console.log('getRenderRate: ' + renderrate);
+```
+
+## audioRenderer.on
+
+on(type: 'interrupt', callback: Callback): void8+
+
+监听音频中断事件。使用callback获取中断事件。中断事件被触发,音频播放被中断。
+
+**参数:**
+
+| 参数名 | 类型 | 必填 | 说明 |
+| -------- | ------------------------------------------- | ---- | ------------------------ |
+| type | string | 是 | 被监听的播放事件的类型。 |
+| callback | Callback<[InterruptEvent](#interruptevent)> | 是 | 被监听的中断事件的回调。 |
+
+**返回值:**
+
+无
+
+**示例:**
+
+```
+audioRenderer.on('interrupt', (interruptEvent) => {
+ if (interruptEvent.forceType == audio.InterruptForceType.INTERRUPT_FORCE) {
+ switch (interruptEvent.hintType) {
+ case audio.InterruptHint.INTERRUPT_HINT_PAUSE:
+ console.log('Force paused. Stop writing');
+ isPlay = false;
+ break;
+ case audio.InterruptHint.INTERRUPT_HINT_STOP:
+ console.log('Force stopped. Stop writing');
+ isPlay = false;
+ break;
+ }
+ } else if (interruptEvent.forceType == audio.InterruptForceType.INTERRUPT_SHARE) {
+ switch (interruptEvent.hintType) {
+ case audio.InterruptHint.INTERRUPT_HINT_RESUME:
+ console.log('Resume force paused renderer or ignore');
+ startRenderer();
+ break;
+ case audio.InterruptHint.INTERRUPT_HINT_PAUSE:
+ console.log('Choose to pause or ignore');
+ pauseRenderer();
+ break;
+ }
+ }
+})
+```
+
+=======
| 设备属性数组 | AudioDeviceDescriptor的数组,只读。
**系统能力:** SystemCapability.Multimedia.Audio.Device |
+>>>>>>> fa9ed42f82b05774857a54cc011927699ad85740