# Interface (AudioVolumeManager) > **说明:** > > - 本模块首批接口从API version 7开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 > - 本Interface首批接口从API version 9开始支持。 音量管理。 在使用AudioVolumeManager的接口之前,需先通过[getVolumeManager](arkts-apis-audio-AudioManager.md#getvolumemanager9)获取AudioVolumeManager实例。 ## 导入模块 ```ts import { audio } from '@kit.AudioKit'; ``` ## getVolumeGroupManager9+ getVolumeGroupManager(groupId: number, callback: AsyncCallback\): void 获取音频组音量管理器实例。使用callback异步回调。 **系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** | 参数名 | 类型 | 必填 | 说明 | | ---------- | ------------------------------------------------------------ | ---- |-----------------------------------------------------------| | groupId | number | 是 | 音量组id,默认使用DEFAULT_VOLUME_GROUP_ID。 | | callback | AsyncCallback<[AudioVolumeGroupManager](arkts-apis-audio-AudioVolumeGroupManager.md)> | 是 | 回调函数。当获取音频组音量管理器实例成功,err为undefined,data为获取到的音频组音量管理器实例;否则为错误对象。 | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; let groupId: number = audio.DEFAULT_VOLUME_GROUP_ID; audioVolumeManager.getVolumeGroupManager(groupId, (err: BusinessError, value: audio.AudioVolumeGroupManager) => { if (err) { console.error(`Failed to getVolumeGroupManager. Code: ${err.code}, message: ${err.message}`); return; } console.info('Succeeded in doing getVolumeGroupManager.'); }); ``` ## getVolumeGroupManager9+ getVolumeGroupManager(groupId: number\): Promise 获取音频组音量管理器实例。使用Promise异步回调。 **系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** | 参数名 | 类型 | 必填 | 说明 | | ---------- | ---------------------------------------- | ---- |----------------------------------| | groupId | number | 是 | 音量组id,默认使用DEFAULT_VOLUME_GROUP_ID。| **返回值:** | 类型 | 说明 | | ------------------- | ----------------------------- | | Promise< [AudioVolumeGroupManager](arkts-apis-audio-AudioVolumeGroupManager.md) > | Promise对象,返回音频组音量管理器实例。 | **示例:** ```ts import { audio } from '@kit.AudioKit'; import { BusinessError } from '@kit.BasicServicesKit'; let groupId: number = audio.DEFAULT_VOLUME_GROUP_ID; audioVolumeManager.getVolumeGroupManager(groupId).then((audioVolumeGroupManager: audio.AudioVolumeGroupManager) => { console.info('Succeeded in doing getVolumeGroupManager.'); }).catch((err: BusinessError) => { console.error(`Failed to getVolumeGroupManager. Code: ${err.code}, message: ${err.message}`); }); ``` ## getVolumeGroupManagerSync10+ getVolumeGroupManagerSync(groupId: number\): AudioVolumeGroupManager 获取音频组音量管理器实例。同步返回结果。 **系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** | 参数名 | 类型 | 必填 | 说明 | | ---------- | ---------------------------------------- | ---- |----------------------------------| | groupId | number | 是 | 音量组id,默认使用DEFAULT_VOLUME_GROUP_ID。| **返回值:** | 类型 | 说明 | | ------------------- | ----------------------------- | | [AudioVolumeGroupManager](arkts-apis-audio-AudioVolumeGroupManager.md) | 音频组音量管理器实例。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[Audio错误码](errorcode-audio.md)。 | 错误码ID | 错误信息 | | ------- | --------------------------------------------| | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. | | 6800101 | Parameter verification failed. | **示例:** ```ts import { BusinessError } from '@kit.BasicServicesKit'; try { let audioVolumeGroupManager: audio.AudioVolumeGroupManager = audioVolumeManager.getVolumeGroupManagerSync(audio.DEFAULT_VOLUME_GROUP_ID); console.info(`Get audioVolumeGroupManager success.`); } catch (err) { let error = err as BusinessError; console.error(`Failed to get audioVolumeGroupManager, error: ${error}`); } ``` ## getAppVolumePercentage19+ getAppVolumePercentage(): Promise 获取应用的音量(范围为0到100)。使用Promise异步回调。 **系统能力:** SystemCapability.Multimedia.Audio.Volume **返回值:** | 类型 | 说明 | | ------------------- |--------------------| | Promise<number> | Promise对象,返回应用的音量。 | **示例:** ```ts import { audio } from '@kit.AudioKit'; audioVolumeManager.getAppVolumePercentage().then((value: number) => { console.info(`app volume is ${value}.`); }); ``` ## setAppVolumePercentage19+ setAppVolumePercentage(volume: number\): Promise 设置应用的音量(范围为0到100)。使用Promise异步回调。 **系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** | 参数名 | 类型 | 必填 | 说明 | | ---------- | ---------------------------------------- | ---- |----------| | volume | number | 是 | 要设置的音量值。 | **返回值:** | 类型 | 说明 | | ------------------- | ------------------------------- | | Promise<void> | Promise对象。无返回结果的Promise对象。 | **错误码:** 以下错误码的详细介绍请参见[Audio错误码](errorcode-audio.md)。 | 错误码ID | 错误信息 | | ------- | --------------------------------------------| | 6800101 | Parameter verification failed.| | 6800301 | Crash or blocking occurs in system process. | **示例:** ```ts import { audio } from '@kit.AudioKit'; audioVolumeManager.setAppVolumePercentage(20).then(() => { console.info(`set app volume success.`); }); ``` ## on('volumeChange')(deprecated) on(type: 'volumeChange', callback: Callback\): void 监听系统音量变化事件(当系统音量发生变化时触发)。使用callback异步回调。 > **说明:** > 从API version 12开始支持,从API version 20开始废弃,建议使用[on('streamVolumeChange')](arkts-apis-audio-AudioVolumeManager.md#onstreamvolumechange20)替代。 **系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------------------------------------- | ---- | ------------------------------------------------------------ | | type | string | 是 | 事件回调类型,支持的事件为'volumeChange',当系统音量发生变化时,触发该事件。 | | callback | Callback<[VolumeEvent](arkts-apis-audio-i.md#volumeevent9)> | 是 | 回调函数,返回变化后的音量信息。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[Audio错误码](errorcode-audio.md)。 | 错误码ID | 错误信息 | | ------- | --------------------------------------------| | 401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. | | 6800101 | Parameter verification failed. | **示例:** ```ts audioVolumeManager.on('volumeChange', (volumeEvent: audio.VolumeEvent) => { console.info(`VolumeType of stream: ${volumeEvent.volumeType} `); console.info(`Volume level: ${volumeEvent.volume} `); console.info(`Whether to updateUI: ${volumeEvent.updateUi} `); }); ``` ## off('volumeChange')(deprecated) off(type: 'volumeChange', callback?: Callback\): void 取消监听系统音量变化事件。使用callback异步回调。 > **说明:** > 从API version 12开始支持,从API version 20开始废弃,建议使用[off('streamVolumeChange')](arkts-apis-audio-AudioVolumeManager.md#offstreamvolumechange20)替代。 **系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------------------------------------- | ---- | ------------------------------------------------------------ | | type | string | 是 | 事件回调类型,支持的事件为'volumeChange',当取消监听系统音量变化事件时,触发该事件。 | | callback | Callback<[VolumeEvent](arkts-apis-audio-i.md#volumeevent9)> | 否 | 回调函数,返回变化后的音量信息。 | **错误码:** 以下错误码的详细介绍请参见[通用错误码说明文档](../errorcode-universal.md)和[Audio错误码](errorcode-audio.md)。 | 错误码ID | 错误信息 | | ------- | --------------------------------------------| | 401 | Parameter error. Possible causes: 1.Mandatory parameters missing; 2.Incorrect parameter types. | | 6800101 | Parameter verification failed. | **示例:** ```ts // 取消该事件的所有监听。 audioVolumeManager.off('volumeChange'); // 同一监听事件中,on方法和off方法传入callback参数一致,off方法取消对应on方法订阅的监听。 let volumeChangeCallback = (volumeEvent: audio.VolumeEvent) => { console.info(`VolumeType of stream: ${volumeEvent.volumeType} `); console.info(`Volume level: ${volumeEvent.volume} `); console.info(`Whether to updateUI: ${volumeEvent.updateUi} `); }; audioVolumeManager.on('volumeChange', volumeChangeCallback); audioVolumeManager.off('volumeChange', volumeChangeCallback); ``` ## on('appVolumeChange')19+ on(type: 'appVolumeChange', callback: Callback\): void 监听当前应用应用级音量变化事件(当应用级音量发生变化时触发)。使用callback异步回调。 **系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------------------------------------- | ---- | ------------------------------------------------------------ | | type | string | 是 | 事件回调类型,支持的事件为'appVolumeChange',当应用级音量发生变化时,触发该事件。 | | callback | Callback<[VolumeEvent](arkts-apis-audio-i.md#volumeevent9)> | 是 | 回调函数,返回变化后的音量信息。 | **错误码:** 以下错误码的详细介绍请参见[Audio错误码](errorcode-audio.md)。 | 错误码ID | 错误信息 | | ------- | --------------------------------------------| | 6800101 | Parameter verification failed. | **示例:** ```ts audioVolumeManager.on('appVolumeChange', (volumeEvent: audio.VolumeEvent) => { console.info(`VolumeType of stream: ${volumeEvent.volumeType} `); console.info(`Volume level: ${volumeEvent.volume} `); console.info(`Whether to updateUI: ${volumeEvent.updateUi} `); }); ``` ## off('appVolumeChange')19+ off(type: 'appVolumeChange', callback?: Callback\): void 取消监听当前应用应用级音量变化事件。使用callback异步回调。 **系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------------------------------------- | ---- | ------------------------------------------------------------ | | type | string | 是 | 事件回调类型,支持的事件为'appVolumeChange',当取消监听当前应用应用级音量变化事件时,触发该事件。 | | callback | Callback<[VolumeEvent](arkts-apis-audio-i.md#volumeevent9)> | 否 | 回调函数,返回变化后的音量信息。 | **错误码:** 以下错误码的详细介绍请参见[Audio错误码](errorcode-audio.md)。 | 错误码ID | 错误信息 | | ------- | --------------------------------------------| | 6800101 | Parameter verification failed. | **示例:** ```ts // 取消该事件的所有监听。 audioVolumeManager.off('appVolumeChange'); // 同一监听事件中,on方法和off方法传入callback参数一致,off方法取消对应on方法订阅的监听。 let appVolumeChangeCallback = (volumeEvent: audio.VolumeEvent) => { console.info(`VolumeType of stream: ${volumeEvent.volumeType} `); console.info(`Volume level: ${volumeEvent.volume} `); console.info(`Whether to updateUI: ${volumeEvent.updateUi} `); }; audioVolumeManager.on('appVolumeChange', appVolumeChangeCallback); audioVolumeManager.off('appVolumeChange', appVolumeChangeCallback); ``` ## getVolumeByStream20+ getVolumeByStream(streamUsage: StreamUsage): number 获取指定音频流的音量。 **系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------------------------------------- | ---- | ------------------------------------------------------------ | | streamUsage | [StreamUsage](arkts-apis-audio-e.md#streamusage) | 是 | 需要获取音量值的音频流。 | **返回值:** | 类型 | 说明 | | ------------------- | ----------------------------- | | number | 音量值。 | **错误码:** 以下错误码的详细介绍请参见[Audio错误码](errorcode-audio.md)。 | 错误码ID | 错误信息 | | ------- | --------------------------------------------| | 6800101 | Parameter verification failed. | **示例:** ```ts // 获取指定音频流的音量值。 import { BusinessError } from '@kit.BasicServicesKit'; import { audio } from '@kit.AudioKit' try { let volume : number = audio.getAudioManager().getVolumeManager().getVolumeByStream(audio.StreamUsage.STREAM_USAGE_MUSIC); console.info(`Obtains the volume of a stream success.`); } catch (err) { let error = err as BusinessError; console.error(`Failed to obtains the volume of a stream, error: ${error}`); } ``` ## getMinVolumeByStream20+ getMinVolumeByStream(streamUsage: StreamUsage): number 获取指定音频流的最小音量。 **系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------------------------------------- | ---- | ------------------------------------------------------------ | | streamUsage | [StreamUsage](arkts-apis-audio-e.md#streamusage) | 是 | 需要获取的最小音量值的音频流。 | **返回值:** | 类型 | 说明 | | ------------------- | ----------------------------- | | number | 音量值。 | **错误码:** 以下错误码的详细介绍请参见[Audio错误码](errorcode-audio.md)。 | 错误码ID | 错误信息 | | ------- | --------------------------------------------| | 6800101 | Parameter verification failed. | **示例:** ```ts // 获取指定音频流的最小音量。 import { BusinessError } from '@kit.BasicServicesKit'; import { audio } from '@kit.AudioKit' try { let volume : number = audio.getAudioManager().getVolumeManager().getMinVolumeByStream(audio.StreamUsage.STREAM_USAGE_MUSIC); console.info(`Obtains the minimum volume allowed for a stream success.`); } catch (err) { let error = err as BusinessError; console.error(`Failed to obtains the minimum volume allowed for a stream, error: ${error}`); } ``` ## getMaxVolumeByStream20+ getMaxVolumeByStream(streamUsage: StreamUsage): number 获取指定音频流的最大音量。 **系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------------------------------------- | ---- | ------------------------------------------------------------ | | streamUsage | [StreamUsage](arkts-apis-audio-e.md#streamusage) | 是 | 需要获取的最大音量值的音频流。 | **返回值:** | 类型 | 说明 | | ------------------- | ----------------------------- | | number | 音量值。 | **错误码:** 以下错误码的详细介绍请参见[Audio错误码](errorcode-audio.md)。 | 错误码ID | 错误信息 | | ------- | --------------------------------------------| | 6800101 | Parameter verification failed. | **示例:** ```ts // 获取指定音频流的最大音量。 import { BusinessError } from '@kit.BasicServicesKit'; import { audio } from '@kit.AudioKit' try { let volume : number = audio.getAudioManager().getVolumeManager().getMaxVolumeByStream(audio.StreamUsage.STREAM_USAGE_MUSIC); console.info(`Obtains the maximum volume allowed for a stream success.`); } catch (err) { let error = err as BusinessError; console.error(`Failed to obtains the maximum volume allowed for a stream, error: ${error}`); } ``` ## isSystemMutedForStream20+ isSystemMutedForStream(streamUsage: StreamUsage): boolean 检查指定音频流是否静音。 **系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------------------------------------- | ---- | ------------------------------------------------------------ | | streamUsage | [StreamUsage](arkts-apis-audio-e.md#streamusage) | 是 | 检查是否为静音的音频流。 | **返回值:** | 类型 | 说明 | | ------------------- | ----------------------------- | | boolean | 音频流是否为静音状态,true表示音频流已静音,false表示音频流未静音。 | **错误码:** 以下错误码的详细介绍请参见[Audio错误码](errorcode-audio.md)。 | 错误码ID | 错误信息 | | ------- | --------------------------------------------| | 6800101 | Parameter verification failed. | **示例:** ```ts // 检查指定音频流是否静音。 import { BusinessError } from '@kit.BasicServicesKit'; import { audio } from '@kit.AudioKit' try { let isMuted : boolean = audio.getAudioManager().getVolumeManager().isSystemMutedForStream(audio.StreamUsage.STREAM_USAGE_MUSIC); console.info(`Checks whether the system is muted based on the stream success.`); } catch (err) { let error = err as BusinessError; console.error(`Failed to checks whether the system is muted based on the stream, error: ${error}`); } ``` ## getVolumeInUnitOfDbByStream20+ getVolumeInUnitOfDbByStream(streamUsage: StreamUsage, volumeLevel: number, device: DeviceType): number 获取系统通过音频流、音量等级和设备类型计算出的音量db值。 **系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------------------------------------- | ---- | ------------------------------------------------------------ | | streamUsage | [StreamUsage](arkts-apis-audio-e.md#streamusage) | 是 | 音频流。 | | volumeLevel | number | 是 | 音量值等级。 | | device | [DeviceType](arkts-apis-audio-e.md#devicetype) | 是 | 设备类型。 | **返回值:** | 类型 | 说明 | | ------------------- | ----------------------------- | | number | 音频流的音量db值。 | **错误码:** 以下错误码的详细介绍请参见[Audio错误码](errorcode-audio.md)。 | 错误码ID | 错误信息 | | ------- | --------------------------------------------| | 6800101 | Parameter verification failed. | **示例:** ```ts // 获取系统通过音频流、音量等级和设备类型计算出的音量db值。 import { BusinessError } from '@kit.BasicServicesKit'; import { audio } from '@kit.AudioKit' try { let volumeInDb : number = audio.getAudioManager().getVolumeManager().getVolumeInUnitOfDbByStream(audio.StreamUsage.STREAM_USAGE_MUSIC, 5, audio.DeviceType.SPEAKER); console.info(`Gets the volume db value that system calculate by volume stream, volume level and device type. success.`); } catch (err) { let error = err as BusinessError; console.error(`Failed to gets the volume db value that system calculate by volume stream, volume level and device type., error: ${error}`); } ``` ## on('streamVolumeChange')20+ on(type: 'streamVolumeChange', streamUsage: StreamUsage, callback: Callback\): void 监听系统音频流音量变化事件(当系统音频流音量发生变化时触发)。使用callback异步回调。 **系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------------------------------------- | ---- | ------------------------------------------------------------ | | type | string | 是 | 事件回调类型,支持的事件为'streamVolumeChange',当系统音量发生变化时,触发该事件。 | | streamUsage | [StreamUsage](arkts-apis-audio-e.md#streamusage) | 是 | 音频流使用类型。 | | callback | Callback<[StreamVolumeEvent](arkts-apis-audio-i.md#streamvolumeevent20)> | 是 | 回调函数,返回变化后的音量信息。 | **错误码:** 以下错误码的详细介绍请参见[Audio错误码](errorcode-audio.md)。 | 错误码ID | 错误信息 | | ------- | --------------------------------------------| | 6800101 | Parameter verification failed. | **示例:** ```ts audioVolumeManager.on('streamVolumeChange', audio.StreamUsage.STREAM_USAGE_MUSIC, (streamVolumeEvent: audio.StreamVolumeEvent) => { console.info(`StreamUsage of stream: ${streamVolumeEvent.streamUsage} `); console.info(`Volume level: ${streamVolumeEvent.volume} `); console.info(`Whether to updateUI: ${streamVolumeEvent.updateUi} `); }); ``` ## off('streamVolumeChange')20+ off(type: 'streamVolumeChange', callback?: Callback\): void 取消监听系统音频流音量变化事件(当系统音频流音量发生变化时触发)。使用callback异步回调。 **系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** | 参数名 | 类型 | 必填 | 说明 | | -------- | -------------------------------------- | ---- | ------------------------------------------------------------ | | type | string | 是 | 事件回调类型,支持的事件为'volumeChange',当取消监听系统音量变化事件时,触发该事件。 | | callback | Callback<[StreamVolumeEvent](arkts-apis-audio-i.md#streamvolumeevent20)> | 否 | 回调函数,返回变化后的音量信息。 | **示例:** ```ts // 取消该事件的所有监听。 audioVolumeManager.off('streamVolumeChange'); // 同一监听事件中,on方法和off方法传入callback参数一致,off方法取消对应on方法订阅的监听。 let streamVolumeChangeCallback = (streamVolumeEvent: audio.StreamVolumeEvent) => { console.info(`StreamUsage of stream: ${streamVolumeEvent.streamUsage} `); console.info(`Volume level: ${streamVolumeEvent.volume} `); console.info(`Whether to updateUI: ${streamVolumeEvent.updateUi} `); }; audioVolumeManager.on('streamVolumeChange', audio.StreamUsage.STREAM_USAGE_MUSIC, streamVolumeChangeCallback); audioVolumeManager.off('streamVolumeChange', streamVolumeChangeCallback); ```