# Interfaces (Others)
> **NOTE**
>
> The initial APIs of this module are supported since API version 7. Newly added APIs will be marked with a superscript to indicate their earliest API version.
## AudioStreamInfo8+
Describes audio stream information.
**System capability**: SystemCapability.Multimedia.Audio.Core
| Name | Type | Read-Only| Optional| Description |
| ------------ | ------------------------------------------------- | ---- |---| ------------------ |
| samplingRate | [AudioSamplingRate](arkts-apis-audio-e.md#audiosamplingrate8) | No| No| Audio sampling rate.|
| channels | [AudioChannel](arkts-apis-audio-e.md#audiochannel8) | No| No| Number of audio channels.|
| sampleFormat | [AudioSampleFormat](arkts-apis-audio-e.md#audiosampleformat8) | No| No| Audio sample format. |
| encodingType | [AudioEncodingType](arkts-apis-audio-e.md#audioencodingtype8) | No| No| Audio encoding type. |
| channelLayout11+ | [AudioChannelLayout](arkts-apis-audio-e.md#audiochannellayout11) | No| Yes| Audio channel layout. The default value is **0x0**.|
## AudioRendererInfo8+
Describes audio renderer information.
| Name | Type | Read-Only| Optional| Description |
| ------------- | --------------------------- | ---- |---| --------------- |
| content | [ContentType](arkts-apis-audio-e.md#contenttypedeprecated) | No| Yes| Audio content type.
**System capability**: SystemCapability.Multimedia.Audio.Core
This parameter is mandatory in API versions 8 and 9 and optional since API version 10. The default value is **CONTENT_TYPE_UNKNOWN**.
This API is supported since API version 7 and deprecated since API version 10. You are advised to use [StreamUsage](arkts-apis-audio-e.md#streamusage) instead.|
| usage | [StreamUsage](arkts-apis-audio-e.md#streamusage) | No| No| Audio stream usage.
**System capability**: SystemCapability.Multimedia.Audio.Core
**Atomic service API**: This API can be used in atomic services since API version 12.|
| rendererFlags | number | No| No| Audio renderer flags.
The value **0** means an audio renderer.
**System capability**: SystemCapability.Multimedia.Audio.Core
**Atomic service API**: This API can be used in atomic services since API version 12.|
| volumeMode19+ | [AudioVolumeMode](arkts-apis-audio-e.md#audiovolumemode19) | No| Yes| Audio volume mode. The default value is **SYSTEM_GLOBAL**.
**System capability**: SystemCapability.Multimedia.Audio.Volume|
## AudioRendererOptions8+
Describes audio renderer configurations.
| Name | Type | Read-Only| Optional| Description |
| ------------ | ---------------------------------------- | ---- |---| ---------------- |
| streamInfo | [AudioStreamInfo](#audiostreaminfo8) | No| No| Audio stream information.
**System capability**: SystemCapability.Multimedia.Audio.Renderer|
| rendererInfo | [AudioRendererInfo](#audiorendererinfo8) | No| No| Audio renderer information.
**System capability**: SystemCapability.Multimedia.Audio.Renderer|
| privacyType10+ | [AudioPrivacyType](arkts-apis-audio-e.md#audioprivacytype10) | No| Yes| Whether the audio stream can be recorded by other applications. The default value is **0**.
**System capability**: SystemCapability.Multimedia.Audio.PlaybackCapture|
## InterruptEvent9+
Describes the interruption event received by the application when the audio is interrupted.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Multimedia.Audio.Renderer
| Name | Type | Read-Only| Optional| Description |
| --------- | ------------------------------------------ | ---- |---| ------------------------------------ |
| eventType | [InterruptType](arkts-apis-audio-e.md#interrupttype) | No| No| Whether the audio interruption has started or ended. |
| forceType | [InterruptForceType](arkts-apis-audio-e.md#interruptforcetype9) | No| No| Whether the audio interruption is forcibly taken by the system or taken by an application.|
| hintType | [InterruptHint](arkts-apis-audio-e.md#interrupthint) | No| No| Hint provided along the interruption to provide information related to the interruption event.|
## DeviceBlockStatusInfo13+
Describes the audio device blocked status and device information.
**System capability**: SystemCapability.Multimedia.Audio.Device
| Name | Type | Read-Only| Optional| Description |
| :---------------- | :------------------------------------------------ | :--- |---| :----------------- |
| blockStatus | [DeviceBlockStatus](arkts-apis-audio-e.md#deviceblockstatus13) | No| No| Blocked status of the audio device.|
| devices | [AudioDeviceDescriptors](arkts-apis-audio-t.md#audiodevicedescriptors) | No| No| Device information. |
## AudioSessionStrategy12+
Describes an audio session strategy.
**System capability**: SystemCapability.Multimedia.Audio.Core
| Name | Type | Read-Only| Optional| Description |
| :------------ |:------------------------------------------------| :--- |---| :--------------- |
| concurrencyMode | [AudioConcurrencyMode](arkts-apis-audio-e.md#audioconcurrencymode12) | No| No| Audio concurrency mode. |
## AudioSessionDeactivatedEvent12+
Describes the event indicating that an audio session is deactivated.
**System capability**: SystemCapability.Multimedia.Audio.Core
| Name | Type | Read-Only| Optional| Description |
| :------------ |:------------------------------------------------------------------| :--- |---| :--------------- |
| reason | [AudioSessionDeactivatedReason](arkts-apis-audio-e.md#audiosessiondeactivatedreason12) | No| No| Reason for deactivating an audio session. |
## AudioRendererChangeInfo9+
Describes the audio renderer change event.
**System capability**: SystemCapability.Multimedia.Audio.Renderer
| Name | Type | Read-Only| Optional| Description |
| -------------------| ----------------------------------------- | ---- | ---- | ---------------------------- |
| streamId | number | Yes | No | Unique ID of an audio stream. |
| rendererInfo | [AudioRendererInfo](#audiorendererinfo8) | Yes | No | Audio renderer information. |
| deviceDescriptors | [AudioDeviceDescriptors](arkts-apis-audio-t.md#audiodevicedescriptors) | Yes | No | Audio device description.|
**Example**
```ts
import { audio } from '@kit.AudioKit';
const audioManager = audio.getAudioManager();
let audioStreamManager = audioManager.getStreamManager();
audioStreamManager.on('audioRendererChange', (AudioRendererChangeInfoArray) => {
for (let i = 0; i < AudioRendererChangeInfoArray.length; i++) {
console.info(`## RendererChange on is called for ${i} ##`);
console.info(`StreamId for ${i} is: ${AudioRendererChangeInfoArray[i].streamId}`);
console.info(`Content for ${i} is: ${AudioRendererChangeInfoArray[i].rendererInfo.content}`);
console.info(`Stream for ${i} is: ${AudioRendererChangeInfoArray[i].rendererInfo.usage}`);
console.info(`Flag ${i} is: ${AudioRendererChangeInfoArray[i].rendererInfo.rendererFlags}`);
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}`);
console.info(`Role: ${i} : ${AudioRendererChangeInfoArray[i].deviceDescriptors[j].deviceRole}`);
console.info(`Name: ${i} : ${AudioRendererChangeInfoArray[i].deviceDescriptors[j].name}`);
console.info(`Addr: ${i} : ${AudioRendererChangeInfoArray[i].deviceDescriptors[j].address}`);
console.info(`SR: ${i} : ${AudioRendererChangeInfoArray[i].deviceDescriptors[j].sampleRates[0]}`);
console.info(`C ${i} : ${AudioRendererChangeInfoArray[i].deviceDescriptors[j].channelCounts[0]}`);
console.info(`CM: ${i} : ${AudioRendererChangeInfoArray[i].deviceDescriptors[j].channelMasks[0]}`);
}
}
});
```
## AudioCapturerChangeInfo9+
Describes the audio capturer change event.
**System capability**: SystemCapability.Multimedia.Audio.Capturer
| Name | Type | Read-Only| Optional| Description |
| -------------------| ----------------------------------------- | ---- | ---- | ---------------------------- |
| streamId | number | Yes | No | Unique ID of an audio stream. |
| capturerInfo | [AudioCapturerInfo](#audiocapturerinfo8) | Yes | No | Audio capturer information. |
| deviceDescriptors | [AudioDeviceDescriptors](arkts-apis-audio-t.md#audiodevicedescriptors) | Yes | No | Audio device information.|
| muted11+ | boolean | Yes | Yes| Whether the audio capturer is muted. The value **true** means that the audio capturer is muted, and **false** means the opposite.|
**Example**
```ts
import { audio } from '@kit.AudioKit';
const audioManager = audio.getAudioManager();
let audioStreamManager = audioManager.getStreamManager();
audioStreamManager.on('audioCapturerChange', (AudioCapturerChangeInfoArray) => {
for (let i = 0; i < AudioCapturerChangeInfoArray.length; i++) {
console.info(`## CapChange on is called for element ${i} ##`);
console.info(`StrId for ${i} is: ${AudioCapturerChangeInfoArray[i].streamId}`);
console.info(`Src for ${i} is: ${AudioCapturerChangeInfoArray[i].capturerInfo.source}`);
console.info(`Flag ${i} is: ${AudioCapturerChangeInfoArray[i].capturerInfo.capturerFlags}`);
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}`);
console.info(`Role: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].deviceRole}`);
console.info(`Name: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].name}`);
console.info(`Addr: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].address}`);
console.info(`SR: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].sampleRates[0]}`);
console.info(`C ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].channelCounts[0]}`);
console.info(`CM ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].channelMasks[0]}`);
}
}
});
```
## AudioDeviceDescriptor
Describes an audio device.
| Name | Type | Read-Only| Optional| Description |
| ----------------------------- | -------------------------- | ---- | ---- | ---------- |
| deviceRole | [DeviceRole](arkts-apis-audio-e.md#devicerole) | Yes | No | Device role.
**System capability**: SystemCapability.Multimedia.Audio.Device
**Atomic service API**: This API can be used in atomic services since API version 12.|
| deviceType | [DeviceType](arkts-apis-audio-e.md#devicetype) | Yes | No | Device type.
**System capability**: SystemCapability.Multimedia.Audio.Device
**Atomic service API**: This API can be used in atomic services since API version 12.|
| id9+ | number | Yes | No | Unique device ID.
**System capability**: SystemCapability.Multimedia.Audio.Device
**Atomic service API**: This API can be used in atomic services since API version 12.|
| name9+ | string | Yes | No | Device name.
For a Bluetooth device, you must request the ohos.permission.USE_BLUETOOTH permission.
**System capability**: SystemCapability.Multimedia.Audio.Device
**Atomic service API**: This API can be used in atomic services since API version 12.|
| address9+ | string | Yes | No | Device address.
For a Bluetooth device, you must request the ohos.permission.USE_BLUETOOTH permission.
**System capability**: SystemCapability.Multimedia.Audio.Device
**Atomic service API**: This API can be used in atomic services since API version 12.|
| sampleRates9+ | Array<number> | Yes | No | Supported sampling rates.
**System capability**: SystemCapability.Multimedia.Audio.Device
**Atomic service API**: This API can be used in atomic services since API version 12.|
| channelCounts9+ | Array<number> | Yes | No | Number of channels supported.
**System capability**: SystemCapability.Multimedia.Audio.Device
**Atomic service API**: This API can be used in atomic services since API version 12.|
| channelMasks9+ | Array<number> | Yes | No | Supported channel masks.
**System capability**: SystemCapability.Multimedia.Audio.Device
**Atomic service API**: This API can be used in atomic services since API version 12.|
| displayName10+ | string | Yes | No | Display name of the device.
**System capability**: SystemCapability.Multimedia.Audio.Device
**Atomic service API**: This API can be used in atomic services since API version 12.|
| encodingTypes11+ | Array<[AudioEncodingType](arkts-apis-audio-e.md#audioencodingtype8)> | Yes | Yes| Supported encoding types.
**System capability**: SystemCapability.Multimedia.Audio.Core
**Atomic service API**: This API can be used in atomic services since API version 12.|
| spatializationSupported18+ | boolean | Yes | Yes| Whether the device supports spatial audio rendering. The value **true** means that the device supports spatial audio rendering, and **false** means the opposite.
**System capability**: SystemCapability.Multimedia.Audio.Spatialization|
**Example**
```ts
import { audio } from '@kit.AudioKit';
function displayDeviceProp(value: audio.AudioDeviceDescriptor) {
deviceRoleValue = value.deviceRole;
deviceTypeValue = value.deviceType;
}
let deviceRoleValue: audio.DeviceRole | undefined = undefined;
let deviceTypeValue: audio.DeviceType | undefined = undefined;
audio.getAudioManager().getRoutingManager().getDevices(audio.DeviceFlag.OUTPUT_DEVICES_FLAG).then((value: audio.AudioDeviceDescriptors) => {
console.info('AudioFrameworkTest: Promise: getDevices OUTPUT_DEVICES_FLAG');
value.forEach(displayDeviceProp);
if (deviceTypeValue != undefined && deviceRoleValue != undefined){
console.info('AudioFrameworkTest: Promise: getDevices : OUTPUT_DEVICES_FLAG : PASS');
} else {
console.error('AudioFrameworkTest: Promise: getDevices : OUTPUT_DEVICES_FLAG : FAIL');
}
});
```
## VolumeEvent9+
Describes the event received by the application when the volume is changed.
**System capability**: SystemCapability.Multimedia.Audio.Volume
| Name | Type | Read-Only| Optional| Description |
| ---------- | ----------------------------------- | ---- |---|-------------------------------------------|
| volumeType | [AudioVolumeType](arkts-apis-audio-e.md#audiovolumetype) | No| No| Audio stream type. |
| volume | number | No| No|Volume to set. The value range can be obtained by calling **getMinVolume** and **getMaxVolume**. |
| updateUi | boolean | No| No| Whether to show the volume change in UI. The value **true** means to show the volume change in UI, and **false** means the opposite. |
| volumeMode19+ | [AudioVolumeMode](arkts-apis-audio-e.md#audiovolumemode19) | No| Yes| Audio volume mode. The default value is **SYSTEM_GLOBAL**.|
## MicStateChangeEvent9+
Describes the event received by the application when the microphone mute status is changed.
**System capability**: SystemCapability.Multimedia.Audio.Device
| Name | Type | Read-Only| Optional| Description |
| ---------- | ----------------------------------- | ---- |---|-------------------------------------------------------- |
| mute | boolean | No| No| Mute status of the microphone The value **true** means that the microphone is muted, and **false** means the opposite. |
## StreamVolumeEvent20+
Describes the event received by the application when the audio stream volume is changed.
**System capability**: SystemCapability.Multimedia.Audio.Volume
| Name | Type | Read-Only| Optional| Description |
| ---------- | ----------------------------------- | ---- |---|-------------------------------------------------------- |
| streamUsage | [StreamUsage](arkts-apis-audio-e.md#streamusage) | No| No| Audio stream for which the volume changes. |
| volume | number | No| No| Volume. |
| updateUi | boolean | No| No| Whether to show the volume change in UI. The value **true** means to show the volume change in UI, and **false** means the opposite. |
## DeviceChangeAction
Describes the device connection status and device information.
**System capability**: SystemCapability.Multimedia.Audio.Device
| Name | Type | Read-Only| Optional| Description |
| :---------------- | :------------------------------------------------ | :--- |---| :----------------- |
| type | [DeviceChangeType](arkts-apis-audio-e.md#devicechangetype) | No| No| Device connection status.|
| deviceDescriptors | [AudioDeviceDescriptors](arkts-apis-audio-t.md#audiodevicedescriptors) | No| No| Device information. |
## AudioStreamDeviceChangeInfo11+
Describes the event received by the application when the audio stream device is changed.
**Atomic service API**: This API can be used in atomic services since API version 12.
**System capability**: SystemCapability.Multimedia.Audio.Device
| Name | Type | Read-Only| Optional| Description |
| :---------------- |:------------------------------------------------------------------| :--- |---| :----------------- |
| devices | [AudioDeviceDescriptors](arkts-apis-audio-t.md#audiodevicedescriptors) | No| No| Device information.|
| changeReason | [AudioStreamDeviceChangeReason](arkts-apis-audio-e.md#audiostreamdevicechangereason11) | No| No| Reason for the change.|
## AudioTimestampInfo19+
Describes the information about the audio stream timestamp and the current data frame position.
**System capability**: SystemCapability.Multimedia.Audio.Core
| Name| Type| Read-Only| Optional| Description |
| ---------| ------ | ---- | ---- |-----------------------------------|
| framePos | number | Yes | No | Position of the current data frame for playback or recording. |
| timestamp | number | Yes | No | Timestamp corresponding to the current data frame position during playback or recording.|
## AudioCapturerInfo8+
Describes audio capturer information.
**System capability**: SystemCapability.Multimedia.Audio.Core
| Name | Type | Read-Only| Optional| Description |
| :------------ | :------------------------ | :--- |---| :--------------- |
| source | [SourceType](arkts-apis-audio-e.md#sourcetype8) | No| No| Audio source type. |
| capturerFlags | number | No| No| Audio capturer flags.
The value **0** means an audio capturer.|
## AudioCapturerOptions8+
Describes audio capturer configurations.
| Name | Type | Read-Only| Optional| Description |
| ----------------------------------- | --------------------------------------------------------- | ---- |---| ------------------------------------------------------------ |
| streamInfo | [AudioStreamInfo](#audiostreaminfo8) | No| No| Audio stream information.
**System capability**: SystemCapability.Multimedia.Audio.Capturer |
| capturerInfo | [AudioCapturerInfo](#audiocapturerinfo8) | No| No| Audio capturer information.
**System capability**: SystemCapability.Multimedia.Audio.Capturer |
| playbackCaptureConfig(deprecated) | [AudioPlaybackCaptureConfig](#audioplaybackcaptureconfigdeprecated) | No| Yes| Configuration of internal audio recording.
**System capability**: SystemCapability.Multimedia.Audio.PlaybackCapture
This API is supported since API version 10 and deprecated since API version 12. You are advised to use [AVScreenCapture](../apis-media-kit/capi-avscreencapture.md) instead. |
## AudioInterrupt(deprecated)
Describes input parameters of audio interruption events.
> **NOTE**
>
> This API is supported since API version 7 and deprecated since API version 9. No substitute is provided.
**System capability**: SystemCapability.Multimedia.Audio.Renderer
| Name | Type | Read-Only| Optional| Description |
| --------------- | --------------------------- | ----|---| ------------------------------------------------------------ |
| streamUsage | [StreamUsage](arkts-apis-audio-e.md#streamusage) | No| No| Audio stream usage. |
| contentType | [ContentType](arkts-apis-audio-e.md#contenttypedeprecated) | No| No| Audio content type. |
| pauseWhenDucked | boolean | No| No| Whether audio playback can be paused during an audio interruption. The value **true** means that audio playback can be paused during an audio interruption, and **false** means the opposite.|
## CaptureFilterOptions(deprecated)
Defines the options for filtering the played audio streams to be recorded.
> **NOTE**
> This API is supported since API version 10 and deprecated since API version 12. You are advised to use [AVScreenCapture](../apis-media-kit/capi-avscreencapture.md) instead.
**System capability**: SystemCapability.Multimedia.Audio.PlaybackCapture
| Name | Type | Read-Only| Optional| Description |
| ------ | ---------------------------------- | ---- |---| ------------------------------------------------------------ |
| usages | Array\<[StreamUsage](arkts-apis-audio-e.md#streamusage)> | No| No| **StreamUsage** of the audio stream to be recorded. You can specify zero or more stream usages. If the array is empty, the audio stream for which **StreamUsage** is **STREAM_USAGE_MUSIC**, **STREAM_USAGE_MOVIE**, **STREAM_USAGE_GAME**, or **STREAM_USAGE_AUDIOBOOK** is recorded by default.
In API version 10, **CaptureFilterOptions** supports **StreamUsage.STREAM_USAGE_VOICE_COMMUNICATION**, and therefore the ohos.permission.CAPTURE_VOICE_DOWNLINK_AUDIO permission is required. Only system applications can request this permission.
Since API version 11, **CaptureFilterOptions** does not support **StreamUsage.STREAM_USAGE_VOICE_COMMUNICATION**. Therefore, no permission is required for calling this API.|
## AudioPlaybackCaptureConfig(deprecated)
Defines the configuration of internal audio recording.
> **NOTE**
> This API is supported since API version 10 and deprecated since API version 12. You are advised to use [AVScreenCapture](../apis-media-kit/capi-avscreencapture.md) instead.
**System capability**: SystemCapability.Multimedia.Audio.PlaybackCapture
| Name | Type | Read-Only| Optional| Description |
| ------------- | --------------------------------------------- | ---- |---| -------------------------------- |
| filterOptions | [CaptureFilterOptions](#capturefilteroptionsdeprecated) | No| No| Options for filtering the played audio streams to be recorded.|
## InterruptAction(deprecated)
Describes the callback invoked for audio interruption or focus gain events.
> **NOTE**
>
> This API is supported since API version 7 and deprecated since API version 9. You are advised to use [InterruptEvent](#interruptevent9) instead.
**System capability**: SystemCapability.Multimedia.Audio.Renderer
| Name | Type | Read-Only| Optional| Description |
| ---------- | ------------------------------------------- | ---- |---| ------------------------------------------------------------ |
| actionType | [InterruptActionType](arkts-apis-audio-e.md#interruptactiontypedeprecated) | No| No| Returned event type. The value **TYPE_ACTIVATED** means the focus gain event, and **TYPE_INTERRUPT** means the audio interruption event.|
| type | [InterruptType](arkts-apis-audio-e.md#interrupttype) | No| Yes| Type of the audio interruption event. |
| hint | [InterruptHint](arkts-apis-audio-e.md#interrupthint) | No| Yes| Hint provided along with the audio interruption event. |
| activated | boolean | No| Yes| Whether the focus is gained or released. The value **true** means that the focus is gained or released, and **false** means that the focus fails to be gained or released.|