# Audio Management ## Modules to Import ``` import audio from '@ohos.multimedia.audio'; ``` ## Required Permissions None ## getAudioManager\(\): AudioManager Obtains an **AudioManager** instance. **Return values** | Type | Description | | -------------- | -------------------------- | | AudioManager | Audio manager. | **Example** ``` var audioManager = audio.getAudioManager(); ``` ## AudioVolumeType Enumerates audio stream types. | Name | Default Value | Description | | -------------- | ------------- | --------------------------------------------------------------------- | | RINGTONE | 2 | Audio stream for ringtones. | | MEDIA | 3 | Audio stream for media purpose. | ## DeviceFlag Enumerates audio device flags. | Name | Default Value | Description | | -------------- | ------------- | --------------------------------------------------------------------- | | OUTPUT_DEVICES_FLAG | 1 | Output device. | | INPUT_DEVICES_FLAG | 2 | Input device. | | ALL_DEVICES_FLAG | 3 | All devices. | ## DeviceRole Enumerates audio device roles. | Name | Default Value | Description | | -------------- | ------------- | --------------------------------------------------------------------- | | INPUT_DEVICE | 1 | Input role. | | OUTPUT_DEVICE | 2 | Output role. | ## DeviceType Enumerates audio device types. | Name | Default Value | Description | | -------------- | ------------- | --------------------------------------------------------------------- | | INVALID | 0 | Invalid device. | | EARPIECE | 1 | Earpiece. | | SPEAKER | 2 | Speaker. | | WIRED_HEADSET | 3 | Wired headset. | | BLUETOOTH_SCO | 7 | Bluetooth device using the synchronous connection oriented (SCO) link. | | BLUETOOTH_A2DP | 8 | Bluetooth device using the advanced audio distribution profile (A2DP). | | MIC | 15 | Microphone. | ## ActiveDeviceType7+ Enumerates active device types. | Name | Default Value | Description | | -------------- | ------------- | --------------------------------------------------------------------- | | SPEAKER | 2 | Speaker. | | BLUETOOTH_SCO | 7 | Bluetooth device using the SCO link. | ## AudioRingMode7+ Enumerates ringer modes. | Name | Default Value | Description | | ------------- | ------------- | --------------------------------------------------------------------- | | RINGER_MODE_SILENT | 0 | Silence mode. | | RINGER_MODE_VIBRATE | 1 | Vibration mode. | | RINGER_MODE_NORMAL | 2 | Normal mode. | ## AudioManager Implements audio volume and audio device management. ### setVolume\(volumeType: AudioVolumeType, volume: number, callback: AsyncCallback\): void Sets the volume for a stream. This method uses an asynchronous callback to return the execution result. **Parameters** | Name | Type | Mandatory | Description | | ------------- | ------------- | ---------------|------------------------------------------------------ | | volumeType | AudioVolumeType | Yes | Audio stream type. | | volume | number | Yes | Volume to set. The value range can be obtained by calling **getMinVolume** and **getMaxVolume**. | | callback | AsyncCallback | Yes | Callback used to return the execution result. | **Return values** None **Example** ``` audioManager.setVolume(audio.AudioVolumeType.MEDIA, 10, (err)=>{ if (err) { console.error('Failed to set the volume. ${err.message}'); return; } console.log('Callback invoked to indicate a successful volume setting.'); }) ``` ### setVolume\(volumeType: AudioVolumeType, volume: number\): Promise Sets the volume for a stream. This method uses a promise to return the execution result. **Parameters** | Name | Type | Mandatory | Description | | ------------- | ------------- | ---------------|------------------------------------------------------ | | volumeType | AudioVolumeType | Yes | Audio stream type. | | volume | number | Yes | Volume to set. The value range can be obtained by calling **getMinVolume** and **getMaxVolume**. | **Return values** | Name | Description | | ------------- | -------------------------------------------------------- | | Promise | Promise used to return the execution result. | **Example** ``` audioManager.setVolume(audio.AudioVolumeType.MEDIA, 10).then(()=> console.log('Promise returned to indicate a successful volume setting.'); ) ``` ### getVolume\(volumeType: AudioVolumeType, callback: AsyncCallback\): void Obtains the volume of a stream. This method uses an asynchronous callback to return the query result. **Parameters** | Name | Type | Mandatory | Description | | ------------- | ------------- | ---------------|------------------------------------------------------ | | volumeType | AudioVolumeType | Yes | Audio stream type. | | callback | AsyncCallback | Yes | Callback used to return the volume. | **Return values** None **Example** ``` 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.'); }) ``` ### getVolume\(volumeType: AudioVolumeType\): Promise Obtains the volume of a stream. This method uses a promise to return the query result. **Parameters** | Name | Type | Mandatory | Description | | ------------- | ------------- | ---------------|------------------------------------------------------ | | volumeType | AudioVolumeType | Yes | Audio stream type. | **Return values** | Name | Description | | ------------- | -------------------------------------------------------- | | Promise | Promise used to return the volume. | **Example** ``` audioManager.getVolume(audio.AudioVolumeType.MEDIA).then((value) => console.log('Promise returned to indicate that the volume is obtained.' + value); ) ``` ### getMinVolume\(volumeType: AudioVolumeType, callback: AsyncCallback\): void Obtains the minimum volume allowed for a stream. This method uses an asynchronous callback to return the query result. **Parameters** | Name | Type | Mandatory | Description | | ------------- | ------------- | ---------------|------------------------------------------------------ | | volumeType | AudioVolumeType | Yes | Audio stream type. | | callback | AsyncCallback | Yes | Callback used to return the minimum volume. | **Return values** None **Example** ``` audioManager.getMinVolume(audio.AudioVolumeType.MEDIA, (err, value) => { if (err) { console.error('Failed to obtain the minimum volume. ${err.message}'); return; } console.log('Callback invoked to indicate that the minimum volume is obtained.' + value); }) ``` ### getMinVolume\(volumeType: AudioVolumeType\): Promise Obtains the minimum volume allowed for a stream. This method uses a promise to return the query result. **Parameters** | Name | Type | Mandatory | Description | | ------------- | ------------- | ---------------|------------------------------------------------------ | | volumeType | AudioVolumeType | Yes | Audio stream type. | **Return values** | Name | Description | | ------------- | -------------------------------------------------------- | | Promise | Promise used to return the minimum volume. | **Example** ``` audioManager.getMinVolume(audio.AudioVolumeType.MEDIA).then((value) => console.log('Promised returned to indicate that the minimum volume is obtained.' + value); ) ``` ### getMaxVolume\(volumeType: AudioVolumeType, callback: AsyncCallback\): void Obtains the maximum volume allowed for a stream. This method uses an asynchronous callback to return the query result. **Parameters** | Name | Type | Mandatory | Description | | ------------- | ------------- | ---------------|------------------------------------------------------ | | volumeType | AudioVolumeType | Yes | Audio stream type. | | callback | AsyncCallback | Yes | Callback used to return the maximum volume. | **Return values** None **Example** ``` audioManager.getMaxVolume(audio.AudioVolumeType.MEDIA, (err, value) => { if (err) { console.error('Failed to obtain the maximum volume. ${err.message}'); return; } console.log('Callback invoked to indicate that the maximum volume is obtained.' + value); }) ``` ### getMaxVolume\(volumeType: AudioVolumeType\): Promise Obtains the maximum volume allowed for a stream. This method uses a promise to return the query result. **Parameters** | Name | Type | Mandatory | Description | | ------------- | ------------- | ---------------|------------------------------------------------------ | | volumeType | AudioVolumeType | Yes | Audio stream type. | **Return values** | Name | Description | | ------------- | -------------------------------------------------------- | | Promise | Promise used to return the maximum volume. | **Example** ``` audioManager.getMaxVolume(audio.AudioVolumeType.MEDIA).then((data)=> console.log('Promised returned to indicate that the maximum volume is obtained.'); ) ``` ### mute\(volumeType: AudioVolumeType, mute: boolean, callback: AsyncCallback\): void7+ Mutes a stream. This method uses an asynchronous callback to return the execution result. **Parameters** | Name | Type | Mandatory | Description | | ------------- | ------------- | ---------------|------------------------------------------------------ | | volumeType | AudioVolumeType | Yes | Audio stream type. | | mute | boolean | Yes | Mute status to set. The value **true** means to mute the stream, and **false** means the opposite. | | callback | AsyncCallback | Yes | Callback used to return the execution result. | **Return values** None **Example** ``` 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.'); }) ``` ### mute\(volumeType: AudioVolumeType, mute: boolean\): Promise7+ Mutes a stream. This method uses a promise to return the execution result. **Parameters** | Name | Type | Mandatory | Description | | ------------- | ------------- | ---------------|------------------------------------------------------ | | volumeType | AudioVolumeType | Yes | Audio stream type. | | mute | boolean | Yes | Mute status to set. The value **true** means to mute the stream, and **false** means the opposite. | **Return values** | Name | Description | | ------------- | -------------------------------------------------------- | | Promise | Promise used to return the execution result. | **Example** ``` audioManager.mute(audio.AudioVolumeType.MEDIA, true).then(() => console.log('Promise returned to indicate that the stream is muted.'); ) ``` ### isMute\(volumeType: AudioVolumeType, callback: AsyncCallback\): void7+ Checks whether a stream is muted. This method uses an asynchronous callback to return the query result. **Parameters** | Name | Type | Mandatory | Description | | ------------- | ------------- | ---------------|------------------------------------------------------ | | volumeType | AudioVolumeType | Yes | Audio stream type. | | callback | AsyncCallback | Yes | Callback used to return the mute status of the stream. The value **true** means that the stream is muted, and **false** means the opposite. | **Return values** None **Example** ``` audioManager.isMute(audio.AudioVolumeType.MEDIA, (err, value) => { if (err) { console.error('Failed to obtain the mute status. ${err.message}'); return; } console.log('Callback invoked to indicate that the mute status of the stream is obtained.' + value); }) ``` ### isMute\(volumeType: AudioVolumeType\): Promise7+ Checks whether a stream is muted. This method uses a promise to return the execution result. **Parameters** | Name | Type | Mandatory | Description | | ------------- | ------------- | ---------------|------------------------------------------------------ | | volumeType | AudioVolumeType | Yes | Audio stream type. | **Return values** | Name | Description | | ------------- | -------------------------------------------------------- | | Promise | Promise used to return the mute status of the stream. The value **true** means that the stream is muted, and **false** means the opposite. | **Example** ``` audioManager.isMute(audio.AudioVolumeType.MEDIA).then((value) => console.log('Promise returned to indicate that the mute status of the stream is obtained.' + value); ) ``` ### isActive\(volumeType: AudioVolumeType, callback: AsyncCallback\): void7+ Checks whether a stream is active. This method uses an asynchronous callback to return the query result. **Parameters** | Name | Type | Mandatory | Description | | ------------- | ------------- | ---------------|------------------------------------------------------ | | volumeType | AudioVolumeType | Yes | Audio stream type. | | callback | AsyncCallback | Yes | Callback used to return the active status of the stream. The value **true** means that the stream is active, and **false** means the opposite. | **Return values** None **Example** ``` audioManager.isActive(audio.AudioVolumeType.MEDIA, (err, value) => { if (err) { console.error('Failed to obtain the active status of the stream. ${err.message}'); return; } console.log('Callback invoked to indicate that the active status of the stream is obtained.' + value); }) ``` ### isActive\(volumeType: AudioVolumeType\): Promise7+ Checks whether a stream is active. This method uses a promise to return the query result. **Parameters** | Name | Type | Mandatory | Description | | ------------- | ------------- | ---------------|------------------------------------------------------ | | volumeType | AudioVolumeType | Yes | Audio stream type. | **Return values** | Name | Description | | ------------- | -------------------------------------------------------- | | Promise | Promise used to return the active status of the stream. The value **true** means that the stream is active, and **false** means the opposite. | **Example** ``` audioManager.isActive(audio.AudioVolumeType.MEDIA).then((value) => console.log('Promise returned to indicate that the active status of the stream is obtained.' + value); ) ``` ### setRingerMode\(mode: AudioRingMode, callback: AsyncCallback\): void7+ Sets the ringer mode. This method uses an asynchronous callback to return the execution result. **Parameters** | Name | Type | Mandatory | Description | | ------------- | ------------- | ---------------|------------------------------------------------------ | | mode | AudioRingMode | Yes | Ringer mode. | | callback | AsyncCallback | Yes | Callback used to return the execution result. | **Return values** None **Example** ``` audioManager.setRingerMode(audio.AudioRingMode.RINGER_MODE_NORMAL, (err) => { if (err) { console.error('Failed to set the ringer mode.​ ${err.message}'); return; } console.log('Callback invoked to indicate a successful setting of the ringer mode.'); }) ``` ### setRingerMode\(mode: AudioRingMode\): Promise7+ Sets the ringer mode. This method uses a promise to return the execution result. **Parameters** | Name | Type | Mandatory | Description | | ------------- | ------------- | ---------------|------------------------------------------------------ | | mode | AudioRingMode | Yes | Ringer mode. | **Return values** | Name | Description | | ------------- | -------------------------------------------------------- | | Promise | Promise used to return the execution result. | **Example** ``` audioManager.setRingerMode(audio.AudioRingMode.RINGER_MODE_NORMAL).then(() => console.log('Promise returned to indicate a successful setting of the ringer mode.'); ) ``` ### getRingerMode\(callback: AsyncCallback\): void7+ Obtains the ringer mode. This method uses an asynchronous callback to return the query result. **Parameters** | Name | Type | Mandatory | Description | | ------------- | ------------- | ---------------|------------------------------------------------------ | | callback | AsyncCallback<AudioRingMode> | Yes | Callback used to return the ringer mode. | **Return values** None **Example** ``` audioManager.getRingerMode((err, value) => { if (err) { console.error('Failed to obtain the ringer mode.​ ${err.message}'); return; } console.log('Callback invoked to indicate that the ringer mode is obtained.' + value); }) ``` ### getRingerMode\(\): Promise7+ Obtains the ringer mode. This method uses a promise to return the query result. **Parameters** None **Return values** | Name | Description | | ------------- | -------------------------------------------------------- | | Promise<AudioRingMode> | Promise used to return the ringer mode. | **Example** ``` audioManager.getRingerMode().then((value) => console.log('Promise returned to indicate that the ringer mode is obtained.' + value); ) ``` ### setAudioParameter\(key: string, value: string, callback: AsyncCallback\): void7+ Sets an audio parameter. This method uses an asynchronous callback to return the execution result. **Parameters** | Name | Type | Mandatory | Description | | ------------- | ------------- | ---------------|------------------------------------------------------ | | key | string | Yes | Key of the audio parameter to set. | | value | string | Yes | Value of the audio parameter to set. | | callback | AsyncCallback | Yes | Callback used to return the execution result. | **Return values** None **Example** ``` audioManager.setAudioParameter('PBits per sample', '8 bit', (err) => { if (err) { console.error('Failed to set the audio parameter. ${err.message}'); return; } console.log('Callback invoked to indicate a successful setting of the audio parameter.'); }) ``` ### setAudioParameter\(key: string, value: string\): Promise7+ Sets an audio parameter. This method uses a promise to return the execution result. **Parameters** | Name | Type | Mandatory | Description | | ------------- | ------------- | ---------------|------------------------------------------------------ | | key | string | Yes | Key of the audio parameter to set. | | value | string | Yes | Value of the audio parameter to set. | **Return values** | Name | Description | | ------------- | -------------------------------------------------------- | | Promise | Promise used to return the execution result. | **Example** ``` audioManager.setAudioParameter('PBits per sample', '8 bit').then(() => console.log('Promise returned to indicate a successful setting of the audio parameter.'); ) ``` ### getAudioParameter\(key: string, callback: AsyncCallback\): void7+ Obtains the value of an audio parameter. This method uses an asynchronous callback to return the query result. **Parameters** | Name | Type | Mandatory | Description | | ------------- | ------------- | ---------------|------------------------------------------------------ | | key | string | Yes | Key of the audio parameter whose value is to be obtained. | | callback | AsyncCallback | Yes | Callback used to return the value of the audio parameter. | **Return values** None **Example** ``` audioManager.getAudioParameter('PBits per sample', (err, value) => { if (err) { console.error('Failed to obtain the value of the audio parameter. ${err.message}'); return; } console.log('Callback invoked to indicate that the value of the audio parameter is obtained.' + value); }) ``` ### getAudioParameter\(key: string\): Promise7+ Obtains the value of an audio parameter. This method uses a promise to return the query result. **Parameters** | Name | Type | Mandatory | Description | | ------------- | ------------- | ---------------|------------------------------------------------------ | | key | string | Yes | Key of the audio parameter whose value is to be obtained. | **Return values** | Name | Description | | ------------- | -------------------------------------------------------- | | Promise | Promise used to return the value of the audio parameter. | **Example** ``` audioManager.getAudioParameter('PBits per sample').then((value) => console.log('Promise returned to indicate that the value of the audio parameter is obtained.' + value); ) ``` ### getDevices\(deviceFlag: DeviceFlag, callback: AsyncCallback\): void Obtains the audio devices with a specific flag. This method uses an asynchronous callback to return the query result. **Parameters** | Name | Type | Mandatory | Description | | ------------- | ------------- | ---------------|------------------------------------------------------ | | deviceFlag | DeviceFlag | Yes | Audio device flag. | | callback | AsyncCallback<AudioDeviceDescriptors> | Yes | Callback used to return the device list. | **Return values** None **Example** ``` audioManager.getDevices(audio.DeviceFlag.OUTPUT_DEVICES_FLAG, (err, value)=>{ if (err) { console.error('Failed to obtain the device list. ${err.message}'); return; } console.log('Callback invoked to indicate that the device list is obtained.'); }) ``` ### getDevices\(deviceFlag: DeviceFlag\): Promise Obtains the audio devices with a specific flag. This method uses a promise to return the query result. **Parameters** | Name | Type | Mandatory | Description | | ------------- | ------------- | ---------------|------------------------------------------------------ | | deviceFlag | DeviceFlag | Yes | Audio device flag. | **Return values** | Name | Description | | ------------- | -------------------------------------------------------- | | Promise<AudioDeviceDescriptors> | Promise used to return the device list. | **Example** ``` audioManager.getDevices(audio.DeviceFlag.OUTPUT_DEVICES_FLAG).then((data)=> console.log('Promise returned to indicate that the device list is obtained.'); ) ``` ### setDeviceActive\(deviceType: ActiveDeviceType, active: boolean, callback: AsyncCallback\): void7+ Sets a device to the active state. This method uses an asynchronous callback to return the execution result. **Parameters** | Name | Type | Mandatory | Description | | ------------- | ------------- | ---------------|------------------------------------------------------ | | deviceType | ActiveDeviceType | Yes | Audio device type. | | active | boolean | Yes | Active status to set. The value **true** means to set the device to the active status, and **false** means the opposite. | | callback | AsyncCallback | Yes | Callback used to return the execution result. | **Return values** None **Example** ``` audioManager.setDeviceActive(audio.ActiveDeviceType.SPEAKER, true, (err)=> { if (err) { console.error('Failed to set the active status of the device. ${err.message}'); return; } console.log('Callback invoked to indicate that the device is set to the active status.'); }) ``` ### setDeviceActive\(deviceType: ActiveDeviceType, active: boolean\): Promise7+ Sets a device to the active state. This method uses a promise to return the execution result. **Parameters** | Name | Type | Mandatory | Description | | ------------- | ------------- | ---------------|------------------------------------------------------ | | deviceType | ActiveDeviceType | Yes | Audio device type. | | active | boolean | Yes | Active status to set. The value **true** means to set the device to the active status, and **false** means the opposite. | **Return values** | Name | Description | | ------------- | -------------------------------------------------------- | | Promise | Promise used to return the execution result. | **Example** ``` audioManager.setDeviceActive(audio.ActiveDeviceType.SPEAKER, true).then(()=> console.log('Promise returned to indicate that the device is set to the active status.'); ) ``` ### isDeviceActive\(deviceType: DeviceType, callback: AsyncCallback\): void7+ Checks whether a device is active. This method uses an asynchronous callback to return the query result. **Parameters** | Name | Type | Mandatory | Description | | ------------- | ------------- | ---------------|------------------------------------------------------ | | deviceType | ActiveDeviceType | Yes | Audio device type. | | callback | AsyncCallback | Yes | Callback used to return the active status of the device. | **Return values** None **Example** ``` audioManager.isDeviceActive(audio.ActiveDeviceType.SPEAKER, (err, value) => { if (err) { console.error('Failed to obtain the active status of the device. ${err.message}'); return; } console.log('Callback invoked to indicate that the active status of the device is obtained.'); }) ``` ### isDeviceActive\(deviceType: ActiveDeviceType\): Promise7+ Checks whether a device is active. This method uses a promise to return the query result. **Parameters** | Name | Type | Mandatory | Description | | ------------- | ------------- | ---------------|------------------------------------------------------ | | deviceType | ActiveDeviceType | Yes | Audio device type. | **Return values** | Name | Description | | ------------- | -------------------------------------------------------- | | Promise | Promise used to return the active status of the device. | **Example** ``` audioManager.isDeviceActive(audio.ActiveDeviceType.SPEAKER).then((value) => console.log('Promise returned to indicate that the active status of the device is obtained.' + value); ) ``` ### setMicrophoneMute\(mute: boolean, callback: AsyncCallback\): void7+ Mutes or unmutes the microphone. This method uses an asynchronous callback to return the execution result. **Parameters** | Name | Type | Mandatory | Description | | ------------- | ------------- | ---------------|------------------------------------------------------ | | mute | boolean | Yes | Mute status to set. The value **true** means to mute the microphone, and **false** means the opposite. | | callback | AsyncCallback | Yes | Callback used to return the execution result. | **Return values** None **Example** ``` audioManager.setMicrophoneMute(true, (err) => { if (err) { console.error('Failed to mute the microphone. ${err.message}'); return; } console.log('Callback invoked to indicate that the microphone is muted.'); }) ``` ### setMicrophoneMute\(mute: boolean\): Promise7+ Mutes or unmutes the microphone. This method uses a promise to return the execution result. **Parameters** | Name | Type | Mandatory | Description | | ------------- | ------------- | ---------------|------------------------------------------------------ | | mute | boolean | Yes | Mute status to set. The value **true** means to mute the microphone, and **false** means the opposite. | **Return values** | Name | Description | | ------------- | -------------------------------------------------------- | | Promise | Promise used to return the execution result. | **Example** ``` audioManager.setMicrophoneMute(true).then(() => console.log('Promise returned to indicate that the microphone is muted.'); ) ``` ### isMicrophoneMute\(callback: AsyncCallback\): void7+ Checks whether the microphone is muted. This method uses an asynchronous callback to return the query result. **Parameters** | Name | Type | Mandatory | Description | | ------------- | ------------- | ---------------|------------------------------------------------------ | | callback | AsyncCallback | Yes | Callback used to return the mute status of the microphone. The value **true** means that the microphone is muted, and **false** means the opposite. | **Return values** None **Example** ``` audioManager.isMicrophoneMute((err, value) => { if (err) { console.error('Failed to obtain the mute status of the microphone. ${err.message}'); return; } console.log('Callback invoked to indicate that the mute status of the microphone is obtained.' + value); }) ``` ### isMicrophoneMute\(\): Promise7+ Checks whether the microphone is muted. This method uses a promise to return the query result. **Parameters** None **Return values** | Name | Description | | ------------- | -------------------------------------------------------- | | Promise | Promise used to return the mute status of the microphone. The value **true** means that the microphone is muted, and **false** means the opposite. | **Example** ``` audioManager.isMicrophoneMute().then((value) => console.log('Promise returned to indicate that the mute status of the microphone is obtained.', + value); ) ``` ## AudioDeviceDescriptor Describes an audio device. ### Attributes | Name | Type | Readable | Writable | Description | | ------------- | ------------- | ---------------|--------------------------------|------------------------ | | deviceRole | DeviceRole | Yes | No | Audio device role. | | deviceType | DeviceType | Yes | No | Audio device type. | ## AudioDeviceDescriptors | Name | Description | | ------------- | -------------------------------------------------------- | | Device attribute array | Array of **AudioDeviceDescriptors**, which is read-only. |