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 0fddf9e9588d7165b64047f31cc65001127b671b..9c1611a5cb2fadd9e2eba5fe40d8815fbeb64796 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-audio.md +++ b/zh-cn/application-dev/reference/apis/js-apis-audio.md @@ -36,6 +36,34 @@ import audio from '@ohos.multimedia.audio'; const localNetworkId = audio.LOCAL_NETWORK_ID; ``` +**系统能力:** SystemCapability.Multimedia.Audio.Volume + +| 名称 | 类型 | 可读 | 可写 | 说明 | +| ------------------------------------ | -------| ------ | ---- | ------------------ | +| DEFAULT_VOLUME_GROUP_ID9+ | number | 是 | 否 | 默认音量组id。 | + +**示例:** + +```js +import audio from '@ohos.multimedia.audio'; + +const defaultVolumeGroupId = audio.DEFAULT_VOLUME_GROUP_ID; +``` + +**系统能力:** SystemCapability.Multimedia.Audio.Interrupt + +| 名称 | 类型 | 可读 | 可写 | 说明 | +| --------------------------------------- | -------| ------ | ---- | ------------------ | +| DEFAULT_INTERRUPT_GROUP_ID9+ | number | 是 | 否 | 默认音频中断id。 | + +**示例:** + +```js +import audio from '@ohos.multimedia.audio'; + +const defaultInterruptGroupId = audio.DEFAULT_INTERRUPT_GROUP_ID; +``` + ## audio.getAudioManager getAudioManager(): AudioManager @@ -263,6 +291,8 @@ createTonePlayer(options: AudioRendererInfo, callback: AsyncCallback<TonePlay **系统能力:** SystemCapability.Multimedia.Audio.Tone +**系统接口:** 该接口为系统接口 + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -281,6 +311,7 @@ let audioRendererInfo = { "rendererFlags": 0 } let tonePlayer; + audio.createTonePlayer(audioRendererInfo, (err, data) => { console.info(`callback call createTonePlayer: audioRendererInfo: ${audioRendererInfo}`); if (err) { @@ -300,6 +331,8 @@ createTonePlayer(options: AudioRendererInfo): Promise<TonePlayer> **系统能力:** SystemCapability.Multimedia.Audio.Tone +**系统接口:** 该接口为系统接口 + **参数:** | 参数名 | 类型 | 必填 | 说明 | @@ -322,7 +355,7 @@ async function createTonePlayer(){ "streamUsage": audio.StreamUsage.STREAM_USAGE_MEDIA, "rendererFlags": 0 } - let tonePlayer = await audio.createTonePlayer(audioRendererInfo); + let tonePlayer = await audio.createTonePlayer(this.audioRendererInfo); } ``` @@ -340,16 +373,29 @@ async function createTonePlayer(){ | VOICE_ASSISTANT8+ | 9 | 语音助手。 | | ALL9+ | 100 | 所有公共音频流。
此接口为系统接口,三方应用不支持调用。| +## InterruptRequestResultType9+ + +枚举,音频中断请求结果类型。 + +**系统能力:** SystemCapability.Multimedia.Audio.Interrupt + +**系统接口:** 该接口为系统接口 + +| 名称 | 默认值 | 描述 | +| ---------------------------- | ------ | ---------- | +| INTERRUPT_REQUEST_GRANT | 0 | 请求音频中断成功。 | +| INTERRUPT_REQUEST_REJECT | 1 | 请求音频中断失败,可能具有较高优先级类型。 | + ## InterruptMode9+ 枚举,焦点模型。 -**系统能力:** SystemCapability.Multimedia.Audio.Core +**系统能力:** SystemCapability.Multimedia.Audio.Interrupt | 名称 | 默认值 | 描述 | | ---------------------------- | ------ | ---------- | -| SHARE_MODE | 0 | 共享焦点模式。 | -| INDEPENDENT_MODE| 1 | 独立焦点模式。 | +| SHARE_MODE | 0 | 共享焦点模式。 | +| INDEPENDENT_MODE | 1 | 独立焦点模式。 | ## DeviceFlag @@ -367,7 +413,6 @@ async function createTonePlayer(){ | DISTRIBUTED_INPUT_DEVICES_FLAG9+ | 8 | 分布式输入设备。
此接口为系统接口,三方应用不支持调用。 | | ALL_DISTRIBUTED_DEVICES_FLAG9+ | 12 | 分布式输入和输出设备。
此接口为系统接口,三方应用不支持调用。 | - ## DeviceRole 枚举,设备角色。 @@ -379,7 +424,6 @@ async function createTonePlayer(){ | INPUT_DEVICE | 1 | 输入设备角色。 | | OUTPUT_DEVICE | 2 | 输出设备角色。 | - ## DeviceType 枚举,设备类型。 @@ -399,10 +443,13 @@ async function createTonePlayer(){ | USB_HEADSET | 22 | USB耳机,带麦克风。 | | DEFAULT9+ | 1000 | 默认设备类型。 | -## ActiveDeviceType +## ActiveDeviceType(deprecated) 枚举,活跃设备类型。 +> **说明:** +> 从 API Version 9 开始废弃,建议使用[CommunicationDeviceType](#communicationdevicetype9)替代。 + **系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Device | 名称 | 默认值 | 描述 | @@ -410,6 +457,16 @@ async function createTonePlayer(){ | SPEAKER | 2 | 扬声器。 | | BLUETOOTH_SCO | 7 | 蓝牙设备SCO(Synchronous Connection Oriented)连接。 | +## CommunicationDeviceType9 + +枚举,用于通信的可用设备类型。 + +**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Communication + +| 名称 | 默认值 | 描述 | +| ------------- | ------ | -------------| +| SPEAKER | 2 | 扬声器。 | + ## AudioRingMode 枚举,铃声模式。 @@ -437,6 +494,22 @@ async function createTonePlayer(){ | SAMPLE_FORMAT_S32LE | 3 | 带符号的32位整数,小尾数。
由于系统限制,该采样格式仅部分设备支持,请根据实际情况使用。| | SAMPLE_FORMAT_F32LE9+ | 4 | 带符号的32位整数,小尾数。
由于系统限制,该采样格式仅部分设备支持,请根据实际情况使用。| +## AudioErrors9+ + +枚举,音频错误码。 + +**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Core + +| 名称 | 默认值 | 描述 | +| ---------------------| --------| --------------- | +| ERROR_INVALID_PARAM | 6800101 | 无效入参。 | +| ERROR_NO_MEMORY | 6800102 | 分配内存失败。 | +| ERROR_ILLEGAL_STATE | 6800103 | 操作不支持。 | +| ERROR_UNSUPPORTED | 6800104 | 参数选项不支持。 | +| ERROR_TIMEOUT | 6800105 | 处理超时。 | +| ERROR_STREAM_LIMIT | 6800201 | 音频数量达到限制。| +| ERROR_SYSTEM | 6800301 | 系统处理异常。 | + ## AudioChannel8+ 枚举, 音频声道。 @@ -508,18 +581,17 @@ async function createTonePlayer(){ | STREAM_USAGE_VOICE_ASSISTANT9+ | 3 | 语音播报。 | | STREAM_USAGE_NOTIFICATION_RINGTONE | 6 | 通知铃声。 | -## FocusType9+ +## InterruptRequestType9+ -表示焦点类型的枚举。 +枚举,音频中断请求类型。 **系统接口:** 该接口为系统接口 -**系统能力:** SystemCapability.Multimedia.Audio.Core - -| 名称 | 默认值 | 描述 | -| ---------------------------------- | ------ | ------------------------------- | -| FOCUS_TYPE_RECORDING | 0 | 在录制场景使用,可打断其他音频。 | +**系统能力:** SystemCapability.Multimedia.Audio.Interrupt +| 名称 | 默认值 | 描述 | +| ---------------------------------- | ------ | ------------------------- | +| INTERRUPT_REQUEST_TYPE_DEFAULT | 0 | 默认类型,可中断音频请求。 | ## AudioState8+ @@ -586,10 +658,13 @@ async function createTonePlayer(){ | INTERRUPT_HINT_DUCK | 4 | 提示音频躲避。(躲避:音量减弱,而不会停止) | | INTERRUPT_HINT_UNDUCK8+ | 5 | 提示音量恢复。 | -## InterruptActionType +## InterruptActionType(deprecated) 枚举,中断事件返回类型。 +> **说明:** +> 从 API Version 9 开始废弃。 + **系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Renderer | 名称 | 默认值 | 描述 | @@ -603,12 +678,12 @@ async function createTonePlayer(){ **系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Core -| 名称 | 类型 | 必填 | 说明 | -| ------------ | ---------------------------------------- | ---- | ------------------ | -| samplingRate | [AudioSamplingRate](#audiosamplingrate8) | 是 | 音频文件的采样率。 | -| channels | [AudioChannel](#audiochannel8) | 是 | 音频文件的通道数。 | -| sampleFormat | [AudioSampleFormat](#audiosampleformat8) | 是 | 音频采样格式。 | -| encodingType | [AudioEncodingType](#audioencodingtype8) | 是 | 音频编码格式。 | +| 名称 | 类型 | 必填 | 说明 | +| ------------ | ------------------------------------------------- | ---- | ------------------ | +| samplingRate | [AudioSamplingRate](#audiosamplingrate8) | 是 | 音频文件的采样率。 | +| channels | [AudioChannel](#audiochannel8) | 是 | 音频文件的通道数。 | +| sampleFormat | [AudioSampleFormat](#audiosampleformat8) | 是 | 音频采样格式。 | +| encodingType | [AudioEncodingType](#audioencodingtype8) | 是 | 音频编码格式。 | ## AudioRendererInfo8+ @@ -622,6 +697,19 @@ async function createTonePlayer(){ | usage | [StreamUsage](#streamusage) | 是 | 音频流使用类型。 | | rendererFlags | number | 是 | 音频渲染器标志。 | +## InterruptResult9+ + +音频中断结果。 + +**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Interrupt + +**系统接口:** 该接口为系统接口 + +| 名称 | 类型 | 必填 | 说明 | +| --------------| -------------------------------------------------------------- | ---- | ---------------- | +| requestResult | [InterruptRequestResultType](#interruptrequestresulttype9) | 是 | 表示音频请求中断类型。 | +| interruptNode | number | 是 | 音频请求中断的节点。 | + ## AudioRendererOptions8+ 音频渲染器选项信息。 @@ -645,7 +733,10 @@ async function createTonePlayer(){ | forceType | [InterruptForceType](#interruptforcetype9) | 是 | 操作是由系统执行或是由应用程序执行。 | | hintType | [InterruptHint](#interrupthint) | 是 | 中断提示。 | -## AudioInterrupt +## AudioInterrupt(deprecated) + +> **说明:** +> 从 API Version 9 开始废弃。 音频监听事件传入的参数。 @@ -657,7 +748,10 @@ async function createTonePlayer(){ | contentType | [ContentType](#contenttype) | 是 | 音频打断媒体类型。 | | pauseWhenDucked | boolean | 是 | 音频打断时是否可以暂停音频播放(true表示音频播放可以在音频打断期间暂停,false表示相反)。 | -## InterruptAction +## InterruptAction(deprecated) + +> **说明:** +> 从 API Version 9 开始废弃。 音频打断/获取焦点事件的回调方法。 @@ -702,7 +796,7 @@ async function createTonePlayer(){ **系统接口:** 该接口为系统接口 -**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Device +**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Volume | 名称 | 默认值 | 描述 | | :------------------------------ | :----- | :--------------------- | @@ -872,12 +966,15 @@ async function getRoutingManager(){ } ``` -### setVolume +### setVolume(deprecated) setVolume(volumeType: AudioVolumeType, volume: number, callback: AsyncCallback<void>): void 设置指定流的音量,使用callback方式异步返回结果。 +> **说明:** +> 从 API Version 9 开始废弃,建议使用AudioVolumeGroupManager中的[setVolume](#setvolume9)替代。 + **需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY 仅设置铃声(即volumeType为AudioVolumeType.RINGTONE)在静音和非静音状态切换时需要该权限。 @@ -904,12 +1001,15 @@ audioManager.setVolume(audio.AudioVolumeType.MEDIA, 10, (err) => { }); ``` -### setVolume +### setVolume(deprecated) setVolume(volumeType: AudioVolumeType, volume: number): Promise<void> 设置指定流的音量,使用Promise方式异步返回结果。 +> **说明:** +> 从 API Version 9 开始废弃,建议使用AudioVolumeGroupManager中的[setVolume](#setvolume9)替代。 + **需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY 仅设置铃声(即volumeType为AudioVolumeType.RINGTONE)在静音和非静音状态切换时需要该权限。 @@ -937,12 +1037,15 @@ audioManager.setVolume(audio.AudioVolumeType.MEDIA, 10).then(() => { }); ``` -### getVolume +### getVolume(deprecated) getVolume(volumeType: AudioVolumeType, callback: AsyncCallback<number>): void 获取指定流的音量,使用callback方式异步返回结果。 +> **说明:** +> 从 API Version 9 开始废弃,建议使用AudioVolumeGroupManager中的[getVolume](#getvolume9)替代。 + **系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** @@ -964,12 +1067,15 @@ audioManager.getVolume(audio.AudioVolumeType.MEDIA, (err, value) => { }); ``` -### getVolume +### getVolume(deprecated) getVolume(volumeType: AudioVolumeType): Promise<number> 获取指定流的音量,使用Promise方式异步返回结果。 +> **说明:** +> 从 API Version 9 开始废弃,建议使用AudioVolumeGroupManager中的[getVolume](#getvolume9)替代。 + **系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** @@ -992,12 +1098,15 @@ audioManager.getVolume(audio.AudioVolumeType.MEDIA).then((value) => { }); ``` -### getMinVolume +### getMinVolume(deprecated) getMinVolume(volumeType: AudioVolumeType, callback: AsyncCallback<number>): void 获取指定流的最小音量,使用callback方式异步返回结果。 +> **说明:** +> 从 API Version 9 开始废弃,建议使用AudioVolumeGroupManager中的[getMinVolume](#getminvolume9)替代。 + **系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** @@ -1019,12 +1128,15 @@ audioManager.getMinVolume(audio.AudioVolumeType.MEDIA, (err, value) => { }); ``` -### getMinVolume +### getMinVolume(deprecated) getMinVolume(volumeType: AudioVolumeType): Promise<number> 获取指定流的最小音量,使用Promise方式异步返回结果。 +> **说明:** +> 从 API Version 9 开始废弃,建议使用AudioVolumeGroupManager中的[getMinVolume](#getminvolume9)替代。 + **系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** @@ -1047,12 +1159,15 @@ audioManager.getMinVolume(audio.AudioVolumeType.MEDIA).then((value) => { }); ``` -### getMaxVolume +### getMaxVolume(deprecated) getMaxVolume(volumeType: AudioVolumeType, callback: AsyncCallback<number>): void 获取指定流的最大音量,使用callback方式异步返回结果。 +> **说明:** +> 从 API Version 9 开始废弃,建议使用AudioVolumeGroupManager中的[getMaxVolume](#getmaxvolume9)替代。 + **系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** @@ -1074,12 +1189,15 @@ audioManager.getMaxVolume(audio.AudioVolumeType.MEDIA, (err, value) => { }); ``` -### getMaxVolume +### getMaxVolume(deprecated) getMaxVolume(volumeType: AudioVolumeType): Promise<number> 获取指定流的最大音量,使用Promise方式异步返回结果。 +> **说明:** +> 从 API Version 9 开始废弃,建议使用AudioVolumeGroupManager中的[getMaxVolume](#getmaxvolume9)替代。 + **系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** @@ -1102,12 +1220,15 @@ audioManager.getMaxVolume(audio.AudioVolumeType.MEDIA).then((data) => { }); ``` -### mute +### mute(deprecated) mute(volumeType: AudioVolumeType, mute: boolean, callback: AsyncCallback<void>): void 设置指定音量流静音,使用callback方式异步返回结果。 +> **说明:** +> 从 API Version 9 开始废弃,建议使用AudioVolumeGroupManager中的[mute](#mute9)替代。 + **需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY 仅设置铃声(即volumeType为AudioVolumeType.RINGTONE)在静音和非静音状态切换时需要该权限。 @@ -1134,12 +1255,15 @@ audioManager.mute(audio.AudioVolumeType.MEDIA, true, (err) => { }); ``` -### mute +### mute(deprecated) mute(volumeType: AudioVolumeType, mute: boolean): Promise<void> 设置指定音量流静音,使用Promise方式异步返回结果。 +> **说明:** +> 从 API Version 9 开始废弃,建议使用AudioVolumeGroupManager中的[mute](#mute9)替代。 + **需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY 仅设置铃声(即volumeType为AudioVolumeType.RINGTONE)在静音和非静音状态切换时需要该权限。 @@ -1168,13 +1292,15 @@ audioManager.mute(audio.AudioVolumeType.MEDIA, true).then(() => { }); ``` - -### isMute +### isMute(deprecated) isMute(volumeType: AudioVolumeType, callback: AsyncCallback<boolean>): void 获取指定音量流是否被静音,使用callback方式异步返回结果。 +> **说明:** +> 从 API Version 9 开始废弃,建议使用AudioVolumeGroupManager中的[isMute](#ismute9)替代。 + **系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** @@ -1196,13 +1322,15 @@ audioManager.isMute(audio.AudioVolumeType.MEDIA, (err, value) => { }); ``` - -### isMute +### isMute(deprecated) isMute(volumeType: AudioVolumeType): Promise<boolean> 获取指定音量流是否被静音,使用Promise方式异步返回结果。 +> **说明:** +> 从 API Version 9 开始废弃,建议使用AudioVolumeGroupManager中的[isMute](#ismute9)替代。 + **系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** @@ -1225,12 +1353,15 @@ audioManager.isMute(audio.AudioVolumeType.MEDIA).then((value) => { }); ``` -### isActive +### isActive(deprecated) isActive(volumeType: AudioVolumeType, callback: AsyncCallback<boolean>): void 获取指定音量流是否为活跃状态,使用callback方式异步返回结果。 +> **说明:** +> 从 API Version 9 开始废弃,建议使用AudioStreamManager中的[isActive](#isactive9)替代。 + **系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** @@ -1252,12 +1383,15 @@ audioManager.isActive(audio.AudioVolumeType.MEDIA, (err, value) => { }); ``` -### isActive +### isActive(deprecated) isActive(volumeType: AudioVolumeType): Promise<boolean> 获取指定音量流是否为活跃状态,使用Promise方式异步返回结果。 +> **说明:** +> 从 API Version 9 开始废弃,建议使用AudioStreamManager中的[isActive](#isactive9)替代。 + **系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** @@ -1280,12 +1414,15 @@ audioManager.isActive(audio.AudioVolumeType.MEDIA).then((value) => { }); ``` -### setRingerMode +### setRingerMode(deprecated) setRingerMode(mode: AudioRingMode, callback: AsyncCallback<void>): void 设置铃声模式,使用callback方式异步返回结果。 +> **说明:** +> 从 API Version 9 开始废弃,建议使用AudioVolumeGroupManager中的[setRingerMode](#setringermode9)替代。 + **需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY 仅在静音和非静音状态切换时需要该权限。 @@ -1311,12 +1448,15 @@ audioManager.setRingerMode(audio.AudioRingMode.RINGER_MODE_NORMAL, (err) => { }); ``` -### setRingerMode +### setRingerMode(deprecated) setRingerMode(mode: AudioRingMode): Promise<void> 设置铃声模式,使用Promise方式异步返回结果。 +> **说明:** +> 从 API Version 9 开始废弃,建议使用AudioVolumeGroupManager中的[setRingerMode](#setringermode9)替代。 + **需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY 仅在静音和非静音状态切换时需要该权限。 @@ -1343,13 +1483,15 @@ audioManager.setRingerMode(audio.AudioRingMode.RINGER_MODE_NORMAL).then(() => { }); ``` - -### getRingerMode +### getRingerMode(deprecated) getRingerMode(callback: AsyncCallback<AudioRingMode>): void 获取铃声模式,使用callback方式异步返回结果。 +> **说明:** +> 从 API Version 9 开始废弃,建议使用AudioVolumeGroupManager中的[getRingerMode](#getringermode9)替代。 + **系统能力:** SystemCapability.Multimedia.Audio.Communication **参数:** @@ -1370,13 +1512,15 @@ audioManager.getRingerMode((err, value) => { }); ``` - -### getRingerMode +### getRingerMode(deprecated) getRingerMode(): Promise<AudioRingMode> 获取铃声模式,使用Promise方式异步返回结果。 +> **说明:** +> 从 API Version 9 开始废弃,建议使用AudioVolumeGroupManager中的[getRingerMode](#getringermode9)替代。 + **系统能力:** SystemCapability.Multimedia.Audio.Communication **返回值:** @@ -1517,12 +1661,15 @@ audioManager.getAudioParameter('key_example').then((value) => { }); ``` -### getDevices +### getDevices(deprecated) getDevices(deviceFlag: DeviceFlag, callback: AsyncCallback<AudioDeviceDescriptors>): void 获取音频设备列表,使用callback方式异步返回结果。 +> **说明:** +> 从 API Version 9 开始废弃,建议使用AudioRoutingManager中的[getDevices](#getdevices9)替代。 + **系统能力:** SystemCapability.Multimedia.Audio.Device **参数:** @@ -1543,12 +1690,15 @@ audioManager.getDevices(audio.DeviceFlag.OUTPUT_DEVICES_FLAG, (err, value) => { }); ``` -### getDevices +### getDevices(deprecated) getDevices(deviceFlag: DeviceFlag): Promise<AudioDeviceDescriptors> 获取音频设备列表,使用Promise方式异步返回结果。 +> **说明:** +> 从 API Version 9 开始废弃,建议使用AudioRoutingManager中的[getDevices](#getdevices9)替代。 + **系统能力:** SystemCapability.Multimedia.Audio.Device **参数:** @@ -1571,12 +1721,15 @@ audioManager.getDevices(audio.DeviceFlag.OUTPUT_DEVICES_FLAG).then((data) => { }); ``` -### setDeviceActive +### setDeviceActive(deprecated) setDeviceActive(deviceType: ActiveDeviceType, active: boolean, callback: AsyncCallback<void>): void 设置设备激活状态,使用callback方式异步返回结果。 +> **说明:** +> 从 API Version 9 开始废弃,建议使用AudioRoutingManager中的[setCommunicationDevice](#setcommunicationdevice9)替代。 + **系统能力:** SystemCapability.Multimedia.Audio.Device **参数:** @@ -1599,12 +1752,15 @@ audioManager.setDeviceActive(audio.ActiveDeviceType.SPEAKER, true, (err) => { }); ``` -### setDeviceActive +### setDeviceActive(deprecated) setDeviceActive(deviceType: ActiveDeviceType, active: boolean): Promise<void> 设置设备激活状态,使用Promise方式异步返回结果。 +> **说明:** +> 从 API Version 9 开始废弃,建议使用AudioRoutingManager中的[setCommunicationDevice](#setcommunicationdevice9)替代。 + **系统能力:** SystemCapability.Multimedia.Audio.Device **参数:** @@ -1629,12 +1785,15 @@ audioManager.setDeviceActive(audio.ActiveDeviceType.SPEAKER, true).then(() => { }); ``` -### isDeviceActive +### isDeviceActive(deprecated) isDeviceActive(deviceType: ActiveDeviceType, callback: AsyncCallback<boolean>): void 获取指定设备的激活状态,使用callback方式异步返回结果。 +> **说明:** +> 从 API Version 9 开始废弃,建议使用AudioRoutingManager中的[isCommunicationDeviceActive](#iscommunicationdeviceactive9)替代。 + **系统能力:** SystemCapability.Multimedia.Audio.Device **参数:** @@ -1656,13 +1815,15 @@ audioManager.isDeviceActive(audio.ActiveDeviceType.SPEAKER, (err, value) => { }); ``` - -### isDeviceActive +### isDeviceActive(deprecated) isDeviceActive(deviceType: ActiveDeviceType): Promise<boolean> 获取指定设备的激活状态,使用Promise方式异步返回结果。 +> **说明:** +> 从 API Version 9 开始废弃,建议使用AudioRoutingManager中的[isCommunicationDeviceActive](#iscommunicationdeviceactive9)替代。 + **系统能力:** SystemCapability.Multimedia.Audio.Device **参数:** @@ -1685,12 +1846,15 @@ audioManager.isDeviceActive(audio.ActiveDeviceType.SPEAKER).then((value) => { }); ``` -### setMicrophoneMute +### setMicrophoneMute(deprecated) setMicrophoneMute(mute: boolean, callback: AsyncCallback<void>): void 设置麦克风静音状态,使用callback方式异步返回结果。 +> **说明:** +> 从 API Version 9 开始废弃,建议使用AudioVolumeGroupManager中的[setMicrophoneMute](#setmicrophonemute9)替代。 + **需要权限:** ohos.permission.MICROPHONE **系统能力:** SystemCapability.Multimedia.Audio.Device @@ -1714,12 +1878,15 @@ audioManager.setMicrophoneMute(true, (err) => { }); ``` -### setMicrophoneMute +### setMicrophoneMute(deprecated) setMicrophoneMute(mute: boolean): Promise<void> 设置麦克风静音状态,使用Promise方式异步返回结果。 +> **说明:** +> 从 API Version 9 开始废弃,建议使用AudioVolumeGroupManager中的[setMicrophoneMute](#setmicrophonemute9)替代。 + **需要权限:** ohos.permission.MICROPHONE **系统能力:** SystemCapability.Multimedia.Audio.Device @@ -1744,12 +1911,15 @@ audioManager.setMicrophoneMute(true).then(() => { }); ``` -### isMicrophoneMute +### isMicrophoneMute(deprecated) isMicrophoneMute(callback: AsyncCallback<boolean>): void 获取麦克风静音状态,使用callback方式异步返回结果。 +> **说明:** +> 从 API Version 9 开始废弃,建议使用AudioVolumeGroupManager中的[isMicrophoneMute](#ismicrophonemute9)替代。 + **需要权限:** ohos.permission.MICROPHONE **系统能力:** SystemCapability.Multimedia.Audio.Device @@ -1772,12 +1942,15 @@ audioManager.isMicrophoneMute((err, value) => { }); ``` -### isMicrophoneMute +### isMicrophoneMute(deprecated) isMicrophoneMute(): Promise<boolean> 获取麦克风静音状态,使用Promise方式异步返回结果。 +> **说明:** +> 从 API Version 9 开始废弃,建议使用AudioVolumeGroupManager中的[isMicrophoneMute](#ismicrophonemute9)替代。 + **需要权限:** ohos.permission.MICROPHONE **系统能力:** SystemCapability.Multimedia.Audio.Device @@ -1790,17 +1963,19 @@ isMicrophoneMute(): Promise<boolean> **示例:** - ```js audioManager.isMicrophoneMute().then((value) => { console.info(`Promise returned to indicate that the mute status of the microphone is obtained ${value}.`); }); ``` -### on('volumeChange')8+ +### on('volumeChange')(deprecated) on(type: 'volumeChange', callback: Callback\): void +> **说明:** +> 从 API Version 8 开始支持,从 API Version 9 开始废弃,建议使用AudioVolumeManager中的[on](#on9)替代。 + 监听系统音量变化事件。 **系统接口:** 该接口为系统接口 @@ -1826,12 +2001,15 @@ audioManager.on('volumeChange', (volumeEvent) => { }); ``` -### on('ringerModeChange')8+ +### on('ringerModeChange')(deprecated) on(type: 'ringerModeChange', callback: Callback\): void 监听铃声模式变化事件。 +> **说明:** +> 从 API Version 8 开始支持,从 API Version 9 开始废弃,建议使用AudioVolumeGroupManager中的[on('ringerModeChange')](#on('ringermodechange')9)替代。 + **系统接口:** 该接口为系统接口 **系统能力:** SystemCapability.Multimedia.Audio.Communication @@ -1851,12 +2029,15 @@ audioManager.on('ringerModeChange', (ringerMode) => { }); ``` -### on('deviceChange') +### on('deviceChange')(deprecated) on(type: 'deviceChange', callback: Callback): void 设备更改。音频设备连接状态变化。 +> **说明:** +> 从 API Version 7 开始支持,从 API Version 9 开始废弃,建议使用AudioRoutingManager中的[on](#on9)替代。 + **系统能力:** SystemCapability.Multimedia.Audio.Device **参数:** @@ -1877,12 +2058,15 @@ audioManager.on('deviceChange', (deviceChanged) => { }); ``` -### off('deviceChange') +### off('deviceChange')(deprecated) off(type: 'deviceChange', callback?: Callback): void 取消订阅音频设备连接变化事件。 +> **说明:** +> 从 API Version 7 开始支持,从 API Version 9 开始废弃,建议使用AudioRoutingManager中的[off](#off9)替代。 + **系统能力:** SystemCapability.Multimedia.Audio.Device **参数:** @@ -1900,11 +2084,14 @@ audioManager.off('deviceChange', (deviceChanged) => { }); ``` -### on('interrupt') +### on('interrupt')(deprecated) on(type: 'interrupt', interrupt: AudioInterrupt, callback: Callback\): void -请求焦点并开始监听音频打断事件(当应用程序的音频被另一个播放事件中断,回调通知此应用程序) +请求焦点并开始监听音频打断事件(当应用程序的音频被另一个播放事件中断,回调通知此应用程序)。 + +> **说明:** +> 从 API Version 7 开始支持,从 API Version 9 开始废弃。 **系统能力:** SystemCapability.Multimedia.Audio.Renderer @@ -1936,11 +2123,14 @@ audioManager.on('interrupt', interAudioInterrupt, (InterruptAction) => { }); ``` -### off('interrupt') +### off('interrupt')(deprecated) off(type: 'interrupt', interrupt: AudioInterrupt, callback?: Callback\): void -取消监听音频打断事件(删除监听事件,取消打断) +取消监听音频打断事件(删除监听事件,取消打断)。 + +> **说明:** +> 从 API Version 7 开始支持,从 API Version 9 开始废弃。 **系统能力:** SystemCapability.Multimedia.Audio.Renderer @@ -2058,7 +2248,6 @@ audioManager.getAudioScene((err, value) => { }); ``` - ### getAudioScene8+ getAudioScene\(\): Promise @@ -2084,9 +2273,55 @@ audioManager.getAudioScene().then((value) => { }); ``` -### getVolumeGroups9+ +### getVolumeManager9+ + +getVolumeManager(): AudioVolumeManager + +获取音频音量管理器。 + +**系统能力:** SystemCapability.Multimedia.Audio.Volume + +**示例:** + +```js +let audioVolumeManager = audioManager.getVolumeManager(); +``` + +### getStreamManager9+ + +getStreamManager(): AudioStreamManager + +获取音频流管理器。 + +**系统能力:** SystemCapability.Multimedia.Audio.Core + +**示例:** + +```js +let audioStreamManager = audioManager.getStreamManager(); +``` + +### getRoutingManager9+ + +getRoutingManager(): AudioRoutingManager + +获取音频路由设备管理器。 + +**系统能力:** SystemCapability.Multimedia.Audio.Device + +**示例:** + +```js +let audioRoutingManager = audioManager.getRoutingManager(); +``` + +## AudioVolumeManager9+ -getVolumeGroups(networkId: string, callback: AsyncCallback\): void +音量管理。在使用AudioVolumeManager的接口前,需要使用[getVolumeManager](#getVolumeManager9)获取AudioVolumeManager实例。 + +### getVolumeGroupInfos9+ + +getVolumeGroupInfos(networkId: string, callback: AsyncCallback\): void 获取音量组信息列表,使用callback方式异步返回结果。 @@ -2098,13 +2333,12 @@ getVolumeGroups(networkId: string, callback: AsyncCallback\): | 参数名 | 类型 | 必填 | 说明 | | ---------- | ------------------------------------------------------------ | ---- | -------------------- | -| networkId | string | 是 | 设备的网络id。本地设备audio.LOCAL_NETWORK_ID ,也可以通过getRoutingManager().getDevices()获取全部networkId。 | -| callback | AsyncCallback<[VolumeGroupInfos](#volumegroupinfos9)> | 是 | 回调,返回音量组信息列表。 | +| networkId | string | 是 | 设备的网络id。本地设备audio.LOCAL_NETWORK_ID。 | +| callback | AsyncCallback<[VolumeGroupInfos](#volumegroupinfos9)> | 是 | 回调,返回音量组信息列表。 | **示例:** ```js -let audioManager = audio.getAudioManager(); -audioManager.getVolumeGroups(audio.LOCAL_NETWORK_ID, (err, value) => { +audioVolumeManager.getVolumeGroupInfos(audio.LOCAL_NETWORK_ID, (err, value) => { if (err) { console.error(`Failed to obtain the volume group infos list. ${err}`); return; @@ -2113,9 +2347,9 @@ audioManager.getVolumeGroups(audio.LOCAL_NETWORK_ID, (err, value) => { }); ``` -### getVolumeGroups9+ +### getVolumeGroupInfos9+ -getVolumeGroups(networkId: string\): Promise +getVolumeGroupInfos(networkId: string\): Promise 获取音量组信息列表,使用promise方式异步返回结果。 @@ -2125,9 +2359,9 @@ getVolumeGroups(networkId: string\): Promise **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ---------- | ------------------------------------------------------------ | ---- | -------------------- | -| networkId | string | 是 | 设备的网络id。本地设备audio.LOCAL_NETWORK_ID ,也可以通过getRoutingManager().getDevices()获取全部networkId。 | +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | ------------------| ---- | -------------------- | +| networkId | string | 是 | 设备的网络id。本地设备audio.LOCAL_NETWORK_ID。 | **返回值:** @@ -2139,19 +2373,17 @@ getVolumeGroups(networkId: string\): Promise ```js async function getVolumeGroupInfos(){ - let volumegroupinfos = await audio.getAudioManager().getVolumeGroups(audio.LOCAL_NETWORK_ID); + let volumegroupinfos = await audio.getAudioVolumeManager().getVolumeGroupInfos(audio.LOCAL_NETWORK_ID); console.info('Promise returned to indicate that the volumeGroup list is obtained.'+JSON.stringify(volumegroupinfos)) } ``` -### getGroupManager9+ +### getVolumeGroupManager9+ -getGroupManager(groupId: number, callback: AsyncCallback\): void +getVolumeGroupManager(groupId: number, callback: AsyncCallback\): void 获取音频组管理器,使用callback方式异步返回结果。 -**系统接口:** 该接口为系统接口 - **系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** @@ -2159,37 +2391,28 @@ getGroupManager(groupId: number, callback: AsyncCallback\): | 参数名 | 类型 | 必填 | 说明 | | ---------- | ------------------------------------------------------------ | ---- | -------------------- | | groupId | number | 是 | 音量组id。 | -| callback | AsyncCallback< [AudioGroupManager](#audiogroupmanager9) > | 是 | 回调,返回一个音量组实例。 | +| callback | AsyncCallback< [AudioVolumeGroupManager](#audiovolumegroupmanager9) > | 是 | 回调,返回一个音量组实例。 | **示例:** ```js -let audioManager = audio.getAudioManager(); -let audioGroupManager; -async function getGroupManager(){ - let value = await audioManager.getVolumeGroups(audio.LOCAL_NETWORK_ID); - if (value.length > 0) { - let groupid = value[0].groupId; - audioManager.getGroupManager(groupid, (err, value) => { - if (err) { - console.error(`Failed to obtain the volume group infos list. ${err}`); - return; - } - audioGroupManager = value - console.info('Callback invoked to indicate that the volume group infos list is obtained.'); - }); +let groupid = audio.DEFAULT_VOLUME_GROUP_ID; +audioVolumeManager.getVolumeGroupManager(groupid, (err, value) => { + if (err) { + console.error(`Failed to obtain the volume group infos list. ${err}`); + return; } -} + console.info('Callback invoked to indicate that the volume group infos list is obtained.'); +}); + ``` -### getGroupManager9+ +### getVolumeGroupManager9+ -getGroupManager(groupId: number\): Promise +getVolumeGroupManager(groupId: number\): Promise 获取音频组管理器,使用promise方式异步返回结果。 -**系统接口:** 该接口为系统接口 - **系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** @@ -2202,288 +2425,134 @@ getGroupManager(groupId: number\): Promise | 类型 | 说明 | | ------------------- | ----------------------------- | -| Promise< [AudioGroupManager](#audiogroupmanager9) > | 音量组实例。 | +| Promise< [AudioVolumeGroupManager](#audiovolumegroupmanager) > | 音量组实例。 | **示例:** ```js -let audioManager = audio.getAudioManager(); -async function getGroupManager(){ - let value = await audioManager.getVolumeGroups(audio.LOCAL_NETWORK_ID); - if (value.length > 0) { - let groupid = value[0].groupId; - let audioGroupManager = await audioManager.getGroupManager(groupid) - console.info('Callback invoked to indicate that the volume group infos list is obtained.'); - } -} +let groupid = value[0].groupId; +let audioVolumeGroupManager = await audioVolumeManager.getVolumeGroupManager(groupid) +console.info('Callback invoked to indicate that the volume group infos list is obtained.'); ``` -### getStreamManager9+ +### on('volumeChange')8+ -getStreamManager(callback: AsyncCallback\): void +on(type: 'volumeChange', callback: Callback\): void -获取音频流管理器实例。使用callback方式异步返回结果。 +监听系统音量变化事件,使用callback方式异步返回结果。 -**系统能力:** SystemCapability.Multimedia.Audio.Core +**系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | --------------------------------------------------------- | ---- | ---------------- | -| callback | AsyncCallback<[AudioStreamManager](#audiostreammanager9)> | 是 | 返回音频流管理器实例。 | +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------------------------------------- | ---- | ------------------------------------------------------------ | +| type | string | 是 | 事件回调类型,支持的事件为:'volumeChange'。 | +| callback | Callback<[VolumeEvent](#volumeevent8)> | 是 | 回调方法。 | + +**错误码:** + +以下错误码的详细介绍请参见[音频错误码](../errorcodes/errorcode-audio.md)。 + +| 错误码ID | 错误信息 | +| ------- | --------------------------------------------| +| 401 | if input parameter type or number mismatch. | +| 6800101 | if input parameter value error. | **示例:** ```js -let audioManager = audio.getAudioManager(); -let audioStreamManager; -audioManager.getStreamManager((err, data) => { - if (err) { - console.error(`getStreamManager : Error: ${err}`); - } else { - console.info('getStreamManager : Success : SUCCESS'); - audioStreamManager = data; - } +audioVolumeManager.on('volumeChange', (volumeEvent) => { + console.info(`VolumeType of stream: ${volumeEvent.volumeType} `); + console.info(`Volume level: ${volumeEvent.volume} `); + console.info(`Whether to updateUI: ${volumeEvent.updateUi} `); }); ``` -### getStreamManager9+ - -getStreamManager(): Promise - -获取音频流管理器实例。使用Promise方式异步返回结果。 - -**系统能力:** SystemCapability.Multimedia.Audio.Core +## AudioVolumeGroupManager9+ -**返回值:** +管理音频组音量。在调用AudioVolumeGroupManager的接口前,需要先通过 [getVolumeGroupManager](#getvolumegroupmanager9) 创建实例。 -| 类型 | 说明 | -| ---------------------------------------------------- | ---------------- | -| Promise<[AudioStreamManager](#audiostreammanager9)> | 返回音频流管理器实例。 | +**系统接口:** 该接口为系统接口 -**示例:** +**系统能力:** SystemCapability.Multimedia.Audio.Volume -```js -let audioManager = audio.getAudioManager(); -let audioStreamManager; -audioManager.getStreamManager().then((data) => { - audioStreamManager = data; - console.info('getStreamManager: Success!'); -}).catch((err) => { - console.error(`getStreamManager: ERROR : ${err}`); -}); +### setVolume9+ -``` +setVolume(volumeType: AudioVolumeType, volume: number, callback: AsyncCallback<void>): void -### requestIndependentInterrupt9+ +设置指定流的音量,使用callback方式异步返回结果。 -requestIndependentInterrupt(focusType: FocusType, callback: AsyncCallback\): void +**需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY -申请独立焦点,获取独立SessionID,使用callback方式异步返回结果。 +仅设置铃声(即volumeType为AudioVolumeType.RINGTONE)在静音和非静音状态切换时需要该权限。 **系统接口:** 该接口为系统接口 -**系统能力:** SystemCapability.Multimedia.Audio.Renderer +**系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ----------------------------- | ---- | ----------------- | -| focusType | [FocusType](#focustype) | 是 | 焦点类型。 | -| callback | AsyncCallback<boolean> | 是 | 回调,返回焦点申请成功/失败状态。 | +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | ----------------------------------- | ---- | -------------------------------------------------------- | +| volumeType | [AudioVolumeType](#audiovolumetype) | 是 | 音量流类型。 | +| volume | number | 是 | 音量等级,可设置范围通过getMinVolume和getMaxVolume获取。 | +| callback | AsyncCallback<void> | 是 | 回调表示成功还是失败。 | **示例:** ```js -async function requestIndependentInterrupt(){ - let value = await audioManager.requestIndependentInterrupt(audio.FocusType.FOCUS_TYPE_RECORDING); - if (value) { - console.info('requestIndependentInterrupt interface for result callback: SUCCESS'); - } else { - console.error('Result ERROR'); +audioVolumeGroupManager.setVolume(audio.AudioVolumeType.MEDIA, 10, (err) => { + if (err) { + console.error(`Failed to set the volume. ${err}`); + return; } -} + console.info('Callback invoked to indicate a successful volume setting.'); +}); ``` -### requestIndependentInterrupt9+ -requestIndependentInterrupt(focusType: FocusType): Promise +### setVolume9+ + +setVolume(volumeType: AudioVolumeType, volume: number): Promise<void> + +设置指定流的音量,使用Promise方式异步返回结果。 + +**需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY -申请独立焦点,获取独立SessionID,使用promise方式异步返回结果。 +仅设置铃声(即volumeType为AudioVolumeType.RINGTONE)在静音和非静音状态切换时需要该权限。 **系统接口:** 该接口为系统接口 -**系统能力:** SystemCapability.Multimedia.Audio.Renderer +**系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| ------ | ---- | ---- | ---- | -| focusType | [FocusType](#focustype) | 是 | 焦点类型。 | +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | ----------------------------------- | ---- | -------------------------------------------------------- | +| volumeType | [AudioVolumeType](#audiovolumetype) | 是 | 音量流类型。 | +| volume | number | 是 | 音量等级,可设置范围通过getMinVolume和getMaxVolume获取。 | **返回值:** -| 类型 | 说明 | -| --------------------------------------------------------- | ------------ | -| Promise<boolean> | 返回申请焦点成功/失败状态。 | +| 类型 | 说明 | +| ------------------- | ----------------------------- | +| Promise<void> | Promise回调表示成功还是失败。 | **示例:** ```js -async function requestIndependentInterrupt(){ - audioManager.requestIndependentInterrupt(audio.FocusType.FOCUS_TYPE_RECORDING).then((value) => { - console.info('Promise returned to succeed '); - }).catch ((err) => { - console.error('Failed to requestIndependentInterrupt'); - }); -} +audioVolumeGroupManager.setVolume(audio.AudioVolumeType.MEDIA, 10).then(() => { + console.info('Promise returned to indicate a successful volume setting.'); +}); ``` -### abandonIndependentInterrupt9+ -abandonIndependentInterrupt(focusType: FocusType, callback: AsyncCallback\): void +### getVolume9+ -废除独立焦点,使用callback方式异步返回结果。 +getVolume(volumeType: AudioVolumeType, callback: AsyncCallback<number>): void -**系统接口:** 该接口为系统接口 +获取指定流的音量,使用callback方式异步返回结果。 -**系统能力:** SystemCapability.Multimedia.Audio.Renderer - -**参数:** - -| 参数名 | 类型 | 必填 | 说明 | -| -------- | ----------------------------- | ---- | ----------------- | -| focusType | [FocusType](#focustype) | 是 | 焦点类型。 | -| callback | AsyncCallback<boolean> | 是 | 回调,返回废除焦点成功/失败状态。 | - -**示例:** - -```js -async function abandonIndependentInterrupt(){ - let value = await audioManager.abandonIndependentInterrupt(audio.FocusType.FOCUS_TYPE_RECORDING); - if (value) { - console.info('abandonIndependentInterrupt interface for result callback: SUCCESS'); - } else { - console.error('Result ERROR'); - } -} -``` -### abandonIndependentInterrupt9+ - -abandonIndependentInterrupt(focusType: FocusType): Promise - -废除独立焦点,使用promise方式异步返回结果。 - -**系统接口:** 该接口为系统接口 - -**系统能力:** SystemCapability.Multimedia.Audio.Renderer - -**参数:** - -| 参数名 | 类型 | 必填 | 说明 | -| ------ | ---- | ---- | ---- | -| focusType | [FocusType](#focustype) | 是 | 焦点类型。 | - -**返回值:** - -| 类型 | 说明 | -| --------------------------------------------------------- | ------------ | -| Promise<boolean> | 返回废除焦点成功/失败状态。 | - -**示例:** - -```js -async function abandonIndependentInterrupt(){ - audioManager.abandonIndependentInterrupt(audio.FocusType.FOCUS_TYPE_RECORDING).then((value) => { - console.info('Promise returned to succeed'); - }).catch ((err) => { - console.error('Failed to abandonIndependentInterrupt'); - }); -} -``` -## AudioGroupManager9+ -管理音频组音量。在调用AudioGroupManager的接口前,需要先通过 [getGroupManager](#getgroupmanager9) 创建实例。 - -**系统接口:** 该接口为系统接口 - -**系统能力:** SystemCapability.Multimedia.Audio.Volume - -### setVolume9+ - -setVolume(volumeType: AudioVolumeType, volume: number, callback: AsyncCallback<void>): void - -设置指定流的音量,使用callback方式异步返回结果。 - -**需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY - -仅设置铃声(即volumeType为AudioVolumeType.RINGTONE)在静音和非静音状态切换时需要该权限。 - -**系统接口:** 该接口为系统接口 - -**系统能力:** SystemCapability.Multimedia.Audio.Volume - -**参数:** - -| 参数名 | 类型 | 必填 | 说明 | -| ---------- | ----------------------------------- | ---- | -------------------------------------------------------- | -| volumeType | [AudioVolumeType](#audiovolumetype) | 是 | 音量流类型。 | -| volume | number | 是 | 音量等级,可设置范围通过getMinVolume和getMaxVolume获取。 | -| callback | AsyncCallback<void> | 是 | 回调表示成功还是失败。 | - -**示例:** - -```js -audioGroupManager.setVolume(audio.AudioVolumeType.MEDIA, 10, (err) => { - if (err) { - console.error(`Failed to set the volume. ${err}`); - return; - } - console.info('Callback invoked to indicate a successful volume setting.'); -}); -``` - -### setVolume9+ - -setVolume(volumeType: AudioVolumeType, volume: number): Promise<void> - -设置指定流的音量,使用Promise方式异步返回结果。 - -**需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY - -仅设置铃声(即volumeType为AudioVolumeType.RINGTONE)在静音和非静音状态切换时需要该权限。 - -**系统接口:** 该接口为系统接口 - -**系统能力:** SystemCapability.Multimedia.Audio.Volume - -**参数:** - -| 参数名 | 类型 | 必填 | 说明 | -| ---------- | ----------------------------------- | ---- | -------------------------------------------------------- | -| volumeType | [AudioVolumeType](#audiovolumetype) | 是 | 音量流类型。 | -| volume | number | 是 | 音量等级,可设置范围通过getMinVolume和getMaxVolume获取。 | - -**返回值:** - -| 类型 | 说明 | -| ------------------- | ----------------------------- | -| Promise<void> | Promise回调表示成功还是失败。 | - -**示例:** - -```js -audioGroupManager.setVolume(audio.AudioVolumeType.MEDIA, 10).then(() => { - console.info('Promise returned to indicate a successful volume setting.'); -}); -``` - -### getVolume9+ - -getVolume(volumeType: AudioVolumeType, callback: AsyncCallback<number>): void - -获取指定流的音量,使用callback方式异步返回结果。 - -**系统接口:** 该接口为系统接口 - -**系统能力:** SystemCapability.Multimedia.Audio.Volume +**系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** @@ -2495,7 +2564,7 @@ getVolume(volumeType: AudioVolumeType, callback: AsyncCallback<number>): v **示例:** ```js -audioGroupManager.getVolume(audio.AudioVolumeType.MEDIA, (err, value) => { +audioVolumeGroupManager.getVolume(audio.AudioVolumeType.MEDIA, (err, value) => { if (err) { console.error(`Failed to obtain the volume. ${err}`); return; @@ -2510,8 +2579,6 @@ getVolume(volumeType: AudioVolumeType): Promise<number> 获取指定流的音量,使用Promise方式异步返回结果。 -**系统接口:** 该接口为系统接口 - **系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** @@ -2529,7 +2596,7 @@ getVolume(volumeType: AudioVolumeType): Promise<number> **示例:** ```js -audioGroupManager.getVolume(audio.AudioVolumeType.MEDIA).then((value) => { +audioVolumeGroupManager.getVolume(audio.AudioVolumeType.MEDIA).then((value) => { console.info(`Promise returned to indicate that the volume is obtained ${value}.`); }); ``` @@ -2540,8 +2607,6 @@ getMinVolume(volumeType: AudioVolumeType, callback: AsyncCallback<number>) 获取指定流的最小音量,使用callback方式异步返回结果。 -**系统接口:** 该接口为系统接口 - **系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** @@ -2554,7 +2619,7 @@ getMinVolume(volumeType: AudioVolumeType, callback: AsyncCallback<number>) **示例:** ```js -audioGroupManager.getMinVolume(audio.AudioVolumeType.MEDIA, (err, value) => { +audioVolumeGroupManager.getMinVolume(audio.AudioVolumeType.MEDIA, (err, value) => { if (err) { console.error(`Failed to obtain the minimum volume. ${err}`); return; @@ -2569,8 +2634,6 @@ getMinVolume(volumeType: AudioVolumeType): Promise<number> 获取指定流的最小音量,使用Promise方式异步返回结果。 -**系统接口:** 该接口为系统接口 - **系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** @@ -2588,7 +2651,7 @@ getMinVolume(volumeType: AudioVolumeType): Promise<number> **示例:** ```js -audioGroupManager.getMinVolume(audio.AudioVolumeType.MEDIA).then((value) => { +audioVolumeGroupManager.getMinVolume(audio.AudioVolumeType.MEDIA).then((value) => { console.info(`Promised returned to indicate that the minimum volume is obtained ${value}.`); }); ``` @@ -2599,8 +2662,6 @@ getMaxVolume(volumeType: AudioVolumeType, callback: AsyncCallback<number>) 获取指定流的最大音量,使用callback方式异步返回结果。 -**系统接口:** 该接口为系统接口 - **系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** @@ -2613,7 +2674,7 @@ getMaxVolume(volumeType: AudioVolumeType, callback: AsyncCallback<number>) **示例:** ```js -audioGroupManager.getMaxVolume(audio.AudioVolumeType.MEDIA, (err, value) => { +audioVolumeGroupManager.getMaxVolume(audio.AudioVolumeType.MEDIA, (err, value) => { if (err) { console.error(`Failed to obtain the maximum volume. ${err}`); return; @@ -2628,8 +2689,6 @@ getMaxVolume(volumeType: AudioVolumeType): Promise<number> 获取指定流的最大音量,使用Promise方式异步返回结果。 -**系统接口:** 该接口为系统接口 - **系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** @@ -2647,7 +2706,7 @@ getMaxVolume(volumeType: AudioVolumeType): Promise<number> **示例:** ```js -audioGroupManager.getMaxVolume(audio.AudioVolumeType.MEDIA).then((data) => { +audioVolumeGroupManager.getMaxVolume(audio.AudioVolumeType.MEDIA).then((data) => { console.info('Promised returned to indicate that the maximum volume is obtained.'); }); ``` @@ -2677,7 +2736,7 @@ mute(volumeType: AudioVolumeType, mute: boolean, callback: AsyncCallback<void **示例:** ```js -audioGroupManager.mute(audio.AudioVolumeType.MEDIA, true, (err) => { +audioVolumeGroupManager.mute(audio.AudioVolumeType.MEDIA, true, (err) => { if (err) { console.error(`Failed to mute the stream. ${err}`); return; @@ -2716,7 +2775,7 @@ mute(volumeType: AudioVolumeType, mute: boolean): Promise<void> **示例:** ```js -audioGroupManager.mute(audio.AudioVolumeType.MEDIA, true).then(() => { +audioVolumeGroupManager.mute(audio.AudioVolumeType.MEDIA, true).then(() => { console.info('Promise returned to indicate that the stream is muted.'); }); ``` @@ -2727,8 +2786,6 @@ isMute(volumeType: AudioVolumeType, callback: AsyncCallback<boolean>): voi 获取指定音量流是否被静音,使用callback方式异步返回结果。 -**系统接口:** 该接口为系统接口 - **系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** @@ -2741,7 +2798,7 @@ isMute(volumeType: AudioVolumeType, callback: AsyncCallback<boolean>): voi **示例:** ```js -audioGroupManager.isMute(audio.AudioVolumeType.MEDIA, (err, value) => { +audioVolumeGroupManager.isMute(audio.AudioVolumeType.MEDIA, (err, value) => { if (err) { console.error(`Failed to obtain the mute status. ${err}`); return; @@ -2756,8 +2813,6 @@ isMute(volumeType: AudioVolumeType): Promise<boolean> 获取指定音量流是否被静音,使用Promise方式异步返回结果。 -**系统接口:** 该接口为系统接口 - **系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** @@ -2775,11 +2830,300 @@ isMute(volumeType: AudioVolumeType): Promise<boolean> **示例:** ```js -audioGroupManager.isMute(audio.AudioVolumeType.MEDIA).then((value) => { +audioVolumeGroupManager.isMute(audio.AudioVolumeType.MEDIA).then((value) => { console.info(`Promise returned to indicate that the mute status of the stream is obtained ${value}.`); }); ``` +### setRingerMode + +setRingerMode(mode: AudioRingMode, callback: AsyncCallback<void>): void + +设置铃声模式,使用callback方式异步返回结果。 + +**需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY + +仅在静音和非静音状态切换时需要该权限。 + +**系统接口:** 该接口为系统接口 + +**系统能力:** SystemCapability.Multimedia.Audio.Volume + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------------- | ---- | ------------------------ | +| mode | [AudioRingMode](#audioringmode) | 是 | 音频铃声模式。 | +| callback | AsyncCallback<void> | 是 | 回调返回设置成功或失败。 | + +**示例:** + +```js +audioVolumeGroupManager.setRingerMode(audio.AudioRingMode.RINGER_MODE_NORMAL, (err) => { + if (err) { + console.error(`Failed to set the ringer mode.​ ${err}`); + return; + } + console.info('Callback invoked to indicate a successful setting of the ringer mode.'); +}); +``` + +### setRingerMode + +setRingerMode(mode: AudioRingMode): Promise<void> + +设置铃声模式,使用Promise方式异步返回结果。 + +**需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY + +仅在静音和非静音状态切换时需要该权限。 + +**系统接口:** 该接口为系统接口 + +**系统能力:** SystemCapability.Multimedia.Audio.Volume + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ------------------------------- | ---- | -------------- | +| mode | [AudioRingMode](#audioringmode) | 是 | 音频铃声模式。 | + +**返回值:** + +| 类型 | 说明 | +| ------------------- | ------------------------------- | +| Promise<void> | Promise回调返回设置成功或失败。 | + +**示例:** + +```js +audioVolumeGroupManager.setRingerMode(audio.AudioRingMode.RINGER_MODE_NORMAL).then(() => { + console.info('Promise returned to indicate a successful setting of the ringer mode.'); +}); +``` + +### getRingerMode + +getRingerMode(callback: AsyncCallback<AudioRingMode>): void + +获取铃声模式,使用callback方式异步返回结果。 + +**系统能力:** SystemCapability.Multimedia.Audio.Volume + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------------------------------- | ---- | ------------------------ | +| callback | AsyncCallback<[AudioRingMode](#audioringmode)> | 是 | 回调返回系统的铃声模式。 | + +**示例:** + +```js +audioVolumeGroupManager.getRingerMode((err, value) => { + if (err) { + console.error(`Failed to obtain the ringer mode.​ ${err}`); + return; + } + console.info(`Callback invoked to indicate that the ringer mode is obtained ${value}.`); +}); +``` + +### getRingerMode + +getRingerMode(): Promise<AudioRingMode> + +获取铃声模式,使用Promise方式异步返回结果。 + +**系统能力:** SystemCapability.Multimedia.Audio.Volume + +**返回值:** + +| 类型 | 说明 | +| ---------------------------------------------- | ------------------------------- | +| Promise<[AudioRingMode](#audioringmode)> | Promise回调返回系统的铃声模式。 | + +**示例:** + +```js +audioVolumeGroupManager.getRingerMode().then((value) => { + console.info(`Promise returned to indicate that the ringer mode is obtained ${value}.`); +}); +``` + +### on('ringerModeChange')8+ + +on(type: 'ringerModeChange', callback: Callback\): void + +监听铃声模式变化事件。 + +**系统接口:** 该接口为系统接口 + +**系统能力:** SystemCapability.Multimedia.Audio.Volume + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ----------------------------------------- | ---- | ------------------------------------------------------------ | +| type | string | 是 | 事件回调类型,支持的事件为:'ringerModeChange'(铃声模式变化事件,检测到铃声模式改变时,触发该事件)。 | +| callback | Callback<[AudioRingMode](#audioringmode)> | 是 | 回调方法。 | + +**错误码:** + +以下错误码的详细介绍请参见[音频错误码](../errorcodes/errorcode-audio.md)。 + +| 错误码ID | 错误信息 | +| ------- | --------------------------------------------| +| 401 | if input parameter type or number mismatch. | +| 6800101 | if input parameter value error. | + +**示例:** + +```js +audioVolumeGroupManager.on('ringerModeChange', (ringerMode) => { + console.info(`Updated ringermode: ${ringerMode}`); +}); +``` +### setMicrophoneMute + +setMicrophoneMute(mute: boolean, callback: AsyncCallback<void>): void + +设置麦克风静音状态,使用callback方式异步返回结果。 + +**需要权限:** ohos.permission.MANAGE_AUDIO_CONFIG + +**系统能力:** SystemCapability.Multimedia.Audio.Volume + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ------------------------- | ---- | --------------------------------------------- | +| mute | boolean | 是 | 待设置的静音状态,true为静音,false为非静音。 | +| callback | AsyncCallback<void> | 是 | 回调返回设置成功或失败。 | + +**示例:** + +```js +audioVolumeGroupManager.setMicrophoneMute(true, (err) => { + if (err) { + console.error(`Failed to mute the microphone. ${err}`); + return; + } + console.info('Callback invoked to indicate that the microphone is muted.'); +}); +``` + +### setMicrophoneMute + +setMicrophoneMute(mute: boolean): Promise<void> + +设置麦克风静音状态,使用Promise方式异步返回结果。 + +**需要权限:** ohos.permission.MANAGE_AUDIO_CONFIG + +**系统能力:** SystemCapability.Multimedia.Audio.Volume + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ------ | ------- | ---- | --------------------------------------------- | +| mute | boolean | 是 | 待设置的静音状态,true为静音,false为非静音。 | + +**返回值:** + +| 类型 | 说明 | +| ------------------- | ------------------------------- | +| Promise<void> | Promise回调返回设置成功或失败。 | + +**示例:** + +```js +audioVolumeGroupManager.setMicrophoneMute(true).then(() => { + console.info('Promise returned to indicate that the microphone is muted.'); +}); +``` + +### isMicrophoneMute + +isMicrophoneMute(callback: AsyncCallback<boolean>): void + +获取麦克风静音状态,使用callback方式异步返回结果。 + +**系统能力:** SystemCapability.Multimedia.Audio.Volume + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | ---------------------------- | ---- | ------------------------------------------------------- | +| callback | AsyncCallback<boolean> | 是 | 回调返回系统麦克风静音状态,true为静音,false为非静音。 | + +**示例:** + +```js +audioVolumeGroupManager.isMicrophoneMute((err, value) => { + if (err) { + console.error(`Failed to obtain the mute status of the microphone. ${err}`); + return; + } + console.info(`Callback invoked to indicate that the mute status of the microphone is obtained ${value}.`); +}); +``` + +### isMicrophoneMute + +isMicrophoneMute(): Promise<boolean> + +获取麦克风静音状态,使用Promise方式异步返回结果。 + +**系统能力:** SystemCapability.Multimedia.Audio.Volume + +**返回值:** + +| 类型 | 说明 | +| ---------------------- | ------------------------------------------------------------ | +| Promise<boolean> | Promise回调返回系统麦克风静音状态,true为静音,false为非静音。 | + +**示例:** + +```js +audioVolumeGroupManager.isMicrophoneMute().then((value) => { + console.info(`Promise returned to indicate that the mute status of the microphone is obtained ${value}.`); +}); +``` + +### on('micStateChange')9+ + +on(type: 'micStateChange', callback: Callback<MicStateChangeEvent>): void + +监听系统麦克风状态更改事件。 + +目前此订阅接口在单进程多AudioManager实例的使用场景下,仅最后一个实例的订阅生效,其他实例的订阅会被覆盖(即使最后一个实例没有进行订阅),因此推荐使用单一AudioManager实例进行开发。 + +**系统能力:** SystemCapability.Multimedia.Audio.Volume + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | -------------------------------------- | ---- | ------------------------------------------------------------ | +| type | string | 是 | 事件回调类型,支持的事件为:'micStateChange'(系统麦克风状态变化事件,检测到系统麦克风状态改变时,触发该事件)。 | +| callback | Callback<[MicStateChangeEvent](#micstatechangeevent9)> | 是 | 回调方法,返回变更后的麦克风状态。 | + +**错误码:** + +以下错误码的详细介绍请参见[音频错误码](../errorcodes/errorcode-audio.md)。 + +| 错误码ID | 错误信息 | +| ------- | --------------------------------------------| +| 401 | if input parameter type or number mismatch. | +| 6800101 | if input parameter value error. | + +**示例:** + +```js +audioVolumeGroupManager.on('micStateChange', (micStateChange) => { + console.info(`Current microphone status is: ${micStateChange.mute} `); +}); +``` + ## AudioStreamManager9+ 管理音频流。在使用AudioStreamManager的API前,需要使用[getStreamManager](#getstreammanager9)获取AudioStreamManager实例。 @@ -2983,6 +3327,15 @@ on(type: "audioRendererChange", callback: Callback<AudioRendererChangeInfoArr | type | string | 是 | 事件类型,支持的事件`'audioRendererChange'`:当音频渲染器发生更改时触发。 | | callback | Callback<[AudioRendererChangeInfoArray](#audiorendererchangeinfoarray9)> | 是 | 回调函数。 | +**错误码:** + +以下错误码的详细介绍请参见[音频错误码](../errorcodes/errorcode-audio.md)。 + +| 错误码ID | 错误信息 | +| ------- | --------------------------------------------| +| 401 | if input parameter type or number mismatch. | +| 6800101 | if input parameter value error. | + **示例:** ```js @@ -3012,7 +3365,7 @@ audioStreamManager.on('audioRendererChange', (AudioRendererChangeInfoArray) => ### off('audioRendererChange')9+ -off(type: "audioRendererChange"); +off(type: "audioRendererChange"): void 取消监听音频渲染器更改事件。 @@ -3024,6 +3377,15 @@ off(type: "audioRendererChange"); | -------- | ------- | ---- | ---------------- | | type | string | 是 | 事件类型,支持的事件`'audioRendererChange'`:音频渲染器更改事件。 | +**错误码:** + +以下错误码的详细介绍请参见[音频错误码](../errorcodes/errorcode-audio.md)。 + +| 错误码ID | 错误信息 | +| ------- | --------------------------------------------| +| 401 | if input parameter type or number mismatch. | +| 6800101 | if input parameter value error. | + **示例:** ```js @@ -3057,7 +3419,7 @@ audioStreamManager.on('audioCapturerChange', (AudioCapturerChangeInfoArray) => console.info(`Source for ${i} is: ${AudioCapturerChangeInfoArray[i].capturerInfo.source}`); console.info(`Flag ${i} is: ${AudioCapturerChangeInfoArray[i].capturerInfo.capturerFlags}`); console.info(`State for ${i} is: ${AudioCapturerChangeInfoArray[i].capturerState}`); - var devDescriptor = AudioCapturerChangeInfoArray[i].deviceDescriptors; + let devDescriptor = AudioCapturerChangeInfoArray[i].deviceDescriptors; for (let j = 0; j < AudioCapturerChangeInfoArray[i].deviceDescriptors.length; j++) { console.info(`Id: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].id}`); console.info(`Type: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].deviceType}`); @@ -3072,27 +3434,145 @@ audioStreamManager.on('audioCapturerChange', (AudioCapturerChangeInfoArray) => }); ``` -### off('audioCapturerChange')9+ +### off('audioCapturerChange')9+ + +off(type: "audioCapturerChange"): void; + +取消监听音频采集器更改事件。 + +**系统能力:** SystemCapability.Multimedia.Audio.Capturer + +**参数:** + +| 名称 | 类型 | 必填 | 说明 | +| -------- | -------- | --- | ------------------------------------------------------------- | +| type | string |是 | 事件类型,支持的事件`'audioCapturerChange'`:音频采集器更改事件。 | + +**示例:** + +```js +audioStreamManager.off('audioCapturerChange'); +console.info('######### CapturerChange Off is called #########'); + +``` + +### isActive + +isActive(volumeType: AudioVolumeType, callback: AsyncCallback<boolean>): void + +获取指定音量流是否为活跃状态,使用callback方式异步返回结果。 + +**系统能力:** SystemCapability.Multimedia.Audio.Volume + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | ----------------------------------- | ---- | ------------------------------------------------- | +| volumeType | [AudioVolumeType](#audiovolumetype) | 是 | 音量流类型。 | +| callback | AsyncCallback<boolean> | 是 | 回调返回流的活跃状态,true为活跃,false为不活跃。 | + +**示例:** + +```js +audioStreamManager.isActive(audio.AudioVolumeType.MEDIA, (err, value) => { + if (err) { + console.error(`Failed to obtain the active status of the stream. ${err}`); + return; + } + console.info(`Callback invoked to indicate that the active status of the stream is obtained ${value}.`); +}); +``` + +### isActive + +isActive(volumeType: AudioVolumeType): Promise<boolean> + +获取指定音量流是否为活跃状态,使用Promise方式异步返回结果。 + +**系统能力:** SystemCapability.Multimedia.Audio.Volume + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | ----------------------------------- | ---- | ------------ | +| volumeType | [AudioVolumeType](#audiovolumetype) | 是 | 音量流类型。 | + +**返回值:** + +| 类型 | 说明 | +| ---------------------- | -------------------------------------------------------- | +| Promise<boolean> | Promise回调返回流的活跃状态,true为活跃,false为不活跃。 | + +**示例:** + +```js +audioStreamManager.isActive(audio.AudioVolumeType.MEDIA).then((value) => { + console.info(`Promise returned to indicate that the active status of the stream is obtained ${value}.`); +}); +``` + +### isAudioRendererLowLatencySupported9+ + +isAudioRendererLowLatencySupported(streaminfo: AudioStreamInfo, callback: Callback<boolean>): void; + +检查系统是否支持音频渲染器中的低延迟配置。使用callback异步回调。 + +**系统能力:** SystemCapability.Multimedia.Audio.Renderer + +**参数:** + +| 名称 | 类型 | 必填 | 说明 | +| ---------- | ----------------------- | -------- | --------------------------------------- | +| streaminfo | [AudioStreamInfo](#audiostreaminfo8) | 是 | 音频渲染器流信息。 | +| callback | Callback<boolean> | 是 | 返回系统是否支持音频渲染器中的低延迟配置。 | + +**示例:** + +```js +let AudioStreamInfo = { + samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_44100, + channels: audio.AudioChannel.CHANNEL_1, + sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE, + encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW +} +audioStreamManager.isAudioRendererLowLatencySupported(AudioStreamInfo, (result) => { + console.info(`isAudioRendererLowLatencySupported success var ${result}`); +}); +``` + +### isAudioRendererLowLatencySupported9+ -off(type: "audioCapturerChange"); +isAudioRendererLowLatencySupported(streaminfo: AudioStreamInfo): Promise<boolean> -取消监听音频采集器更改事件。 +检查系统是否支持音频渲染器中的低延迟配置。使用Promise方式异步返回结果。 -**系统能力:** SystemCapability.Multimedia.Audio.Capturer +**系统能力:** SystemCapability.Multimedia.Audio.Renderer **参数:** -| 名称 | 类型 | 必填 | 说明 | -| -------- | -------- | --- | ------------------------------------------------------------- | -| type | string |是 | 事件类型,支持的事件`'audioCapturerChange'`:音频采集器更改事件。 | +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | ------------------------------------ | ---- | ------------| +| streaminfo | [AudioStreamInfo](#audiostreaminfo8) | 是 | 数据流信息 | + +**返回值:** + +| 类型 | 说明 | +| ------------------- | ---------------------------------------------------- | +| Promise<void> | Promise方式异步返回系统是否支持音频渲染器中的低延迟配置。 | **示例:** ```js -audioStreamManager.off('audioCapturerChange'); -console.info('######### CapturerChange Off is called #########'); - +let AudioStreamInfo = { + samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_44100, + channels: audio.AudioChannel.CHANNEL_1, + sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE, + encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW +} +let result = audioStreamManager.isAudioRendererLowLatencySupported(AudioStreamInfo); +console.info(`isAudioRendererLowLatencySupported success var ${result}`); ``` + ## AudioRoutingManager9+ 音频路由管理。在使用AudioRoutingManager的接口前,需要使用[getRoutingManager](#getroutingmanager9)获取AudioRoutingManager实例。 @@ -3183,6 +3663,15 @@ on(type: 'deviceChange', deviceFlag: DeviceFlag, callback: Callback | 是 | 获取设备更新详情。 | +**错误码:** + +以下错误码的详细介绍请参见[音频错误码](../errorcodes/errorcode-audio.md)。 + +| 错误码ID | 错误信息 | +| ------- | --------------------------------------------| +| 401 | if input parameter type or number mismatch. | +| 6800101 | if input parameter value error. | + **示例:** ```js @@ -3217,6 +3706,15 @@ off(type: 'deviceChange', callback?: Callback): void | type | string | 是 | 订阅的事件的类型。支持事件:'deviceChange' | | callback | Callback<[DeviceChangeAction](#devicechangeaction)> | 否 | 获取设备更新详情。 | +**错误码:** + +以下错误码的详细介绍请参见[音频错误码](../errorcodes/errorcode-audio.md)。 + +| 错误码ID | 错误信息 | +| ------- | --------------------------------------------| +| 401 | if input parameter type or number mismatch. | +| 6800101 | if input parameter value error. | + **示例:** ```js @@ -3272,32 +3770,6 @@ async function getRoutingManager(){ } ``` -### on('micStateChange')9+ - -on(type: 'micStateChange', callback: Callback<MicStateChangeEvent>): void - -监听系统麦克风状态更改事件 - -目前此订阅接口在单进程多AudioManager实例的使用场景下,仅最后一个实例的订阅生效,其他实例的订阅会被覆盖(即使最后一个实例没有进行订阅),因此推荐使用单一AudioManager实例进行开发。 - -**系统能力:** SystemCapability.Multimedia.Audio.Device - -**参数:** - -| 参数名 | 类型 | 必填 | 说明 | -| -------- | -------------------------------------- | ---- | ------------------------------------------------------------ | -| type | string | 是 | 事件回调类型,支持的事件为:'micStateChange'(系统麦克风状态变化事件,检测到系统麦克风状态改变时,触发该事件)。 | -| callback | Callback<[MicStateChangeEvent](#micstatechangeevent9)> | 是 | 回调方法,返回变更后的麦克风状态。 | - -**示例:** - -```js -let audioManager = audio.getAudioManager(); -audioManager.getRoutingManager.on('micStateChange', (micStateChange) => { - console.info(`Current microphone status is: ${micStateChange.mute} `); -}); -``` - ### selectInputDevice9+ selectInputDevice(inputAudioDevices: AudioDeviceDescriptors): Promise<void> @@ -3343,6 +3815,118 @@ async function getRoutingManager(){ } ``` +### setCommunicationDevice + +setCommunicationDevice(deviceType: CommunicationDeviceType, active: boolean, callback: AsyncCallback<void>): void + +设置通信设备激活状态,使用callback方式异步返回结果。 + +**系统能力:** SystemCapability.Multimedia.Audio.Communication + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | ------------------------------------- | ---- | ------------------------ | +| deviceType | [CommunicationDeviceType](#communicationdevicetype9) | 是 | 音频设备类型。 | +| active | boolean | 是 | 设备激活状态。 | +| callback | AsyncCallback<void> | 是 | 回调返回设置成功或失败。 | + +**示例:** + +```js +audioRoutingManager.setCommunicationDevice(audio.ActiveDeviceType.SPEAKER, true, (err) => { + if (err) { + console.error(`Failed to set the active status of the device. ${err}`); + return; + } + console.info('Callback invoked to indicate that the device is set to the active status.'); +}); +``` + +### setCommunicationDevice + +setCommunicationDevice(deviceType: CommunicationDeviceType, active: boolean): Promise<void> + +设置通信设备激活状态,使用Promise方式异步返回结果。 + +**系统能力:** SystemCapability.Multimedia.Audio.Communication + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | ----------------------------------------------------- | ---- | ------------------ | +| deviceType | [CommunicationDeviceType](#communicationdevicetype9) | 是 | 活跃音频设备类型。 | +| active | boolean | 是 | 设备激活状态。 | + +**返回值:** + +| 类型 | 说明 | +| ------------------- | ------------------------------- | +| Promise<void> | Promise回调返回设置成功或失败。 | + +**示例:** + +```js +audioRoutingManager.setCommunicationDevice(audio.ActiveDeviceType.SPEAKER, true).then(() => { + console.info('Promise returned to indicate that the device is set to the active status.'); +}); +``` + +### isCommunicationDeviceActive + +isCommunicationDeviceActive(deviceType: CommunicationDeviceType, callback: AsyncCallback<boolean>): void + +获取指定通信设备的激活状态,使用callback方式异步返回结果。 + +**系统能力:** SystemCapability.Multimedia.Audio.Communication + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | ---------------------------------------------------- | ---- | ------------------------ | +| deviceType | [CommunicationDeviceType](#communicationdevicetype9) | 是 | 活跃音频设备类型。 | +| callback | AsyncCallback<boolean> | 是 | 回调返回设备的激活状态。 | + +**示例:** + +```js +audioRoutingManager.isCommunicationDeviceActive(audio.ActiveDeviceType.SPEAKER, (err, value) => { + if (err) { + console.error(`Failed to obtain the active status of the device. ${err}`); + return; + } + console.info('Callback invoked to indicate that the active status of the device is obtained.'); +}); +``` + +### isCommunicationDeviceActive + +isCommunicationDeviceActive(deviceType: CommunicationDeviceType): Promise<boolean> + +获取指定通信设备的激活状态,使用Promise方式异步返回结果。 + +**系统能力:** SystemCapability.Multimedia.Audio.Communication + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | ---------------------------------------------------- | ---- | ------------------ | +| deviceType | [CommunicationDeviceType](#communicationdevicetype9) | 是 | 活跃音频设备类型。 | + +**返回值:** + +| Type | Description | +| ---------------------- | ------------------------------- | +| Promise<boolean> | Promise回调返回设备的激活状态。 | + +**示例:** + +```js +audioRoutingManager.isCommunicationDeviceActive(audio.ActiveDeviceType.SPEAKER).then((value) => { + console.info(`Promise returned to indicate that the active status of the device is obtained ${value}.`); +}); +``` + ### selectOutputDevice9+ selectOutputDevice(outputAudioDevices: AudioDeviceDescriptors, callback: AsyncCallback<void>): void @@ -3575,7 +4159,7 @@ audioStreamManager.on('audioRendererChange', (AudioRendererChangeInfoArray) => console.info(`Stream for ${i} is: ${AudioRendererChangeInfoArray[i].rendererInfo.usage}`); console.info(`Flag ${i} is: ${AudioRendererChangeInfoArray[i].rendererInfo.rendererFlags}`); console.info(`State for ${i} is: ${AudioRendererChangeInfoArray[i].rendererState}`); - var devDescriptor = AudioRendererChangeInfoArray[i].deviceDescriptors; + let devDescriptor = AudioRendererChangeInfoArray[i].deviceDescriptors; for (let j = 0; j < AudioRendererChangeInfoArray[i].deviceDescriptors.length; j++) { console.info(`Id: ${i} : ${AudioRendererChangeInfoArray[i].deviceDescriptors[j].id}`); console.info(`Type: ${i} : ${AudioRendererChangeInfoArray[i].deviceDescriptors[j].deviceType}`); @@ -3638,7 +4222,7 @@ audioStreamManager.on('audioCapturerChange', (AudioCapturerChangeInfoArray) => console.info(`Src for ${i} is: ${AudioCapturerChangeInfoArray[i].capturerInfo.source}`); console.info(`Flag ${i} is: ${AudioCapturerChangeInfoArray[i].capturerInfo.capturerFlags}`); console.info(`State for ${i} is: ${AudioCapturerChangeInfoArray[i].capturerState}`); - var devDescriptor = AudioCapturerChangeInfoArray[i].deviceDescriptors; + let devDescriptor = AudioCapturerChangeInfoArray[i].deviceDescriptors; for (let j = 0; j < AudioCapturerChangeInfoArray[i].deviceDescriptors.length; j++) { console.info(`Id: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].id}`); console.info(`Type: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].deviceType}`); @@ -3853,6 +4437,52 @@ audioRenderer.getStreamInfo().then((streamInfo) => { }); ``` +### getAudioStreamId9+ + +getAudioStreamId(callback: AsyncCallback): void + +获取音频流id,使用callback方式异步返回结果。 + +**系统能力:** SystemCapability.Multimedia.Audio.Renderer + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| :------- | :--------------------------------------------------- | :--- | :------------------- | +| callback | AsyncCallback<[number]\> | 是 | 回调返回音频流id。 | + +**示例:** + +```js +audioRenderer.getAudioStreamId((err, streamid) => { + console.info(`Renderer GetStreamId: ${streamid}`); +}); +``` + +### getAudioStreamId9+ + +getAudioStreamId(): Promise + +获取音频流id,使用Promise方式异步返回结果。 + +**系统能力:** SystemCapability.Multimedia.Audio.Renderer + +**返回值:** + +| 类型 | 说明 | +| :--------------------------------------------- | :--------------------- | +| Promise<[number]\> | Promise返回音频流id. | + +**示例:** + +```js +audioRenderer.getAudioStreamId().then((streamid) => { + console.info(`Renderer getAudioStreamId: ${streamid}`); +}).catch((err) => { + console.error(`ERROR: ${err}`); +}); +``` + ### start8+ start(callback: AsyncCallback): void @@ -4446,27 +5076,92 @@ audioRenderer.setInterruptMode(mode, (err, data)=>{ console.info('setInterruptMode Success!'); }); ``` -### on('interrupt')9+ -on(type: 'interrupt', callback: Callback\): void +### setVolume9+ -监听音频中断事件。使用callback获取中断事件。 +setVolume(volume: number): Promise<void> + +设置应用的音量。使用Promise异步回调。 + +**系统能力:** SystemCapability.Multimedia.Audio.Renderer + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| ---------- | ------- | ------ | ---------- | +| volume | number | 是 | 音量值。 | + +**返回值:** + +| 类型 | 说明 | +| ------------------- | ----------------------------- | +| Promise<void> | 以Promise对象返回结果,设置成功时返回undefined,否则返回error。 | + +**示例:** + +```js +audioRenderer.setVolume(10).then(data=>{ + console.info('setVolume Success!'); +}).catch((err) => { + console.error(`setVolume Fail: ${err}`); +}); +``` +### setVolume9+ + +setVolume(volume: number, callback: AsyncCallback\): void + +设置应用的音量。使用Callback回调返回执行结果。 **系统能力:** SystemCapability.Multimedia.Audio.Renderer **参数:** +| 参数名 | 类型 | 必填 | 说明 | +| ------- | -----------| ------ | -------------- | +|volume | number | 是 | 音量值。| +|callback | AsyncCallback\ | 是 |回调返回执行结果。| + +**示例:** + +```js +audioRenderer.setVolume(10, (err, data)=>{ + if(err){ + console.error(`setVolume Fail: ${err}`); + } + console.info('setVolume Success!'); +}); +``` + +### on('audioInterrupt')9+ + +on(type: 'audioInterrupt', callback: Callback\): void + +监听音频中断事件。使用callback获取中断事件。 + +**系统能力:** SystemCapability.Multimedia.Audio.Interrupt + +**参数:** + | 参数名 | 类型 | 必填 | 说明 | | -------- | -------------------------------------------- | ---- | ------------------------------------------------------------ | -| type | string | 是 | 事件回调类型,支持的事件为:'interrupt'(中断事件被触发,音频播放被中断。) | +| type | string | 是 | 事件回调类型,支持的事件为:'audioInterrupt'(中断事件被触发,音频播放被中断。) | | callback | Callback<[InterruptEvent](#interruptevent9)> | 是 | 被监听的中断事件的回调。 | +**错误码:** + +以下错误码的详细介绍请参见[音频错误码](../errorcodes/errorcode-audio.md)。 + +| 错误码ID | 错误信息 | +| ------- | --------------------------------------------| +| 401 | if input parameter type or number mismatch. | +| 6800101 | if input parameter value error. | + **示例:** ```js let isPlay; let started; -audioRenderer.on('interrupt', async(interruptEvent) => { +audioRenderer.on('audioInterrupt', async(interruptEvent) => { if (interruptEvent.forceType == audio.InterruptForceType.INTERRUPT_FORCE) { switch (interruptEvent.hintType) { case audio.InterruptHint.INTERRUPT_HINT_PAUSE: @@ -4525,7 +5220,7 @@ on(type: "markReach", frame: number, callback: Callback<number>): void | :------- | :----------------------- | :--- | :---------------------------------------- | | type | string | 是 | 事件回调类型,支持的事件为:'markReach'。 | | frame | number | 是 | 触发事件的帧数。 该值必须大于 0。 | -| callback | Callback\ | 是 | 触发事件时调用的回调。 | +| callback | Callback | 是 | 触发事件时调用的回调。 | **示例:** @@ -4572,7 +5267,7 @@ on(type: "periodReach", frame: number, callback: Callback<number>): void | :------- | :----------------------- | :--- | :------------------------------------------ | | type | string | 是 | 事件回调类型,支持的事件为:'periodReach'。 | | frame | number | 是 | 触发事件的帧数。 该值必须大于 0。 | -| callback | Callback\ | 是 | 触发事件时调用的回调。 | +| callback | Callback | 是 | 触发事件时调用的回调。 | **示例:** @@ -4768,6 +5463,52 @@ audioCapturer.getStreamInfo().then((audioParamsGet) => { }); ``` +### getAudioStreamId9+ + +getAudioStreamId(callback: AsyncCallback): void + +获取音频流id,使用callback方式异步返回结果。 + +**系统能力:** SystemCapability.Multimedia.Audio.Capturer + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| :------- | :--------------------------------------------------- | :--- | :------------------- | +| callback | AsyncCallback<[number]\> | 是 | 回调返回音频流id。 | + +**示例:** + +```js +audioCapturer.getAudioStreamId((err, streamid) => { + console.info(`audioCapturer GetStreamId: ${streamid}`); +}); +``` + +### getAudioStreamId9+ + +getAudioStreamId(): Promise + +获取音频流id,使用Promise方式异步返回结果。 + +**系统能力:** SystemCapability.Multimedia.Audio.Capturer + +**返回值:** + +| 类型 | 说明 | +| :--------------------------------------------- | :--------------------- | +| Promise<[number]\> | Promise返回音频流id. | + +**示例:** + +```js +audioCapturer.getAudioStreamId().then((streamid) => { + console.info(`audioCapturer getAudioStreamId: ${streamid}`); +}).catch((err) => { + console.error(`ERROR: ${err}`); +}); +``` + ### start8+ start(callback: AsyncCallback): void @@ -4935,7 +5676,6 @@ audioCapturer.release().then(() => { }); ``` - ### read8+ read(size: number, isBlockingRead: boolean, callback: AsyncCallback): void @@ -4969,7 +5709,6 @@ audioCapturer.read(bufferSize, true, async(err, buffer) => { }); ``` - ### read8+ read(size: number, isBlockingRead: boolean): Promise @@ -5009,7 +5748,6 @@ audioCapturer.read(bufferSize, true).then((buffer) => { }); ``` - ### getAudioTime8+ getAudioTime(callback: AsyncCallback): void @@ -5032,7 +5770,6 @@ audioCapturer.getAudioTime((err, timestamp) => { }); ``` - ### getAudioTime8+ getAudioTime(): Promise @@ -5057,7 +5794,6 @@ audioCapturer.getAudioTime().then((audioTime) => { }); ``` - ### getBufferSize8+ getBufferSize(callback: AsyncCallback): void @@ -5087,7 +5823,6 @@ audioCapturer.getBufferSize((err, bufferSize) => { }); ``` - ### getBufferSize8+ getBufferSize(): Promise @@ -5114,7 +5849,6 @@ audioCapturer.getBufferSize().then((data) => { }); ``` - ### on('markReach')8+ on(type: "markReach", frame: number, callback: Callback<number>): void @@ -5129,7 +5863,7 @@ on(type: "markReach", frame: number, callback: Callback<number>): void | :------- | :---------------------- | :--- | :----------------------------------------- | | type | string | 是 | 事件回调类型,支持的事件为:'markReach'。 | | frame | number | 是 | 触发事件的帧数。 该值必须大于0。 | -| callback | Callback\ | 是 | 使用callback方式异步返回被触发事件的回调。 | +| callback | Callback | 是 | 使用callback方式异步返回被触发事件的回调。 | **示例:** @@ -5175,7 +5909,7 @@ on(type: "periodReach", frame: number, callback: Callback<number>): void | :------- | :----------------------- | :--- | :------------------------------------------ | | type | string | 是 | 事件回调类型,支持的事件为:'periodReach'。 | | frame | number | 是 | 触发事件的帧数。 该值必须大于0。 | -| callback | Callback\ | 是 | 使用callback方式异步返回被触发事件的回调 | +| callback | Callback | 是 | 使用callback方式异步返回被触发事件的回调 | **示例:** @@ -5275,6 +6009,8 @@ audioCapturer.on('stateChange', (state) => { 提供播放和管理DTMF(Dual Tone Multi Frequency,双音多频)音调的方法,包括各种系统监听音调、专有音调,如拨号音、通话回铃音等。 +**系统接口:** 该接口为系统接口 + ### load9+ load(type: ToneType, callback: AsyncCallback<void>): void diff --git a/zh-cn/application-dev/reference/errorcodes/errorcode-audio.md b/zh-cn/application-dev/reference/errorcodes/errorcode-audio.md new file mode 100644 index 0000000000000000000000000000000000000000..f29df4229816800cf2483359f274ef0daab75ef8 --- /dev/null +++ b/zh-cn/application-dev/reference/errorcodes/errorcode-audio.md @@ -0,0 +1,131 @@ +# Audio错误码 + +## 6800101 无效入参 + +**错误信息** + +invalid parameter. + +**错误描述** +调用接口时,传入的参数无效。 + +**可能原因** + +1. 参数拼写错误。 +2. 参数类型错误。 + +**处理步骤** + +根据接口文档,传入正确的入参。 + +## 6800102 分配内存失败 + +**错误信息** + +allocate memory failed. + +**错误描述** + +调用接口时,分配内存失败或者出现空指针。 + +**可能原因** + +1. 系统内存压力大,没有足够的内存用来映射。 +2. 对于失效的实例,没有及时销毁释放内存。 + +**处理步骤** + +1. 销毁当前实例。 +2. 重新创建实例,如果重新创建失败,则停止相关操作。 + +## 6800103 状态不支持 + +**错误信息** + +Operation not permit at current state. + +**错误描述** + +当前状态不支持此操作。 + +**可能原因** + +当前状态机不支持操作。比如未启动流就播放数据等。 + +**处理步骤** + +1. 确认当前状态是否支持当前操作。 +2. 把实例切换到正确的状态进行正确的操作。 + +## 6800104 参数选项不支持 + +**错误信息** + +unsupported operation. + +**错误描述** + +参数选项不支持。 + +**可能原因** + +api已经支持,但是入参的某些枚举不支持。 + +**处理步骤** + +1. 确认当前api支持的枚举或其他入参。 +2. 改用支持的参数选项。 + +## 6800105 处理超时 + +**错误信息** + +time out. + +**错误描述** + +等待处理超时。 + +**可能原因** + +等待外部处理超时,比如从应用pull数据超时。 + +**处理步骤** + +控制数据填写的时间(例如增加延迟处理)。 + +## 6800201 音频流数量达到极限 + +**错误信息** + +stream number limited. + +**错误描述** + +创建的音频流达到最大数。 + +**可能原因** + +无效的音频流没有及时释放。 + +**处理步骤** + +释放其他无效的音频流释放资源。 + +## 6800301 系统处理异常 + +**错误信息** + +system error. + +**错误描述** + +系统处理异常。 + +**可能原因** + +系统处理异常,比如系统服务重启、ipc异常等。 + +**处理步骤** +重新创建业务。 +