diff --git a/en/application-dev/reference/apis/js-apis-audio.md b/en/application-dev/reference/apis/js-apis-audio.md
index a518c72880e74ad35cc76e2f0f8c15f92a0b764f..f019d61969e28699cc1324a6f8d8af29ba7d60f6 100644
--- a/en/application-dev/reference/apis/js-apis-audio.md
+++ b/en/application-dev/reference/apis/js-apis-audio.md
@@ -14,10 +14,27 @@ This module provides the following common audio-related functions:
## Modules to Import
-```
+```js
import audio from '@ohos.multimedia.audio';
```
+## Constants
+
+**System API**: This is a system API.
+
+**System capability**: SystemCapability.Multimedia.Audio.Device
+
+| Name | Type | Readable| Writable| Description |
+| ----- | -------------------------- | ---- | ---- | ------------------ |
+| LOCAL_NETWORK_ID9+ | string | Yes | No | Network ID of the local device.|
+
+**Example**
+
+```js
+import audio from '@ohos.multimedia.audio';
+
+const localNetworkId = audio.LOCAL_NETWORK_ID;
+```
## audio.getAudioManager
@@ -28,31 +45,68 @@ Obtains an **AudioManager** instance.
**System capability**: SystemCapability.Multimedia.Audio.Core
**Return value**
+
| Type | Description |
| ----------------------------- | ------------ |
| [AudioManager](#audiomanager) | **AudioManager** instance.|
**Example**
-```
+```js
var audioManager = audio.getAudioManager();
```
## audio.getStreamManager9+
-getStreamManager(): AudioStreamManager
+getStreamManager(callback: AsyncCallback\): void
-Obtains an **AudioStreamManager** instance.
+Obtains an **AudioStreamManager** instance. This API uses an asynchronous callback to return the result.
**System capability**: SystemCapability.Multimedia.Audio.Core
-**Return value**
-| Type | Description |
-| -------------------------------------------------| ------------------------------- |
-| [AudioStreamManager](#audiostreammanager9) | **AudioStreamManager** instance. |
+**Parameters**
+
+| Name | Type | Mandatory| Description |
+| -------- | --------------------------------------------------------- | ---- | ---------------- |
+| callback | AsyncCallback<[AudioStreamManager](#audiostreammanager9)> | Yes | **AudioStreamManager** instance.|
**Example**
+
+```js
+audio.getStreamManager((err, data) => {
+ if (err) {
+ console.error(`getStreamManager : Error: ${err}`);
+ } else {
+ console.info('getStreamManager : Success : SUCCESS');
+ let audioStreamManager = data;
+ }
+});
```
-var audioStreamManager = audio.getStreamManager();
+
+## audio.getStreamManager9+
+
+getStreamManager(): Promise
+
+Obtains an **AudioStreamManager** instance. This API uses a promise to return the result.
+
+**System capability**: SystemCapability.Multimedia.Audio.Core
+
+**Return value**
+
+| Type | Description |
+| ---------------------------------------------------- | ---------------- |
+| Promise<[AudioStreamManager](#audiostreammanager9)> | **AudioStreamManager** instance.|
+
+**Example**
+
+```js
+var audioStreamManager;
+audio.getStreamManager().then((data) => {
+ audioStreamManager = data;
+ console.info('getStreamManager: Success!');
+}).catch((err) => {
+ console.error(`getStreamManager: ERROR : ${err}`);
+});
+
```
## audio.createAudioRenderer8+
@@ -72,7 +126,7 @@ Obtains an **AudioRenderer** instance. This API uses an asynchronous callback to
**Example**
-```
+```js
import audio from '@ohos.multimedia.audio';
var audioStreamInfo = {
samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_44100,
@@ -94,9 +148,9 @@ var audioRendererOptions = {
audio.createAudioRenderer(audioRendererOptions,(err, data) => {
if (err) {
- console.error(`AudioRenderer Created: Error: ${err.message}`);
+ console.error(`AudioRenderer Created: Error: ${err}`);
} else {
- console.info(`AudioRenderer Created: Success: SUCCESS`);
+ console.info('AudioRenderer Created: Success: SUCCESS');
let audioRenderer = data;
}
});
@@ -124,7 +178,7 @@ Obtains an **AudioRenderer** instance. This API uses a promise to return the res
**Example**
-```
+```js
import audio from '@ohos.multimedia.audio';
var audioStreamInfo = {
@@ -148,9 +202,9 @@ var audioRendererOptions = {
var audioRenderer;
audio.createAudioRenderer(audioRendererOptions).then((data) => {
audioRenderer = data;
- console.info(`AudioFrameworkRenderLog: AudioRenderer Created : Success : Stream Type: SUCCESS`);
+ console.info('AudioFrameworkRenderLog: AudioRenderer Created : Success : Stream Type: SUCCESS');
}).catch((err) => {
- console.info(`AudioFrameworkRenderLog: AudioRenderer Created : ERROR :` + err.message);
+ console.error(`AudioFrameworkRenderLog: AudioRenderer Created : ERROR : ${err}`);
});
```
@@ -171,7 +225,7 @@ Obtains an **AudioCapturer** instance. This API uses an asynchronous callback to
**Example**
-```
+```js
import audio from '@ohos.multimedia.audio';
var audioStreamInfo = {
samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_44100,
@@ -192,9 +246,9 @@ var audioCapturerOptions = {
audio.createAudioCapturer(audioCapturerOptions, (err, data) => {
if (err) {
- console.error(`AudioCapturer Created : Error: ${err.message}`);
+ console.error(`AudioCapturer Created : Error: ${err}`);
} else {
- console.info(`AudioCapturer Created : Success : SUCCESS`);
+ console.info('AudioCapturer Created : Success : SUCCESS');
let audioCapturer = data;
}
});
@@ -222,7 +276,7 @@ Obtains an **AudioCapturer** instance. This API uses a promise to return the res
**Example**
-```
+```js
import audio from '@ohos.multimedia.audio';
var audioStreamInfo = {
@@ -245,9 +299,9 @@ var audioCapturerOptions = {
var audioCapturer;
audio.createAudioCapturer(audioCapturerOptions).then((data) => {
audioCapturer = data;
- console.info(`AudioCapturer Created : Success : Stream Type: SUCCESS`);
+ console.info('AudioCapturer Created : Success : Stream Type: SUCCESS');
}).catch((err) => {
- console.info(`AudioCapturer Created : ERROR : ` + err.message);
+ console.error(`AudioCapturer Created : ERROR : ${err}`);
});
```
@@ -263,7 +317,7 @@ Enumerates the audio stream types.
| RINGTONE | 2 | Audio stream for ringtones. |
| MEDIA | 3 | Audio stream for media purpose. |
| VOICE_ASSISTANT8+ | 9 | Audio stream for voice assistant.|
-
+| ALL9+ | 100 | All public audio streams.
This is a system API and cannot be called by third-party applications.|
## InterruptMode9+
@@ -282,11 +336,15 @@ Enumerates the audio device flags.
**System capability**: SystemCapability.Multimedia.Audio.Device
-| Name | Default Value| Description |
-| ------------------- | ------ | ---------- |
-| OUTPUT_DEVICES_FLAG | 1 | Output device.|
-| INPUT_DEVICES_FLAG | 2 | Input device.|
-| ALL_DEVICES_FLAG | 3 | All devices.|
+| Name | Default Value | Description |
+| ------------------------------- | ------ | ------------------------------------------------- |
+| NONE_DEVICES_FLAG9+ | 0 | No flag.
This is a system API and cannot be called by third-party applications. |
+| OUTPUT_DEVICES_FLAG | 1 | Output device.|
+| INPUT_DEVICES_FLAG | 2 | Input device.|
+| ALL_DEVICES_FLAG | 3 | All devices.|
+| DISTRIBUTED_OUTPUT_DEVICES_FLAG9+ | 4 | Distributed output device.
This is a system API and cannot be called by third-party applications. |
+| DISTRIBUTED_INPUT_DEVICES_FLAG9+ | 8 | Distributed input device.
This is a system API and cannot be called by third-party applications. |
+| ALL_DISTRIBUTED_DEVICES_FLAG9+ | 12 | Distributed input and output devices.
This is a system API and cannot be called by third-party applications. |
## DeviceRole
@@ -307,17 +365,18 @@ Enumerates the audio device types.
**System capability**: SystemCapability.Multimedia.Audio.Device
-| Name | Default Value| Description |
-| ---------------- | ------ | --------------------------------------------------------- |
-| INVALID | 0 | Invalid device. |
-| EARPIECE | 1 | Earpiece. |
-| SPEAKER | 2 | Speaker. |
-| WIRED_HEADSET | 3 | Wired headset with a microphone. |
-| WIRED_HEADPHONES | 4 | Wired headset without microphone. |
-| BLUETOOTH_SCO | 7 | Bluetooth device using Synchronous Connection Oriented (SCO) links. |
-| BLUETOOTH_A2DP | 8 | Bluetooth device using Advanced Audio Distribution Profile (A2DP) links.|
-| MIC | 15 | Microphone. |
-| USB_HEADSET | 22 | USB Type-C headset. |
+| Name | Default Value| Description |
+| ---------------------| ------ | --------------------------------------------------------- |
+| INVALID | 0 | Invalid device. |
+| EARPIECE | 1 | Earpiece. |
+| SPEAKER | 2 | Speaker. |
+| WIRED_HEADSET | 3 | Wired headset with a microphone. |
+| WIRED_HEADPHONES | 4 | Wired headset without microphone. |
+| BLUETOOTH_SCO | 7 | Bluetooth device using Synchronous Connection Oriented (SCO) links. |
+| BLUETOOTH_A2DP | 8 | Bluetooth device using Advanced Audio Distribution Profile (A2DP) links.|
+| MIC | 15 | Microphone. |
+| USB_HEADSET | 22 | USB Type-C headset. |
+| DEFAULT9+ | 1000 | Default device type. |
## ActiveDeviceType
@@ -431,6 +490,8 @@ Enumerates the audio stream usage.
Enumerates the focus types.
+**System API**: This is a system API.
+
**System capability**: SystemCapability.Multimedia.Audio.Core
| Name | Default Value | Description |
@@ -539,17 +600,6 @@ Describes audio renderer information.
| usage | [StreamUsage](#streamusage) | Yes | Audio stream usage.|
| rendererFlags | number | Yes | Audio renderer flags.|
-## AudioRendererFlag9+
-
-Enumerates the audio renderer flags that determine the output policy.
-
-**System capability**: SystemCapability.Multimedia.Audio.Core
-
-| Name | Default Value | Description |
-| ------------------| ------------ | ---------------------- |
-| FLAG_NONE | 0 | There is no special policy. |
-| FLAG_LOW_LATENCY | 1 | A low-latency process is used. |
-
## AudioRendererOptions8+
Describes audio renderer configurations.
@@ -602,7 +652,7 @@ Describes the callback invoked for audio interruption or focus gain events.
Describes the event received by the application when the volume is changed.
-This is a system API and cannot be called by third-party applications.
+**System API**: This is a system API.
**System capability**: SystemCapability.Multimedia.Audio.Volume
@@ -611,6 +661,55 @@ This is a system API and cannot be called by third-party applications.
| volumeType | [AudioVolumeType](#audiovolumetype) | Yes | Audio stream type. |
| volume | number | Yes | Volume level. The value range can be obtained by calling **getMinVolume** and **getMaxVolume**.|
| updateUi | boolean | Yes | Whether to show the volume change in UI. |
+| volumeGroupId9+ | number | Yes | Volume group ID. It can be used as an input parameter of **getGroupManager**. |
+| networkId9+ | string | Yes | Network ID. |
+
+## ConnectType9+
+
+Enumerates the types of connected devices.
+
+**System capability**: SystemCapability.Multimedia.Audio.Device
+
+| Name | Default Value| Description |
+| :------------------------------ | :----- | :--------------------- |
+| CONNECT_TYPE_LOCAL | 1 | Local device. |
+| CONNECT_TYPE_DISTRIBUTED | 2 | Distributed device. |
+
+## VolumeGroupInfo9+
+
+Describes the volume group information.
+
+**System API**: This is a system API.
+
+**System capability**: SystemCapability.Multimedia.Audio.Volume
+
+| Name | Type | Readable| Writable| Description |
+| -------------------------- | -------------------------- | ---- | ---- | ---------- |
+| networkId9+ | string | Yes | No | Network ID of the device. |
+| groupId9+ | number | Yes | No | Group ID of the device.|
+| mappingId9+ | number | Yes | No | Group mapping ID.|
+| groupName9+ | number | Yes | No | Group name.|
+| ConnectType9+ | [ConnectType](#connecttype9)| Yes | No | Type of the connected device.|
+
+## VolumeGroupInfos9+
+
+Describes the volume group information. The value is an array of [VolumeGroupInfo](#volumegroupinfo9) and is read-only.
+
+**System API**: This is a system API.
+
+**System capability**: SystemCapability.Multimedia.Audio.Volume
+
+**Example**
+
+```js
+import audio from '@ohos.multimedia.audio';
+
+async function getVolumeGroupInfos(){
+ let volumegroupinfos = await audio.getAudioManager().getVolumeGroups(audio.LOCAL_NETWORK_ID);
+ console.info('Promise returned to indicate that the volumeGroup list is obtained.'+JSON.stringify(volumegroupinfos))
+}
+getVolumeGroupInfos();
+```
## DeviceChangeAction
@@ -656,17 +755,6 @@ Describes audio capturer information.
| source | [SourceType](#sourcetype) | Yes | Audio source type. |
| capturerFlags | number | Yes | Audio capturer flags.|
-## AudioRendererDataInfo9+
-
-Describes the information of the audio renderer.
-
-**System capability**: SystemCapability.Multimedia.Audio.Renderer
-
-| Name | Type | Mandatory | Description |
-| ------- | ----------- | -------| ------------------------ |
-| buffer | ArrayBuffer | Yes | Buffer to be filled in. |
-| flags | number | Yes | Extension information of the buffer. |
-
## SourceType8+
Enumerates the audio source types.
@@ -692,17 +780,70 @@ Enumerates the audio scenes.
| AUDIO_SCENE_PHONE_CALL | 2 | Phone call audio scene.
This is a system API and cannot be called by third-party applications.|
| AUDIO_SCENE_VOICE_CHAT | 3 | Voice chat audio scene. |
+
## AudioManager
Implements audio volume and audio device management. Before calling any API in **AudioManager**, you must use [getAudioManager](#audiogetaudiomanager) to create an **AudioManager** instance.
+### getRoutingManager9+
+
+getRoutingManager(callback: AsyncCallback<AudioRoutingManager>): void
+
+Obtains an **AudioRoutingManager** instance. This API uses an asynchronous callback to return the result.
+
+**System capability**: SystemCapability.Multimedia.Audio.Device
+
+**Parameters**
+
+| Name | Type | Mandatory| Description |
+| ---------- | ---------------------------------------------------------------- | ---- | --------------------------------- |
+| callback | AsyncCallback<[AudioRoutingManager](#audioroutingmanager9)> | Yes | Callback used to return the **AudioRoutingManager** instance.|
+
+**Example**
+```js
+await audioManager.getRoutingManager((err, callback) => {
+ if (err) {
+ console.error(`Result ERROR: ${err}`);
+ }
+ console.info('getRoutingManager Callback SUCCESS.');
+ var audioRoutingManager;
+ audioRoutingManager = callback;
+});
+```
+
+### getRoutingManager9+
+
+getRoutingManager(): Promise<AudioRoutingManager>
+
+Obtains an **AudioRoutingManager** instance. This API uses a promise to return the result.
+
+**System capability**: SystemCapability.Multimedia.Audio.Device
+
+**Return value**
+
+| Type | Description |
+| ----------------------------------------------------------- | --------------------------------------- |
+| Promise<[AudioRoutingManager](#audioroutingmanager9)> | Promise used to return the **AudioRoutingManager** instance.|
+
+**Example**
+```js
+await audioManager.getRoutingManager().then((value) => {
+ var routingManager = value;
+ console.info('getRoutingManager Promise SUCCESS.');
+}).catch((err) => {
+ console.error(`Result ERROR: ${err}`);
+});
+```
+
### setVolume
setVolume(volumeType: AudioVolumeType, volume: number, callback: AsyncCallback<void>): void
Sets the volume for a stream. This API uses an asynchronous callback to return the result.
-**Required permissions**: ohos.permission.ACCESS_NOTIFICATION_POLICY (This permission is required only for muting or unmuting the ringer when **volumeType** is set to **AudioVolumeType.RINGTONE**.)
+**Required permissions**: ohos.permission.ACCESS_NOTIFICATION_POLICY
+
+This permission is required only for muting or unmuting the ringer when **volumeType** is set to **AudioVolumeType.RINGTONE**.
**System capability**: SystemCapability.Multimedia.Audio.Volume
@@ -716,13 +857,13 @@ Sets the volume for a stream. This API uses an asynchronous callback to return t
**Example**
-```
+```js
audioManager.setVolume(audio.AudioVolumeType.MEDIA, 10, (err) => {
if (err) {
- console.error(`Failed to set the volume. ${err.message}`);
+ console.error(`Failed to set the volume. ${err}`);
return;
}
- console.log(`Callback invoked to indicate a successful volume setting.`);
+ console.info('Callback invoked to indicate a successful volume setting.');
});
```
@@ -732,7 +873,9 @@ setVolume(volumeType: AudioVolumeType, volume: number): Promise<void>
Sets the volume for a stream. This API uses a promise to return the result.
-**Required permissions**: ohos.permission.ACCESS_NOTIFICATION_POLICY (This permission is required only for muting or unmuting the ringer when **volumeType** is set to **AudioVolumeType.RINGTONE**.)
+**Required permissions**: ohos.permission.ACCESS_NOTIFICATION_POLICY
+
+This permission is required only for muting or unmuting the ringer when **volumeType** is set to **AudioVolumeType.RINGTONE**.
**System capability**: SystemCapability.Multimedia.Audio.Volume
@@ -751,9 +894,9 @@ Sets the volume for a stream. This API uses a promise to return the result.
**Example**
-```
+```js
audioManager.setVolume(audio.AudioVolumeType.MEDIA, 10).then(() => {
- console.log(`Promise returned to indicate a successful volume setting.`);
+ console.info('Promise returned to indicate a successful volume setting.');
});
```
@@ -774,13 +917,13 @@ Obtains the volume of a stream. This API uses an asynchronous callback to return
**Example**
-```
+```js
audioManager.getVolume(audio.AudioVolumeType.MEDIA, (err, value) => {
if (err) {
- console.error(`Failed to obtain the volume. ${err.message}`);
+ console.error(`Failed to obtain the volume. ${err}`);
return;
}
- console.log(`Callback invoked to indicate that the volume is obtained.`);
+ console.info('Callback invoked to indicate that the volume is obtained.');
});
```
@@ -806,9 +949,9 @@ Obtains the volume of a stream. This API uses a promise to return the result.
**Example**
-```
+```js
audioManager.getVolume(audio.AudioVolumeType.MEDIA).then((value) => {
- console.log(`Promise returned to indicate that the volume is obtained.` + value);
+ console.info(`Promise returned to indicate that the volume is obtained ${value} .`);
});
```
@@ -829,13 +972,13 @@ Obtains the minimum volume allowed for a stream. This API uses an asynchronous c
**Example**
-```
+```js
audioManager.getMinVolume(audio.AudioVolumeType.MEDIA, (err, value) => {
if (err) {
- console.error(`Failed to obtain the minimum volume. ${err.message}`);
+ console.error(`Failed to obtain the minimum volume. ${err}`);
return;
}
- console.log(`Callback invoked to indicate that the minimum volume is obtained.` + value);
+ console.info(`Callback invoked to indicate that the minimum volume is obtained. ${value}`);
});
```
@@ -861,9 +1004,9 @@ Obtains the minimum volume allowed for a stream. This API uses a promise to retu
**Example**
-```
+```js
audioManager.getMinVolume(audio.AudioVolumeType.MEDIA).then((value) => {
- console.log(`Promised returned to indicate that the minimum volume is obtained.` + value);
+ console.info(`Promised returned to indicate that the minimum volume is obtained. ${value}`);
});
```
@@ -884,13 +1027,13 @@ Obtains the maximum volume allowed for a stream. This API uses an asynchronous c
**Example**
-```
+```js
audioManager.getMaxVolume(audio.AudioVolumeType.MEDIA, (err, value) => {
if (err) {
- console.error(`Failed to obtain the maximum volume. ${err.message}`);
+ console.error(`Failed to obtain the maximum volume. ${err}`);
return;
}
- console.log(`Callback invoked to indicate that the maximum volume is obtained.` + value);
+ console.info(`Callback invoked to indicate that the maximum volume is obtained. ${value}`);
});
```
@@ -916,9 +1059,9 @@ Obtains the maximum volume allowed for a stream. This API uses a promise to retu
**Example**
-```
+```js
audioManager.getMaxVolume(audio.AudioVolumeType.MEDIA).then((data) => {
- console.log(`Promised returned to indicate that the maximum volume is obtained.`);
+ console.info('Promised returned to indicate that the maximum volume is obtained.');
});
```
@@ -928,7 +1071,9 @@ mute(volumeType: AudioVolumeType, mute: boolean, callback: AsyncCallback<void
Mutes or unmutes a stream. This API uses an asynchronous callback to return the result.
-**Required permissions**: ohos.permission.ACCESS_NOTIFICATION_POLICY (This permission is required only for muting or unmuting the ringer when **volumeType** is set to **AudioVolumeType.RINGTONE**.)
+**Required permissions**: ohos.permission.ACCESS_NOTIFICATION_POLICY
+
+This permission is required only for muting or unmuting the ringer when **volumeType** is set to **AudioVolumeType.RINGTONE**.
**System capability**: SystemCapability.Multimedia.Audio.Volume
@@ -942,13 +1087,13 @@ Mutes or unmutes a stream. This API uses an asynchronous callback to return the
**Example**
-```
+```js
audioManager.mute(audio.AudioVolumeType.MEDIA, true, (err) => {
if (err) {
- console.error(`Failed to mute the stream. ${err.message}`);
+ console.error(`Failed to mute the stream. ${err}`);
return;
}
- console.log(`Callback invoked to indicate that the stream is muted.`);
+ console.info('Callback invoked to indicate that the stream is muted.');
});
```
@@ -958,7 +1103,9 @@ mute(volumeType: AudioVolumeType, mute: boolean): Promise<void>
Mutes or unmutes a stream. This API uses a promise to return the result.
-**Required permissions**: ohos.permission.ACCESS_NOTIFICATION_POLICY (This permission is required only for muting or unmuting the ringer when **volumeType** is set to **AudioVolumeType.RINGTONE**.)
+**Required permissions**: ohos.permission.ACCESS_NOTIFICATION_POLICY
+
+This permission is required only for muting or unmuting the ringer when **volumeType** is set to **AudioVolumeType.RINGTONE**.
**System capability**: SystemCapability.Multimedia.Audio.Volume
@@ -978,9 +1125,9 @@ Mutes or unmutes a stream. This API uses a promise to return the result.
**Example**
-```
+```js
audioManager.mute(audio.AudioVolumeType.MEDIA, true).then(() => {
- console.log(`Promise returned to indicate that the stream is muted.`);
+ console.info('Promise returned to indicate that the stream is muted.');
});
```
@@ -1002,13 +1149,13 @@ Checks whether a stream is muted. This API uses an asynchronous callback to retu
**Example**
-```
+```js
audioManager.isMute(audio.AudioVolumeType.MEDIA, (err, value) => {
if (err) {
- console.error(`Failed to obtain the mute status. ${err.message}`);
+ console.error(`Failed to obtain the mute status. ${err}`);
return;
}
- console.log(`Callback invoked to indicate that the mute status of the stream is obtained.` + value);
+ console.info(`Callback invoked to indicate that the mute status of the stream is obtained. ${value}`);
});
```
@@ -1035,9 +1182,9 @@ Checks whether a stream is muted. This method uses a promise to return the resul
**Example**
-```
+```js
audioManager.isMute(audio.AudioVolumeType.MEDIA).then((value) => {
- console.log(`Promise returned to indicate that the mute status of the stream is obtained.` + value);
+ console.info(`Promise returned to indicate that the mute status of the stream is obtained ${value}.`);
});
```
@@ -1058,13 +1205,13 @@ Checks whether a stream is active. This API uses an asynchronous callback to ret
**Example**
-```
+```js
audioManager.isActive(audio.AudioVolumeType.MEDIA, (err, value) => {
if (err) {
- console.error(`Failed to obtain the active status of the stream. ${err.message}`);
+ console.error(`Failed to obtain the active status of the stream. ${err}`);
return;
}
- console.log(`Callback invoked to indicate that the active status of the stream is obtained.` + value);
+ console.info(`Callback invoked to indicate that the active status of the stream is obtained ${value}.`);
});
```
@@ -1090,9 +1237,9 @@ Checks whether a stream is active. This method uses a promise to return the resu
**Example**
-```
+```js
audioManager.isActive(audio.AudioVolumeType.MEDIA).then((value) => {
- console.log(`Promise returned to indicate that the active status of the stream is obtained.` + value);
+ console.info(`Promise returned to indicate that the active status of the stream is obtained ${value}.`);
});
```
@@ -1102,7 +1249,9 @@ setRingerMode(mode: AudioRingMode, callback: AsyncCallback<void>): void
Sets the ringer mode. This API uses an asynchronous callback to return the result.
-**Required permissions**: ohos.permission.ACCESS_NOTIFICATION_POLICY (This permission is required only for muting or unmuting the ringer.)
+**Required permissions**: ohos.permission.ACCESS_NOTIFICATION_POLICY
+
+This permission is required only for muting or unmuting the ringer.
**System capability**: SystemCapability.Multimedia.Audio.Communication
@@ -1115,13 +1264,13 @@ Sets the ringer mode. This API uses an asynchronous callback to return the resul
**Example**
-```
+```js
audioManager.setRingerMode(audio.AudioRingMode.RINGER_MODE_NORMAL, (err) => {
if (err) {
- console.error(`Failed to set the ringer mode. ${err.message}`);
+ console.error(`Failed to set the ringer mode. ${err}`);
return;
}
- console.log(`Callback invoked to indicate a successful setting of the ringer mode.`);
+ console.info('Callback invoked to indicate a successful setting of the ringer mode.');
});
```
@@ -1131,7 +1280,9 @@ setRingerMode(mode: AudioRingMode): Promise<void>
Sets the ringer mode. This API uses a promise to return the result.
-**Required permissions**: ohos.permission.ACCESS_NOTIFICATION_POLICY (This permission is required only for muting or unmuting the ringer.)
+**Required permissions**: ohos.permission.ACCESS_NOTIFICATION_POLICY
+
+This permission is required only for muting or unmuting the ringer.
**System capability**: SystemCapability.Multimedia.Audio.Communication
@@ -1149,9 +1300,9 @@ Sets the ringer mode. This API uses a promise to return the result.
**Example**
-```
+```js
audioManager.setRingerMode(audio.AudioRingMode.RINGER_MODE_NORMAL).then(() => {
- console.log(`Promise returned to indicate a successful setting of the ringer mode.`);
+ console.info('Promise returned to indicate a successful setting of the ringer mode.');
});
```
@@ -1172,13 +1323,13 @@ Obtains the ringer mode. This API uses an asynchronous callback to return the re
**Example**
-```
+```js
audioManager.getRingerMode((err, value) => {
if (err) {
- console.error(`Failed to obtain the ringer mode. ${err.message}`);
+ console.error(`Failed to obtain the ringer mode. ${err}`);
return;
}
- console.log(`Callback invoked to indicate that the ringer mode is obtained.` + value);
+ console.info(`Callback invoked to indicate that the ringer mode is obtained ${value}.`);
});
```
@@ -1199,9 +1350,9 @@ Obtains the ringer mode. This API uses a promise to return the result.
**Example**
-```
+```js
audioManager.getRingerMode().then((value) => {
- console.log(`Promise returned to indicate that the ringer mode is obtained.` + value);
+ console.info(`Promise returned to indicate that the ringer mode is obtained ${value}.`);
});
```
@@ -1227,13 +1378,13 @@ This API is used to extend the audio configuration based on the hardware capabil
**Example**
-```
+```js
audioManager.setAudioParameter('key_example', 'value_example', (err) => {
if (err) {
- console.error(`Failed to set the audio parameter. ${err.message}`);
+ console.error(`Failed to set the audio parameter. ${err}`);
return;
}
- console.log(`Callback invoked to indicate a successful setting of the audio parameter.`);
+ console.info('Callback invoked to indicate a successful setting of the audio parameter.');
});
```
@@ -1264,9 +1415,9 @@ This API is used to extend the audio configuration based on the hardware capabil
**Example**
-```
+```js
audioManager.setAudioParameter('key_example', 'value_example').then(() => {
- console.log(`Promise returned to indicate a successful setting of the audio parameter.`);
+ console.info('Promise returned to indicate a successful setting of the audio parameter.');
});
```
@@ -1289,13 +1440,13 @@ This API is used to extend the audio configuration based on the hardware capabil
**Example**
-```
+```js
audioManager.getAudioParameter('key_example', (err, value) => {
if (err) {
- console.error(`Failed to obtain the value of the audio parameter. ${err.message}`);
+ console.error(`Failed to obtain the value of the audio parameter. ${err}`);
return;
}
- console.log(`Callback invoked to indicate that the value of the audio parameter is obtained.` + value);
+ console.info(`Callback invoked to indicate that the value of the audio parameter is obtained ${value}.`);
});
```
@@ -1323,9 +1474,9 @@ This API is used to extend the audio configuration based on the hardware capabil
**Example**
-```
+```js
audioManager.getAudioParameter('key_example').then((value) => {
- console.log(`Promise returned to indicate that the value of the audio parameter is obtained.` + value);
+ console.info(`Promise returned to indicate that the value of the audio parameter is obtained ${value}.`);
});
```
@@ -1345,13 +1496,13 @@ Obtains the audio devices with a specific flag. This API uses an asynchronous ca
| callback | AsyncCallback<[AudioDeviceDescriptors](#audiodevicedescriptors)> | Yes | Callback used to return the device list.|
**Example**
-```
+```js
audioManager.getDevices(audio.DeviceFlag.OUTPUT_DEVICES_FLAG, (err, value) => {
if (err) {
- console.error(`Failed to obtain the device list. ${err.message}`);
+ console.error(`Failed to obtain the device list. ${err}`);
return;
}
- console.log(`Callback invoked to indicate that the device list is obtained.`);
+ console.info('Callback invoked to indicate that the device list is obtained.');
});
```
@@ -1377,9 +1528,9 @@ Obtains the audio devices with a specific flag. This API uses a promise to retur
**Example**
-```
+```js
audioManager.getDevices(audio.DeviceFlag.OUTPUT_DEVICES_FLAG).then((data) => {
- console.log(`Promise returned to indicate that the device list is obtained.`);
+ console.info('Promise returned to indicate that the device list is obtained.');
});
```
@@ -1401,13 +1552,13 @@ Sets a device to the active state. This API uses an asynchronous callback to ret
**Example**
-```
+```js
audioManager.setDeviceActive(audio.ActiveDeviceType.SPEAKER, true, (err) => {
if (err) {
- console.error(`Failed to set the active status of the device. ${err.message}`);
+ console.error(`Failed to set the active status of the device. ${err}`);
return;
}
- console.log(`Callback invoked to indicate that the device is set to the active status.`);
+ console.info('Callback invoked to indicate that the device is set to the active status.');
});
```
@@ -1435,9 +1586,9 @@ Sets a device to the active state. This API uses a promise to return the result.
**Example**
-```
+```js
audioManager.setDeviceActive(audio.ActiveDeviceType.SPEAKER, true).then(() => {
- console.log(`Promise returned to indicate that the device is set to the active status.`);
+ console.info('Promise returned to indicate that the device is set to the active status.');
});
```
@@ -1458,13 +1609,13 @@ Checks whether a device is active. This API uses an asynchronous callback to ret
**Example**
-```
+```js
audioManager.isDeviceActive(audio.ActiveDeviceType.SPEAKER, (err, value) => {
if (err) {
- console.error(`Failed to obtain the active status of the device. ${err.message}`);
+ console.error(`Failed to obtain the active status of the device. ${err}`);
return;
}
- console.log(`Callback invoked to indicate that the active status of the device is obtained.`);
+ console.info('Callback invoked to indicate that the active status of the device is obtained.');
});
```
@@ -1491,9 +1642,9 @@ Checks whether a device is active. This API uses a promise to return the result.
**Example**
-```
+```js
audioManager.isDeviceActive(audio.ActiveDeviceType.SPEAKER).then((value) => {
- console.log(`Promise returned to indicate that the active status of the device is obtained.` + value);
+ console.info(`Promise returned to indicate that the active status of the device is obtained ${value}.`);
});
```
@@ -1516,13 +1667,13 @@ Mutes or unmutes the microphone. This API uses an asynchronous callback to retur
**Example**
-```
+```js
audioManager.setMicrophoneMute(true, (err) => {
if (err) {
- console.error(`Failed to mute the microphone. ${err.message}`);
+ console.error(`Failed to mute the microphone. ${err}`);
return;
}
- console.log(`Callback invoked to indicate that the microphone is muted.`);
+ console.info('Callback invoked to indicate that the microphone is muted.');
});
```
@@ -1550,9 +1701,9 @@ Mutes or unmutes the microphone. This API uses a promise to return the result.
**Example**
-```
+```js
audioManager.setMicrophoneMute(true).then(() => {
- console.log(`Promise returned to indicate that the microphone is muted.`);
+ console.info('Promise returned to indicate that the microphone is muted.');
});
```
@@ -1574,13 +1725,13 @@ Checks whether the microphone is muted. This API uses an asynchronous callback t
**Example**
-```
+```js
audioManager.isMicrophoneMute((err, value) => {
if (err) {
- console.error(`Failed to obtain the mute status of the microphone. ${err.message}`);
+ console.error(`Failed to obtain the mute status of the microphone. ${err}`);
return;
}
- console.log(`Callback invoked to indicate that the mute status of the microphone is obtained.` + value);
+ console.info(`Callback invoked to indicate that the mute status of the microphone is obtained ${value}.`);
});
```
@@ -1603,9 +1754,9 @@ Checks whether the microphone is muted. This API uses a promise to return the re
**Example**
-```
+```js
audioManager.isMicrophoneMute().then((value) => {
- console.log(`Promise returned to indicate that the mute status of the microphone is obtained.`, + value);
+ console.info(`Promise returned to indicate that the mute status of the microphone is obtained ${value}.`);
});
```
@@ -1615,7 +1766,7 @@ on(type: 'volumeChange', callback: Callback\): void
Subscribes to system volume change events.
-This is a system API and cannot be called by third-party applications.
+**System API**: This is a system API.
Currently, when multiple **AudioManager** instances are used in a single process, only the subscription of the last instance takes effect, and the subscription of other instances is overwritten (even if the last instance does not initiate a subscription). Therefore, you are advised to use a single **AudioManager** instance.
@@ -1630,11 +1781,11 @@ Currently, when multiple **AudioManager** instances are used in a single process
**Example**
-```
+```js
audioManager.on('volumeChange', (volumeEvent) => {
- console.log(`VolumeType of stream: ` + volumeEvent.volumeType);
- console.log(`Volume level: ` + volumeEvent.volume);
- console.log(`Whether to updateUI: ` + volumeEvent.updateUi);
+ console.info(`VolumeType of stream: ${volumeEvent.volumeType} `);
+ console.info(`Volume level: ${volumeEvent.volume} `);
+ console.info(`Whether to updateUI: ${volumeEvent.updateUi} `);
});
```
@@ -1644,7 +1795,7 @@ on(type: 'ringerModeChange', callback: Callback\): void
Subscribes to ringer mode change events.
-This is a system API and cannot be called by third-party applications.
+**System API**: This is a system API.
**System capability**: SystemCapability.Multimedia.Audio.Communication
@@ -1653,13 +1804,13 @@ This is a system API and cannot be called by third-party applications.
| Name | Type | Mandatory| Description |
| -------- | ----------------------------------------- | ---- | ------------------------------------------------------------ |
| type | string | Yes | Event type. The value **ringerModeChange** means the ringer mode change event, which is triggered when a ringer mode change is detected.|
-| callback | Callback<[AudioRingMode](#audioringmode)> | Yes | Callback used to return the updated ringer mode. |
+| callback | Callback<[AudioRingMode](#audioringmode)> | Yes | Callback used to return the system volume change event. |
**Example**
-```
+```js
audioManager.on('ringerModeChange', (ringerMode) => {
- console.log(`Updated ringermode: ` + ringerMode);
+ console.info(`Updated ringermode: ${ringerMode}`);
});
```
@@ -1680,12 +1831,12 @@ Subscribes to device change events. When a device is connected or disconnected,
**Example**
-```
+```js
audioManager.on('deviceChange', (deviceChanged) => {
- console.info(`device change type : ` + deviceChanged.type);
- console.info(`device descriptor size : ` + deviceChanged.deviceDescriptors.length);
- console.info(`device change descriptor : ` + deviceChanged.deviceDescriptors[0].deviceRole);
- console.info(`device change descriptor : ` + deviceChanged.deviceDescriptors[0].deviceType);
+ console.info(`device change type : ${deviceChanged.type} `);
+ console.info(`device descriptor size : ${deviceChanged.deviceDescriptors.length} `);
+ console.info(`device change descriptor : ${deviceChanged.deviceDescriptors[0].deviceRole} `);
+ console.info(`device change descriptor : ${deviceChanged.deviceDescriptors[0].deviceType} `);
});
```
@@ -1706,9 +1857,9 @@ Unsubscribes from device change events.
**Example**
-```
+```js
audioManager.off('deviceChange', (deviceChanged) => {
- console.log(`Should be no callback.`);
+ console.info('Should be no callback.');
});
```
@@ -1730,7 +1881,7 @@ Subscribes to audio interruption events. When the application's audio is interru
**Example**
-```
+```js
var interAudioInterrupt = {
streamUsage:2,
contentType:0,
@@ -1738,12 +1889,12 @@ var interAudioInterrupt = {
};
audioManager.on('interrupt', interAudioInterrupt, (InterruptAction) => {
if (InterruptAction.actionType === 0) {
- console.log(`An event to gain the audio focus starts.`);
- console.log(`Focus gain event:` + JSON.stringify(InterruptAction));
+ console.info('An event to gain the audio focus starts.');
+ console.info(`Focus gain event: ${InterruptAction} `);
}
if (InterruptAction.actionType === 1) {
- console.log(`An audio interruption event starts.`);
- console.log(`Audio interruption event:` + JSON.stringify(InterruptAction));
+ console.info('An audio interruption event starts.');
+ console.info(`Audio interruption event: ${InterruptAction} `);
}
});
```
@@ -1766,7 +1917,7 @@ Unsubscribes from audio interruption events.
**Example**
-```
+```js
var interAudioInterrupt = {
streamUsage:2,
contentType:0,
@@ -1774,8 +1925,8 @@ var interAudioInterrupt = {
};
audioManager.off('interrupt', interAudioInterrupt, (InterruptAction) => {
if (InterruptAction.actionType === 0) {
- console.log(`An event to release the audio focus starts.`);
- console.log(`Focus release event:` + JSON.stringify(InterruptAction));
+ console.info('An event to release the audio focus starts.');
+ console.info(`Focus release event: ${InterruptAction} `);
}
});
```
@@ -1786,7 +1937,7 @@ setAudioScene\(scene: AudioScene, callback: AsyncCallback\): void
Sets an audio scene. This API uses an asynchronous callback to return the result.
-This is a system API and cannot be called by third-party applications.
+**System API**: This is a system API.
**System capability**: SystemCapability.Multimedia.Audio.Communication
@@ -1799,13 +1950,13 @@ This is a system API and cannot be called by third-party applications.
**Example**
-```
+```js
audioManager.setAudioScene(audio.AudioScene.AUDIO_SCENE_PHONE_CALL, (err) => {
if (err) {
- console.error(`Failed to set the audio scene mode. ${err.message}`);
+ console.error(`Failed to set the audio scene mode. ${err}`);
return;
}
- console.log(`Callback invoked to indicate a successful setting of the audio scene mode.`);
+ console.info('Callback invoked to indicate a successful setting of the audio scene mode.');
});
```
@@ -1815,7 +1966,7 @@ setAudioScene\(scene: AudioScene\): Promise
Sets an audio scene. This API uses a promise to return the result.
-This is a system API and cannot be called by third-party applications.
+**System API**: This is a system API.
**System capability**: SystemCapability.Multimedia.Audio.Communication
@@ -1833,11 +1984,11 @@ This is a system API and cannot be called by third-party applications.
**Example**
-```
+```js
audioManager.setAudioScene(audio.AudioScene.AUDIO_SCENE_PHONE_CALL).then(() => {
- console.log(`Promise returned to indicate a successful setting of the audio scene mode.`);
+ console.info('Promise returned to indicate a successful setting of the audio scene mode.');
}).catch ((err) => {
- console.log(`Failed to set the audio scene mode`);
+ console.error(`Failed to set the audio scene mode ${err}`);
});
```
@@ -1857,13 +2008,13 @@ Obtains the audio scene. This API uses an asynchronous callback to return the re
**Example**
-```
+```js
audioManager.getAudioScene((err, value) => {
if (err) {
- console.error(`Failed to obtain the audio scene mode. ${err.message}`);
+ console.error(`Failed to obtain the audio scene mode. ${err}`);
return;
}
- console.log(`Callback invoked to indicate that the audio scene mode is obtained.` + value);
+ console.info(`Callback invoked to indicate that the audio scene mode is obtained ${value}.`);
});
```
@@ -1884,388 +2035,1319 @@ Obtains the audio scene. This API uses a promise to return the result.
**Example**
-```
+```js
audioManager.getAudioScene().then((value) => {
- console.log(`Promise returned to indicate that the audio scene mode is obtained.` + value);
+ console.info(`Promise returned to indicate that the audio scene mode is obtained ${value}.`);
}).catch ((err) => {
- console.log(`Failed to obtain the audio scene mode`);
+ console.error(`Failed to obtain the audio scene mode ${err}`);
});
```
-## AudioStreamManager9+
-
-Implements audio stream management. Before calling any API of **AudioStreamManager**, you must use **[getStreamManager](#audiogetstreammanager9)** to obtain an **AudioStreamManager** instance.
+### getVolumeGroups9+
-### getCurrentAudioRendererInfoArray9+
+getVolumeGroups(networkId: string, callback: AsyncCallback\): void
-getCurrentAudioRendererInfoArray(callback: AsyncCallback<AudioRendererChangeInfoArray>): void
+Obtains the volume groups. This API uses an asynchronous callback to return the result.
-Obtains the information about the current audio renderers. This API uses an asynchronous callback to return the result.
+**System API**: This is a system API.
-**System capability**: SystemCapability.Multimedia.Audio.Renderer
+**System capability**: SystemCapability.Multimedia.Audio.Volume
**Parameters**
-| Name | Type | Mandatory | Description |
-| -------- | ----------------------------------- | -------- | --------------------------- |
-| callback | AsyncCallback<[AudioRendererChangeInfoArray](#audiorendererchangeinfoarray9)> | Yes | Callback used to return the audio renderer information.|
+| Name | Type | Mandatory| Description |
+| ---------- | ------------------------------------------------------------ | ---- | -------------------- |
+| networkId | string | Yes | Network ID of the device. The network ID of the local device is **audio.LOCAL_NETWORK_ID**. You can call **getRoutingManager().getDevices()** to obtain all network IDs. |
+| callback | AsyncCallback<[VolumeGroupInfos](#volumegroupinfos9)> | Yes | Callback used to return the volume group information array.|
**Example**
-```
-audioStreamManager.getCurrentAudioRendererInfoArray(async (err, AudioRendererChangeInfoArray) => {
- console.info(`getCurrentAudioRendererInfoArray **** Get Callback Called ****`);
+```js
+audioManager.getVolumeGroups(audio.LOCAL_NETWORK_ID, (err, value) => {
if (err) {
- console.log(`getCurrentAudioRendererInfoArray :ERROR: `+ err.message);
- resultFlag = false;
- } else {
- if (AudioRendererChangeInfoArray != null) {
- for (let i = 0; i < AudioRendererChangeInfoArray.length; i++) {
- AudioRendererChangeInfo = AudioRendererChangeInfoArray[i];
- console.info(`StreamId for` + i + `is:` + AudioRendererChangeInfo.streamId);
- console.info(`ClientUid for` + i + `is:` + AudioRendererChangeInfo.clientUid);
- console.info(`Content` + i + `is:` + AudioRendererChangeInfo.rendererInfo.content);
- console.info(`Stream`+ i + `is:` + AudioRendererChangeInfo.rendererInfo.usage);
- console.info(`Flag`+ i + `is:` + AudioRendererChangeInfo.rendererInfo.rendererFlags);
- console.info(`State for` + i + `is:` + AudioRendererChangeInfo.rendererState);
- var devDescriptor = AudioRendererChangeInfo.deviceDescriptors;
- for (let j = 0;j < AudioRendererChangeInfo.deviceDescriptors.length; j++) {
- console.info(`Id:` + i + `:` + AudioRendererChangeInfo.deviceDescriptors[j].id);
- console.info(`Type:` + i + `:` + AudioRendererChangeInfo.deviceDescriptors[j].deviceType);
- console.info(`Role:` + i + `:` + AudioRendererChangeInfo.deviceDescriptors[j].deviceRole);
- console.info(`Name:` + i + `:` + AudioRendererChangeInfo.deviceDescriptors[j].name);
- console.info(`Address:` + i + `:` + AudioRendererChangeInfo.deviceDescriptors[j].address);
- console.info(`SampleRates:` + i + `:` + AudioRendererChangeInfo.deviceDescriptors[j].sampleRates[0]);
- console.info(`ChannelCount` + i + `:` + AudioRendererChangeInfo.deviceDescriptors[j].channelCounts[0]);
- console.info(`ChannelMask:` + i + `:` + AudioRendererChangeInfo.deviceDescriptors[j].channelMasks);
- }
- }
- }
+ 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.');
});
```
-### getCurrentAudioRendererInfoArray9+
+### getVolumeGroups9+
-getCurrentAudioRendererInfoArray(): Promise<AudioRendererChangeInfoArray>
+getVolumeGroups(networkId: string\): Promise
-Obtains the information about the current audio renderers. This API uses a promise to return the result.
+Obtains the volume groups. This API uses a promise to return the result.
-**System capability**: SystemCapability.Multimedia.Audio.Renderer
+**System API**: This is a system API.
+
+**System capability**: SystemCapability.Multimedia.Audio.Volume
+
+**Parameters**
+
+| Name | Type | Mandatory| Description |
+| ---------- | ------------------------------------------------------------ | ---- | -------------------- |
+| networkId | string | Yes | Network ID of the device. The network ID of the local device is **audio.LOCAL_NETWORK_ID**. You can call **getRoutingManager().getDevices()** to obtain all network IDs. |
**Return value**
-| Type | Description |
-| ---------------------------------------------------------------------------------| --------------------------------------- |
-| Promise<[AudioRendererChangeInfoArray](#audiorendererchangeinfoarray9)> | Promise used to return the audio renderer information. |
+| Type | Description |
+| ------------------- | ----------------------------- |
+| Promise<[VolumeGroupInfos](#volumegroupinfos9)> | Volume group information list.|
**Example**
-```
-await audioStreamManager.getCurrentAudioRendererInfoArray().then( function (AudioRendererChangeInfoArray) {
- console.info(`getCurrentAudioRendererInfoArray ######### Get Promise is called ##########`);
- if (AudioRendererChangeInfoArray != null) {
- for (let i = 0; i < AudioRendererChangeInfoArray.length; i++) {
- AudioRendererChangeInfo = AudioRendererChangeInfoArray[i];
- console.info(`StreamId for` + i + ` is:` + AudioRendererChangeInfo.streamId);
- console.info(`ClientUid for` + i + ` is:` + AudioRendererChangeInfo.clientUid);
- console.info(`Content` + i + ` is:` + AudioRendererChangeInfo.rendererInfo.content);
- console.info(`Stream` + i + ` is:` + AudioRendererChangeInfo.rendererInfo.usage);
- console.info(`Flag` + i + ` is:` + AudioRendererChangeInfo.rendererInfo.rendererFlags);
- console.info(`State for` + i + ` is:` + AudioRendererChangeInfo.rendererState);
- var devDescriptor = AudioRendererChangeInfo.deviceDescriptors;
- for (let j = 0; j < AudioRendererChangeInfo.deviceDescriptors.length; j++) {
- console.info(`Id:` + i + `:` + AudioRendererChangeInfo.deviceDescriptors[j].id);
- console.info(`Type:` + i + `:` + AudioRendererChangeInfo.deviceDescriptors[j].deviceType);
- console.info(`Role:` + i + `:` + AudioRendererChangeInfo.deviceDescriptors[j].deviceRole);
- console.info(`Name:` + i + `:` + AudioRendererChangeInfo.deviceDescriptors[j].name);
- console.info(`Address:` + i + `:` + AudioRendererChangeInfo.deviceDescriptors[j].address);
- console.info(`SampleRates:` + i + `:` + AudioRendererChangeInfo.deviceDescriptors[j].sampleRates[0]);
- console.info(`ChannelCounts` + i + `:` + AudioRendererChangeInfo.deviceDescriptors[j].channelCounts[0]);
- console.info(`ChannnelMask:` + i + `:` + AudioRendererChangeInfo.deviceDescriptors[j].channelMasks);
- }
- }
- }
-}).catch((err) => {
- console.log(`getCurrentAudioRendererInfoArray :ERROR: ` + err.message);
-});
+
+```js
+async function getVolumeGroupInfos(){
+ let volumegroupinfos = await audio.getAudioManager().getVolumeGroups(audio.LOCAL_NETWORK_ID);
+ console.info('Promise returned to indicate that the volumeGroup list is obtained.'+JSON.stringify(volumegroupinfos))
+}
```
-### getCurrentAudioCapturerInfoArray9+
+### getGroupManager9+
-getCurrentAudioCapturerInfoArray(callback: AsyncCallback<AudioCapturerChangeInfoArray>): void
+getGroupManager(groupId: number, callback: AsyncCallback\): void
-Obtains the information about the current audio capturers. This API uses an asynchronous callback to return the result.
+Obtains the audio group manager. This API uses an asynchronous callback to return the result.
-**System capability**: SystemCapability.Multimedia.Audio.Renderer
+**System API**: This is a system API.
+
+**System capability**: SystemCapability.Multimedia.Audio.Volume
**Parameters**
-| Name | Type | Mandatory | Description |
-| ---------- | ----------------------------------- | --------- | -------------------------------------------------------- |
-| callback | AsyncCallback<[AudioCapturerChangeInfoArray](#audiocapturerchangeinfoarray9)> | Yes | Callback used to return the audio capturer information.|
+| Name | Type | Mandatory| Description |
+| ---------- | ------------------------------------------------------------ | ---- | -------------------- |
+| networkId | string | Yes | Network ID of the device. |
+| callback | AsyncCallback< [AudioGroupManager](#audiogroupmanager9) > | Yes | Callback used to return the audio group manager.|
**Example**
-```
-audioStreamManager.getCurrentAudioCapturerInfoArray(async (err, AudioCapturerChangeInfoArray) => {
- console.info(`getCurrentAudioCapturerInfoArray **** Get Callback Called ****`);
- if (err) {
- console.log(`getCurrentAudioCapturerInfoArray :ERROR: ` + err.message);
- } else {
- if (AudioCapturerChangeInfoArray != null) {
- for (let i = 0; i < AudioCapturerChangeInfoArray.length; i++) {
- console.info(`StreamId for ` + i + `is:` + AudioCapturerChangeInfoArray[i].streamId);
- console.info(`ClientUid for ` + i + `is:` + AudioCapturerChangeInfoArray[i].clientUid);
- 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;
- 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(`Address:` + i + `:` + AudioCapturerChangeInfoArray[i].deviceDescriptors[j].address);
- console.info(`SampleRates:` + i + `:` + AudioCapturerChangeInfoArray[i].deviceDescriptors[j].sampleRates[0]);
- console.info(`ChannelCounts` + i + `:` + AudioCapturerChangeInfoArray[i].deviceDescriptors[j].channelCounts[0]);
- console.info(`ChannelMask:` + i + `:` + AudioCapturerChangeInfoArray[i].deviceDescriptors[j].channelMasks);
- }
+
+```js
+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.');
+ });
}
-});
+}
```
-### getCurrentAudioCapturerInfoArray9+
+### getGroupManager9+
-getCurrentAudioCapturerInfoArray(): Promise<AudioCapturerChangeInfoArray>
+getGroupManager(groupId: number\): Promise
-Obtains the information about the current audio capturers. This API uses a promise to return the result.
+Obtains the audio group manager. This API uses a promise to return the result.
-**System capability**: SystemCapability.Multimedia.Audio.Renderer
+**System API**: This is a system API.
+
+**System capability**: SystemCapability.Multimedia.Audio.Volume
+
+**Parameters**
+
+| Name | Type | Mandatory| Description |
+| ---------- | ---------------------------------------- | ---- | -------------- -- |
+| networkId | string | Yes | Network ID of the device. |
**Return value**
-| Type | Description |
-| -----------------------------------------------------------------------------| ----------------------------------- |
-| Promise<[AudioCapturerChangeInfoArray](#audiocapturerchangeinfoarray9)> | Promise used to return the audio capturer information. |
+| Type | Description |
+| ------------------- | ----------------------------- |
+| Promise< [AudioGroupManager](#audiogroupmanager9) > | Promise used to return the audio group manager.|
**Example**
+
+```js
+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(audio.LOCAL_NETWORK_ID)
+ console.info('Callback invoked to indicate that the volume group infos list is obtained.');
+ }
+}
```
-await audioStreamManager.getCurrentAudioCapturerInfoArray().then( function (AudioCapturerChangeInfoArray) {
- console.info(`getCurrentAudioCapturerInfoArray **** Get Promise Called ****`);
- if (AudioCapturerChangeInfoArray != null) {
- for (let i = 0; i < AudioCapturerChangeInfoArray.length; i++) {
- console.info(`StreamId for ` + i + `is:` + AudioCapturerChangeInfoArray[i].streamId);
- console.info(`ClientUid for ` + i + `is:` + AudioCapturerChangeInfoArray[i].clientUid);
- 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;
+### requestIndependentInterrupt9+
+
+requestIndependentInterrupt(focusType: FocusType, callback: AsyncCallback\): void
+
+Requests independent interruption and obtains an interruption session ID. This API uses an asynchronous callback to return the result.
+
+**System API**: This is a system API.
+
+**System capability**: SystemCapability.Multimedia.Audio.Renderer
+
+**Parameters**
+
+| Name | Type | Mandatory| Description |
+| -------- | ----------------------------- | ---- | ----------------- |
+| focusType | [FocusType](#focustype) | Yes | Focus type. |
+| callback | AsyncCallback<boolean> | Yes | Callback used to return the result.|
+
+**Example**
+
+```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');
+ }
+}
+```
+### requestIndependentInterrupt9+
+
+requestIndependentInterrupt(focusType: FocusType: Promise
+
+Requests independent interruption and obtains an interruption session ID. This API uses a promise to return the result.
+
+**System API**: This is a system API.
+
+**System capability**: SystemCapability.Multimedia.Audio.Renderer
+
+**Parameters**
+
+| Name| Type| Mandatory| Description|
+| ------ | ---- | ---- | ---- |
+| focusType | [FocusType](#focustype) | Yes | Focus type. |
+
+**Return value**
+
+| Type | Description |
+| --------------------------------------------------------- | ------------ |
+| Promise<boolean> | Promise used to return the result.|
+
+**Example**
+
+```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');
+ });
+}
+```
+### abandonIndependentInterrupt9+
+
+abandonIndependentInterrupt(focusType: FocusType, callback: AsyncCallback\): void
+
+Abandons independent interruption. This API uses an asynchronous callback to return the result.
+
+**System API**: This is a system API.
+
+**System capability**: SystemCapability.Multimedia.Audio.Renderer
+
+**Parameters**
+
+| Name | Type | Mandatory| Description |
+| -------- | ----------------------------- | ---- | ----------------- |
+| focusType | [FocusType](#focustype) | Yes | Focus type. |
+| callback | AsyncCallback<boolean> | Yes | Callback used to return the result.|
+
+**Example**
+
+```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
+
+Abandons independent interruption. This API uses a promise to return the result.
+
+**System API**: This is a system API.
+
+**System capability**: SystemCapability.Multimedia.Audio.Renderer
+
+**Parameters**
+
+| Name| Type| Mandatory| Description|
+| ------ | ---- | ---- | ---- |
+| focusType | [FocusType](#focustype) | Yes | Focus type. |
+
+**Return value**
+
+| Type | Description |
+| --------------------------------------------------------- | ------------ |
+| Promise<boolean> | Promise used to return the result.|
+
+**Example**
+
+```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+
+Manages the volume of an audio group. Before calling any API in **AudioGroupManager**, you must use [getGroupManager](#getgroupmanager9) to create an **AudioGroupManager** instance.
+
+**System API**: This is a system API.
+
+**System capability**: SystemCapability.Multimedia.Audio.Volume
+
+### setVolume9+
+
+setVolume(volumeType: AudioVolumeType, volume: number, callback: AsyncCallback<void>): void
+
+Sets the volume for a stream. This API uses an asynchronous callback to return the result.
+
+**Required permissions**: ohos.permission.ACCESS_NOTIFICATION_POLICY
+
+This permission is required only for muting or unmuting the ringer when **volumeType** is set to **AudioVolumeType.RINGTONE**.
+
+**System capability**: SystemCapability.Multimedia.Audio.Volume
+
+**Parameters**
+
+| Name | Type | Mandatory| Description |
+| ---------- | ----------------------------------- | ---- | -------------------------------------------------------- |
+| volumeType | [AudioVolumeType](#audiovolumetype) | Yes | Audio stream type. |
+| volume | number | Yes | Volume to set. The value range can be obtained by calling **getMinVolume** and **getMaxVolume**.|
+| callback | AsyncCallback<void> | Yes | Callback used to return the result. |
+
+**Example**
+
+```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>
+
+Sets the volume for a stream. This API uses a promise to return the result.
+
+**Required permissions**: ohos.permission.ACCESS_NOTIFICATION_POLICY
+
+This permission is required only for muting or unmuting the ringer when **volumeType** is set to **AudioVolumeType.RINGTONE**.
+
+**System capability**: SystemCapability.Multimedia.Audio.Volume
+
+**Parameters**
+
+| Name | Type | Mandatory| Description |
+| ---------- | ----------------------------------- | ---- | -------------------------------------------------------- |
+| volumeType | [AudioVolumeType](#audiovolumetype) | Yes | Audio stream type. |
+| volume | number | Yes | Volume to set. The value range can be obtained by calling **getMinVolume** and **getMaxVolume**.|
+
+**Return value**
+
+| Type | Description |
+| ------------------- | ----------------------------- |
+| Promise<void> | Promise used to return the result.|
+
+**Example**
+
+```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
+
+Obtains the volume of a stream. This API uses an asynchronous callback to return the result.
+
+**System capability**: SystemCapability.Multimedia.Audio.Volume
+
+**Parameters**
+
+| Name | Type | Mandatory| Description |
+| ---------- | ----------------------------------- | ---- | ------------------ |
+| volumeType | [AudioVolumeType](#audiovolumetype) | Yes | Audio stream type. |
+| callback | AsyncCallback<number> | Yes | Callback used to return the volume.|
+
+**Example**
+
+```js
+audioGroupManager.getVolume(audio.AudioVolumeType.MEDIA, (err, value) => {
+ if (err) {
+ console.error(`Failed to obtain the volume. ${err}`);
+ return;
+ }
+ console.info('Callback invoked to indicate that the volume is obtained.');
+});
+```
+
+### getVolume9+
+
+getVolume(volumeType: AudioVolumeType): Promise<number>
+
+Obtains the volume of a stream. This API uses a promise to return the result.
+
+**System capability**: SystemCapability.Multimedia.Audio.Volume
+
+**Parameters**
+
+| Name | Type | Mandatory| Description |
+| ---------- | ----------------------------------- | ---- | ------------ |
+| volumeType | [AudioVolumeType](#audiovolumetype) | Yes | Audio stream type.|
+
+**Return value**
+
+| Type | Description |
+| --------------------- | ------------------------- |
+| Promise<number> | Promise used to return the volume.|
+
+**Example**
+
+```js
+audioGroupManager.getVolume(audio.AudioVolumeType.MEDIA).then((value) => {
+ console.info(`Promise returned to indicate that the volume is obtained ${value}.`);
+});
+```
+
+### getMinVolume9+
+
+getMinVolume(volumeType: AudioVolumeType, callback: AsyncCallback<number>): void
+
+Obtains the minimum volume allowed for a stream. This API uses an asynchronous callback to return the result.
+
+**System capability**: SystemCapability.Multimedia.Audio.Volume
+
+**Parameters**
+
+| Name | Type | Mandatory| Description |
+| ---------- | ----------------------------------- | ---- | ------------------ |
+| volumeType | [AudioVolumeType](#audiovolumetype) | Yes | Audio stream type. |
+| callback | AsyncCallback<number> | Yes | Callback used to return the minimum volume.|
+
+**Example**
+
+```js
+audioGroupManager.getMinVolume(audio.AudioVolumeType.MEDIA, (err, value) => {
+ if (err) {
+ console.error(`Failed to obtain the minimum volume. ${err}`);
+ return;
+ }
+ console.info(`Callback invoked to indicate that the minimum volume is obtained. ${value}`);
+});
+```
+
+### getMinVolume9+
+
+getMinVolume(volumeType: AudioVolumeType): Promise<number>
+
+Obtains the minimum volume allowed for a stream. This API uses a promise to return the result.
+
+**System capability**: SystemCapability.Multimedia.Audio.Volume
+
+**Parameters**
+
+| Name | Type | Mandatory| Description |
+| ---------- | ----------------------------------- | ---- | ------------ |
+| volumeType | [AudioVolumeType](#audiovolumetype) | Yes | Audio stream type.|
+
+**Return value**
+
+| Type | Description |
+| --------------------- | ------------------------- |
+| Promise<number> | Promise used to return the minimum volume.|
+
+**Example**
+
+```js
+audioGroupManager.getMinVolume(audio.AudioVolumeType.MEDIA).then((value) => {
+ console.info(`Promised returned to indicate that the minimum volume is obtained ${value}.`);
+});
+```
+
+### getMaxVolume9+
+
+getMaxVolume(volumeType: AudioVolumeType, callback: AsyncCallback<number>): void
+
+Obtains the maximum volume allowed for a stream. This API uses an asynchronous callback to return the result.
+
+**System capability**: SystemCapability.Multimedia.Audio.Volume
+
+**Parameters**
+
+| Name | Type | Mandatory| Description |
+| ---------- | ----------------------------------- | ---- | ---------------------- |
+| volumeType | [AudioVolumeType](#audiovolumetype) | Yes | Audio stream type. |
+| callback | AsyncCallback<number> | Yes | Callback used to return the maximum volume.|
+
+**Example**
+
+```js
+audioGroupManager.getMaxVolume(audio.AudioVolumeType.MEDIA, (err, value) => {
+ if (err) {
+ console.error(`Failed to obtain the maximum volume. ${err}`);
+ return;
+ }
+ console.info(`Callback invoked to indicate that the maximum volume is obtained. ${value}`);
+});
+```
+
+### getMaxVolume9+
+
+getMaxVolume(volumeType: AudioVolumeType): Promise<number>
+
+Obtains the maximum volume allowed for a stream. This API uses a promise to return the result.
+
+**System capability**: SystemCapability.Multimedia.Audio.Volume
+
+**Parameters**
+
+| Name | Type | Mandatory| Description |
+| ---------- | ----------------------------------- | ---- | ------------ |
+| volumeType | [AudioVolumeType](#audiovolumetype) | Yes | Audio stream type.|
+
+**Return value**
+
+| Type | Description |
+| --------------------- | ----------------------------- |
+| Promise<number> | Promise used to return the maximum volume.|
+
+**Example**
+
+```js
+audioGroupManager.getMaxVolume(audio.AudioVolumeType.MEDIA).then((data) => {
+ console.info('Promised returned to indicate that the maximum volume is obtained.');
+});
+```
+
+### mute9+
+
+mute(volumeType: AudioVolumeType, mute: boolean, callback: AsyncCallback<void>): void
+
+Mutes or unmutes a stream. This API uses an asynchronous callback to return the result.
+
+**Required permissions**: ohos.permission.ACCESS_NOTIFICATION_POLICY
+
+This permission is required only for muting or unmuting the ringer when **volumeType** is set to **AudioVolumeType.RINGTONE**.
+
+**System capability**: SystemCapability.Multimedia.Audio.Volume
+
+**Parameters**
+
+| Name | Type | Mandatory| Description |
+| ---------- | ----------------------------------- | ---- | ------------------------------------- |
+| volumeType | [AudioVolumeType](#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<void> | Yes | Callback used to return the result. |
+
+**Example**
+
+```js
+audioGroupManager.mute(audio.AudioVolumeType.MEDIA, true, (err) => {
+ if (err) {
+ console.error(`Failed to mute the stream. ${err}`);
+ return;
+ }
+ console.info('Callback invoked to indicate that the stream is muted.');
+});
+```
+
+### mute9+
+
+mute(volumeType: AudioVolumeType, mute: boolean): Promise<void>
+
+Mutes or unmutes a stream. This API uses a promise to return the result.
+
+**Required permissions**: ohos.permission.ACCESS_NOTIFICATION_POLICY
+
+This permission is required only for muting or unmuting the ringer when **volumeType** is set to **AudioVolumeType.RINGTONE**.
+
+**System capability**: SystemCapability.Multimedia.Audio.Volume
+
+**Parameters**
+
+| Name | Type | Mandatory| Description |
+| ---------- | ----------------------------------- | ---- | ------------------------------------- |
+| volumeType | [AudioVolumeType](#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 value**
+
+| Type | Description |
+| ------------------- | ----------------------------- |
+| Promise<void> | Promise used to return the result.|
+
+**Example**
+
+```js
+audioGroupManager.mute(audio.AudioVolumeType.MEDIA, true).then(() => {
+ console.info('Promise returned to indicate that the stream is muted.');
+});
+```
+
+### isMute9+
+
+isMute(volumeType: AudioVolumeType, callback: AsyncCallback<boolean>): void
+
+Checks whether a stream is muted. This API uses an asynchronous callback to return the result.
+
+**System capability**: SystemCapability.Multimedia.Audio.Volume
+
+**Parameters**
+
+| Name | Type | Mandatory| Description |
+| ---------- | ----------------------------------- | ---- | ----------------------------------------------- |
+| volumeType | [AudioVolumeType](#audiovolumetype) | Yes | Audio stream type. |
+| callback | AsyncCallback<boolean> | 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.|
+
+**Example**
+
+```js
+audioGroupManager.isMute(audio.AudioVolumeType.MEDIA, (err, value) => {
+ if (err) {
+ console.error(`Failed to obtain the mute status. ${err}`);
+ return;
+ }
+ console.info(`Callback invoked to indicate that the mute status of the stream is obtained ${value}.`);
+});
+```
+
+### isMute9+
+
+isMute(volumeType: AudioVolumeType): Promise<boolean>
+
+Checks whether a stream is muted. This method uses a promise to return the result.
+
+**System capability**: SystemCapability.Multimedia.Audio.Volume
+
+**Parameters**
+
+| Name | Type | Mandatory| Description |
+| ---------- | ----------------------------------- | ---- | ------------ |
+| volumeType | [AudioVolumeType](#audiovolumetype) | Yes | Audio stream type.|
+
+**Return value**
+
+| Type | Description |
+| ---------------------- | ------------------------------------------------------ |
+| Promise<boolean> | 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**
+
+```js
+audioGroupManager.isMute(audio.AudioVolumeType.MEDIA).then((value) => {
+ console.info(`Promise returned to indicate that the mute status of the stream is obtained ${value}.`);
+});
+```
+
+## AudioStreamManager9+
+
+Implements audio stream management. Before calling any API of **AudioStreamManager**, you must use **[getStreamManager](#audiogetstreammanager9)** to obtain an **AudioStreamManager** instance.
+
+### getCurrentAudioRendererInfoArray9+
+
+getCurrentAudioRendererInfoArray(callback: AsyncCallback<AudioRendererChangeInfoArray>): void
+
+Obtains the information about the current audio renderers. This API uses an asynchronous callback to return the result.
+
+**System capability**: SystemCapability.Multimedia.Audio.Renderer
+
+**Parameters**
+
+| Name | Type | Mandatory | Description |
+| -------- | ----------------------------------- | -------- | --------------------------- |
+| callback | AsyncCallback<[AudioRendererChangeInfoArray](#audiorendererchangeinfoarray9)> | Yes | Callback used to return the audio renderer information.|
+
+**Example**
+
+```js
+let audioStreamManager;
+audio.getStreamManager((err, data) => {
+ if (err) {
+ console.error(`getStreamManager : Error: ${err}`);
+ } else {
+ console.info('getStreamManager : Success : SUCCESS');
+ audioStreamManager = data;
+ }
+});
+
+audioStreamManager.getCurrentAudioRendererInfoArray(async (err, AudioRendererChangeInfoArray) => {
+ console.info('getCurrentAudioRendererInfoArray **** Get Callback Called ****');
+ if (err) {
+ console.error(`getCurrentAudioRendererInfoArray :ERROR: ${err}`);
+ } else {
+ if (AudioRendererChangeInfoArray != null) {
+ for (let i = 0; i < AudioRendererChangeInfoArray.length; i++) {
+ let AudioRendererChangeInfo = AudioRendererChangeInfoArray[i];
+ console.info(`StreamId for ${i} is: ${AudioRendererChangeInfo.streamId}`);
+ console.info(`ClientUid for ${i} is: ${AudioRendererChangeInfo.clientUid}`);
+ console.info(`Content ${i} is: ${AudioRendererChangeInfo.rendererInfo.content}`);
+ console.info(`Stream ${i} is: ${AudioRendererChangeInfo.rendererInfo.usage}`);
+ console.info(`Flag ${i} is: ${AudioRendererChangeInfo.rendererInfo.rendererFlags}`);
+ console.info(`State for ${i} is: ${AudioRendererChangeInfo.rendererState}`);
+ for (let j = 0;j < AudioRendererChangeInfo.deviceDescriptors.length; j++) {
+ console.info(`Id: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].id}`);
+ console.info(`Type: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].deviceType}`);
+ console.info(`Role: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].deviceRole}`);
+ console.info(`Name: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].name}`);
+ console.info(`Address: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].address}`);
+ console.info(`SampleRates: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].sampleRates[0]}`);
+ console.info(`ChannelCount ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].channelCounts[0]}`);
+ console.info(`ChannelMask: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].channelMasks}`);
+ }
+ }
+ }
+ }
+});
+```
+
+### getCurrentAudioRendererInfoArray9+
+
+getCurrentAudioRendererInfoArray(): Promise<AudioRendererChangeInfoArray>
+
+Obtains the information about the current audio renderers. This API uses a promise to return the result.
+
+**System capability**: SystemCapability.Multimedia.Audio.Renderer
+
+**Return value**
+
+| Type | Description |
+| ---------------------------------------------------------------------------------| --------------------------------------- |
+| Promise<[AudioRendererChangeInfoArray](#audiorendererchangeinfoarray9)> | Promise used to return the audio renderer information. |
+
+**Example**
+
+```js
+let audioStreamManager;
+audio.getStreamManager((err, data) => {
+ if (err) {
+ console.error(`getStreamManager : Error: ${err}`);
+ } else {
+ console.info('getStreamManager : Success : SUCCESS');
+ audioStreamManager = data;
+ }
+});
+
+await audioStreamManager.getCurrentAudioRendererInfoArray().then( function (AudioRendererChangeInfoArray) {
+ console.info(`getCurrentAudioRendererInfoArray ######### Get Promise is called ##########`);
+ if (AudioRendererChangeInfoArray != null) {
+ for (let i = 0; i < AudioRendererChangeInfoArray.length; i++) {
+ let AudioRendererChangeInfo = AudioRendererChangeInfoArray[i];
+ console.info(`StreamId for ${i} is: ${AudioRendererChangeInfo.streamId}`);
+ console.info(`ClientUid for ${i} is: ${AudioRendererChangeInfo.clientUid}`);
+ console.info(`Content ${i} is: ${AudioRendererChangeInfo.rendererInfo.content}`);
+ console.info(`Stream ${i} is: ${AudioRendererChangeInfo.rendererInfo.usage}`);
+ console.info(`Flag ${i} is: ${AudioRendererChangeInfo.rendererInfo.rendererFlags}`);
+ console.info(`State for ${i} is: ${AudioRendererChangeInfo.rendererState}`);
+ for (let j = 0;j < AudioRendererChangeInfo.deviceDescriptors.length; j++) {
+ console.info(`Id: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].id}`);
+ console.info(`Type: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].deviceType}`);
+ console.info(`Role: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].deviceRole}`);
+ console.info(`Name: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].name}`);
+ console.info(`Address: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].address}`);
+ console.info(`SampleRates: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].sampleRates[0]}`);
+ console.info(`ChannelCount ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].channelCounts[0]}`);
+ console.info(`ChannelMask: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].channelMasks}`);
+ }
+ }
+ }
+}).catch((err) => {
+ console.error(`getCurrentAudioRendererInfoArray :ERROR: ${err}`);
+});
+```
+
+### getCurrentAudioCapturerInfoArray9+
+
+getCurrentAudioCapturerInfoArray(callback: AsyncCallback<AudioCapturerChangeInfoArray>): void
+
+Obtains the information about the current audio capturers. This API uses an asynchronous callback to return the result.
+
+**System capability**: SystemCapability.Multimedia.Audio.Renderer
+
+**Parameters**
+
+| Name | Type | Mandatory | Description |
+| ---------- | ----------------------------------- | --------- | -------------------------------------------------------- |
+| callback | AsyncCallback<[AudioCapturerChangeInfoArray](#audiocapturerchangeinfoarray9)> | Yes | Callback used to return the audio capturer information.|
+
+**Example**
+
+```js
+let audioStreamManager;
+audio.getStreamManager((err, data) => {
+ if (err) {
+ console.error(`getStreamManager : Error: ${err}`);
+ } else {
+ console.info('getStreamManager : Success : SUCCESS');
+ audioStreamManager = data;
+ }
+});
+
+audioStreamManager.getCurrentAudioCapturerInfoArray(async (err, AudioCapturerChangeInfoArray) => {
+ console.info('getCurrentAudioCapturerInfoArray **** Get Callback Called ****');
+ if (err) {
+ console.error(`getCurrentAudioCapturerInfoArray :ERROR: ${err}`);
+ } else {
+ if (AudioCapturerChangeInfoArray != null) {
+ for (let i = 0; i < AudioCapturerChangeInfoArray.length; i++) {
+ console.info(`StreamId for ${i} is: ${AudioCapturerChangeInfoArray[i].streamId}`);
+ console.info(`ClientUid for ${i} is: ${AudioCapturerChangeInfoArray[i].clientUid}`);
+ 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}`);
+ 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(`Address: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].address}`);
+ console.info(`SampleRates: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].sampleRates[0]}`);
+ console.info(`ChannelCounts ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].channelCounts[0]}`);
+ console.info(`ChannelMask: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].channelMasks}`);
+ }
+ }
+ }
+ }
+});
+```
+
+### getCurrentAudioCapturerInfoArray9+
+
+getCurrentAudioCapturerInfoArray(): Promise<AudioCapturerChangeInfoArray>
+
+Obtains the information about the current audio capturers. This API uses a promise to return the result.
+
+**System capability**: SystemCapability.Multimedia.Audio.Renderer
+
+**Return value**
+
+| Type | Description |
+| -----------------------------------------------------------------------------| ----------------------------------- |
+| Promise<[AudioCapturerChangeInfoArray](#audiocapturerchangeinfoarray9)> | Promise used to return the audio capturer information. |
+
+**Example**
+
+```js
+let audioStreamManager;
+audio.getStreamManager((err, data) => {
+ if (err) {
+ console.error(`getStreamManager : Error: ${err}`);
+ } else {
+ console.info('getStreamManager : Success : SUCCESS');
+ audioStreamManager = data;
+ }
+});
+
+await audioStreamManager.getCurrentAudioCapturerInfoArray().then( function (AudioCapturerChangeInfoArray) {
+ console.info('getCurrentAudioCapturerInfoArray **** Get Promise Called ****');
+ if (AudioCapturerChangeInfoArray != null) {
+ for (let i = 0; i < AudioCapturerChangeInfoArray.length; i++) {
+ console.info(`StreamId for ${i} is: ${AudioCapturerChangeInfoArray[i].streamId}`);
+ console.info(`ClientUid for ${i} is: ${AudioCapturerChangeInfoArray[i].clientUid}`);
+ 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}`);
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(`Address:` + i + `:` + AudioCapturerChangeInfoArray[i].deviceDescriptors[j].address);
- console.info(`SampleRates:` + i + `:` + AudioCapturerChangeInfoArray[i].deviceDescriptors[j].sampleRates[0]);
- console.info(`ChannelCounts` + i + `:` + AudioCapturerChangeInfoArray[i].deviceDescriptors[j].channelCounts[0]);
- console.info(`ChannelMask:` + i + `:` + AudioCapturerChangeInfoArray[i].deviceDescriptors[j].channelMasks);
+ 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(`Address: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].address}`);
+ console.info(`SampleRates: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].sampleRates[0]}`);
+ console.info(`ChannelCounts ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].channelCounts[0]}`);
+ console.info(`ChannelMask: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].channelMasks}`);
}
}
}
-}).catch((err) => {
- console.log(`getCurrentAudioCapturerInfoArray :ERROR: ` + err.message);
+}).catch((err) => {
+ console.error(`getCurrentAudioCapturerInfoArray :ERROR: ${err}`);
+});
+```
+
+### on('audioRendererChange')9+
+
+on(type: "audioRendererChange", callback: Callback<AudioRendererChangeInfoArray>): void
+
+Subscribes to audio renderer change events.
+
+**System capability**: SystemCapability.Multimedia.Audio.Renderer
+
+**Parameters**
+
+| Name | Type | Mandatory | Description |
+| -------- | ---------- | --------- | ------------------------------------------------------------------------ |
+| type | string | Yes | Event type. The event `'audioRendererChange'` is triggered when the audio renderer changes. |
+| callback | Callback<[AudioRendererChangeInfoArray](#audiorendererchangeinfoarray9)> | Yes | Callback used to return the result. |
+
+**Example**
+
+```js
+let audioStreamManager;
+audio.getStreamManager((err, data) => {
+ if (err) {
+ console.error(`getStreamManager : Error: ${err}`);
+ } else {
+ console.info('getStreamManager : Success : SUCCESS');
+ audioStreamManager = data;
+ }
+});
+
+audioStreamManager.on('audioRendererChange', (AudioRendererChangeInfoArray) => {
+ for (let i = 0; i < AudioRendererChangeInfoArray.length; i++) {
+ let AudioRendererChangeInfo = AudioRendererChangeInfoArray[i];
+ console.info(`## RendererChange on is called for ${i} ##`);
+ console.info(`StreamId for ${i} is: ${AudioRendererChangeInfo.streamId}`);
+ console.info(`ClientUid for ${i} is: ${AudioRendererChangeInfo.clientUid}`);
+ console.info(`Content ${i} is: ${AudioRendererChangeInfo.rendererInfo.content}`);
+ console.info(`Stream ${i} is: ${AudioRendererChangeInfo.rendererInfo.usage}`);
+ console.info(`Flag ${i} is: ${AudioRendererChangeInfo.rendererInfo.rendererFlags}`);
+ console.info(`State for ${i} is: ${AudioRendererChangeInfo.rendererState}`);
+ for (let j = 0;j < AudioRendererChangeInfo.deviceDescriptors.length; j++) {
+ console.info(`Id: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].id}`);
+ console.info(`Type: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].deviceType}`);
+ console.info(`Role: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].deviceRole}`);
+ console.info(`Name: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].name}`);
+ console.info(`Address: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].address}`);
+ console.info(`SampleRates: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].sampleRates[0]}`);
+ console.info(`ChannelCount ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].channelCounts[0]}`);
+ console.info(`ChannelMask: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].channelMasks}`);
+ }
+ }
+});
+```
+
+### off('audioRendererChange')9+
+
+off(type: "audioRendererChange");
+
+Unsubscribes from audio renderer change events.
+
+**System capability**: SystemCapability.Multimedia.Audio.Renderer
+
+**Parameters**
+
+| Name | Type | Mandatory| Description |
+| -------- | ------- | ---- | ---------------- |
+| type | string | Yes | Event type. The event `'audioRendererChange'` is triggered when the audio renderer changes.|
+
+**Example**
+
+```js
+let audioStreamManager;
+audio.getStreamManager((err, data) => {
+ if (err) {
+ console.error(`getStreamManager : Error: ${err}`);
+ } else {
+ console.info('getStreamManager : Success : SUCCESS');
+ audioStreamManager = data;
+ }
+});
+
+audioStreamManager.off('audioRendererChange');
+console.info('######### RendererChange Off is called #########');
+```
+
+### on('audioCapturerChange')9+
+
+on(type: "audioCapturerChange", callback: Callback<AudioCapturerChangeInfoArray>): void
+
+Subscribes to audio capturer change events.
+
+**System capability**: SystemCapability.Multimedia.Audio.Capturer
+
+**Parameters**
+
+| Name | Type | Mandatory | Description |
+| -------- | ------- | --------- | ----------------------------------------------------------------------- |
+| type | string | Yes | Event type. The event `'audioCapturerChange'` is triggered when the audio capturer changes. |
+| callback | Callback<[AudioCapturerChangeInfoArray](#audiocapturerchangeinfoarray9)> | Yes | Callback used to return the result. |
+
+**Example**
+
+```js
+let audioStreamManager;
+audio.getStreamManager((err, data) => {
+ if (err) {
+ console.error(`getStreamManager : Error: ${err}`);
+ } else {
+ console.info('getStreamManager : Success : SUCCESS');
+ audioStreamManager = data;
+ }
+});
+
+audioStreamManager.on('audioCapturerChange', (AudioCapturerChangeInfoArray) => {
+ for (let i = 0; i < AudioCapturerChangeInfoArray.length; i++) {
+ console.info(`## CapChange on is called for element ${i} ##');
+ console.info(`StreamId for ${i} is: ${AudioCapturerChangeInfoArray[i].streamId}`);
+ console.info(`ClientUid for ${i} is: ${AudioCapturerChangeInfoArray[i].clientUid}`);
+ 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;
+ 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(`Address: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].address}`);
+ console.info(`SampleRates: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].sampleRates[0]}`);
+ console.info(`ChannelCounts ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].channelCounts[0]}`);
+ console.info(`ChannelMask: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].channelMasks}`);
+ }
+ }
+});
+```
+
+### off('audioCapturerChange')9+
+
+off(type: "audioCapturerChange");
+
+Unsubscribes from audio capturer change events.
+
+**System capability**: SystemCapability.Multimedia.Audio.Capturer
+
+**Parameters**
+
+| Name | Type | Mandatory| Description |
+| -------- | -------- | --- | ------------------------------------------------------------- |
+| type | string |Yes | Event type. The event `'audioCapturerChange'` is triggered when the audio capturer changes.|
+
+**Example**
+
+```js
+let audioStreamManager;
+audio.getStreamManager((err, data) => {
+ if (err) {
+ console.error(`getStreamManager : Error: ${err}`);
+ } else {
+ console.info('getStreamManager : Success : SUCCESS');
+ audioStreamManager = data;
+ }
});
+
+audioStreamManager.off('audioCapturerChange');
+console.info('######### CapturerChange Off is called #########');
+
```
+## AudioRoutingManager9+
-### on('audioRendererChange')9+
+Implements audio routing management. Before calling any API in **AudioRoutingManager**, you must use [getRoutingManager](#getroutingmanager9) to create an **AudioRoutingManager** instance.
-on(type: "audioRendererChange", callback: Callback<AudioRendererChangeInfoArray>): void
+### getDevices9+
-Subscribes to audio renderer change events.
+getDevices(deviceFlag: DeviceFlag, callback: AsyncCallback<AudioDeviceDescriptors>): void
-**System capability**: SystemCapability.Multimedia.Audio.Renderer
+Obtains the audio devices with a specific flag. This API uses an asynchronous callback to return the result.
+
+**System capability**: SystemCapability.Multimedia.Audio.Device
**Parameters**
-| Name | Type | Mandatory | Description |
-| -------- | ---------- | --------- | ------------------------------------------------------------------------ |
-| type | string | Yes | Event type. The event `'audioRendererChange'` is triggered when the audio renderer changes. |
-| callback | Callback<[AudioRendererChangeInfoArray](#audiorendererchangeinfoarray9)> | Yes | Callback used to return the result. |
+| Name | Type | Mandatory| Description |
+| ---------- | ------------------------------------------------------------ | ---- | -------------------- |
+| deviceFlag | [DeviceFlag](#deviceflag) | Yes | Audio device flag. |
+| callback | AsyncCallback<[AudioDeviceDescriptors](#audiodevicedescriptors)> | Yes | Callback used to return the device list.|
**Example**
+
+```js
+audioManager.getRoutingManager((err,AudioRoutingManager)=>{
+ if (err) {
+ console.error(`AudioFrameworkTest:Callback:failed to get RoutingManager ${err}`);
+ }
+ else {
+ AudioRoutingManager.getDevices(audio.DeviceFlag.OUTPUT_DEVICES_FLAG, (err, value) => {
+ if (err) {
+ console.error(`Failed to obtain the device list. ${err}`);
+ return;
+ }
+ console.info('Callback invoked to indicate that the device list is obtained.');
+ });
+ }
+})
```
-audioStreamManager.on('audioRendererChange', (AudioRendererChangeInfoArray) => {
- for (let i = 0; i < AudioRendererChangeInfoArray.length; i++) {
- AudioRendererChangeInfo = AudioRendererChangeInfoArray[i];
- console.info(`## RendererChange on is called for ` + i + ` ##`);
- console.info(`StreamId for ` + i + ` is:` + AudioRendererChangeInfo.streamId);
- console.info(`ClientUid for ` + i + ` is:` + AudioRendererChangeInfo.clientUid);
- console.info(`Content for ` + i + ` is:` + AudioRendererChangeInfo.rendererInfo.content);
- console.info(`Stream for ` + i + ` is:` + AudioRendererChangeInfo.rendererInfo.usage);
- console.info(`Flag ` + i + ` is:` + AudioRendererChangeInfo.rendererInfo.rendererFlags);
- console.info(`State for ` + i + ` is:` + AudioRendererChangeInfo.rendererState);
- var devDescriptor = AudioRendererChangeInfo.deviceDescriptors;
- for (let j = 0; j < AudioRendererChangeInfo.deviceDescriptors.length; j++) {
- console.info(`Id:` + i + `:` + AudioRendererChangeInfo.deviceDescriptors[j].id);
- console.info(`Type:` + i + `:` + AudioRendererChangeInfo.deviceDescriptors[j].deviceType);
- console.info(`Role:` + i + `:` + AudioRendererChangeInfo.deviceDescriptors[j].deviceRole);
- console.info(`Name:` + i + `:` + AudioRendererChangeInfo.deviceDescriptors[j].name);
- console.info(`Address:` + i + `:` + AudioRendererChangeInfo.deviceDescriptors[j].address);
- console.info(`SampleRates:` + i + `:` + AudioRendererChangeInfo.deviceDescriptors[j].sampleRates[0]);
- console.info(`ChannelCounts` + i + `:` + AudioRendererChangeInfo.deviceDescriptors[j].channelCounts[0]);
- console.info(`ChannelMask:` + i + `:` + AudioRendererChangeInfo.deviceDescriptors[j].channelMasks);
- }
+
+### getDevices9+
+
+getDevices(deviceFlag: DeviceFlag): Promise<AudioDeviceDescriptors>
+
+Obtains the audio devices with a specific flag. This API uses a promise to return the result.
+
+**System capability**: SystemCapability.Multimedia.Audio.Device
+
+**Parameters**
+
+| Name | Type | Mandatory| Description |
+| ---------- | ------------------------- | ---- | ---------------- |
+| deviceFlag | [DeviceFlag](#deviceflag) | Yes | Audio device flag.|
+
+**Return value**
+
+| Type | Description |
+| ------------------------------------------------------------ | ------------------------- |
+| Promise<[AudioDeviceDescriptors](#audiodevicedescriptors)> | Promise used to return the device list.|
+
+**Example**
+
+```js
+audioManager.getRoutingManager((err,AudioRoutingManager)=>{
+ if (err) {
+ console.error(`AudioFrameworkTest:Callback:failed to get RoutingManager ${err}`);
+ }
+ else {
+ AudioRoutingManager.getDevices(audio.DeviceFlag.OUTPUT_DEVICES_FLAG).then((data) => {
+ console.info('Promise returned to indicate that the device list is obtained.');
+ });
}
});
```
-### off('audioRendererChange')9+
+### on9+
-off(type: "audioRendererChange");
+on(type: 'deviceChange', deviceFlag: DeviceFlag, callback: Callback): void
-Unsubscribes from audio renderer change events.
+Subscribes to device change events. When a device is connected or disconnected, registered clients will receive the callback.
-**System capability**: SystemCapability.Multimedia.Audio.Renderer
+**System capability**: SystemCapability.Multimedia.Audio.Device
**Parameters**
-| Name | Type | Mandatory| Description |
-| -------- | ------- | ---- | ---------------- |
-| type | string | Yes | Event type. The event `'audioRendererChange'` is triggered when the audio renderer changes.|
+| Name | Type | Mandatory| Description |
+| :------- | :--------------------------------------------------- | :--- | :----------------------------------------- |
+| type | string | Yes | Event type. The value **deviceChange** means the device change event, which is triggered when a device connection status change is detected.|
+| deviceFlag | [DeviceFlag](#deviceflag) | Yes | Audio device flag. |
+| callback | Callback<[DeviceChangeAction](#devicechangeaction)\> | Yes | Callback used to return the device update details. |
**Example**
-```
-audioStreamManager.off('audioRendererChange');
-console.info(`######### RendererChange Off is called #########`);
+
+```js
+audioManager.getRoutingManager((err,AudioRoutingManager)=>{
+ if (err) {
+ console.error(`AudioFrameworkTest:Callback:failed to get RoutingManager ${err}`);
+ }
+ else {
+ AudioRoutingManager.on('deviceChange', audio.DeviceFlag.OUTPUT_DEVICES_FLAG, (deviceChanged) => {
+ console.info('device change type : ' + deviceChanged.type);
+ console.info('device descriptor size : ' + deviceChanged.deviceDescriptors.length);
+ console.info('device change descriptor : ' + deviceChanged.deviceDescriptors[0].deviceRole);
+ console.info('device change descriptor : ' + deviceChanged.deviceDescriptors[0].deviceType);
+ });
+ }
+});
```
-### on('audioCapturerChange')9+
+### off9+
-on(type: "audioCapturerChange", callback: Callback<AudioCapturerChangeInfoArray>): void
+off(type: 'deviceChange', callback?: Callback): void
-Subscribes to audio capturer change events.
+Unsubscribes from device change events.
-**System capability**: SystemCapability.Multimedia.Audio.Capturer
+**System capability**: SystemCapability.Multimedia.Audio.Device
**Parameters**
-| Name | Type | Mandatory | Description |
-| -------- | ------- | --------- | ----------------------------------------------------------------------- |
-| type | string | Yes | Event type. The event `'audioCapturerChange'` is triggered when the audio capturer changes. |
-| callback | Callback\<[AudioCapturerChangeInfoArray](#audiocapturerchangeinfoarray9)> | Yes | Callback used to return the result. |
+
+| Name | Type | Mandatory| Description |
+| -------- | --------------------------------------------------- | ---- | ------------------------------------------ |
+| type | string | Yes | Event type. The value **deviceChange** means the device change event, which is triggered when a device connection status change is detected.|
+| deviceFlag | [DeviceFlag](#deviceflag) | Yes | Audio device flag. |
+| callback | Callback<[DeviceChangeAction](#devicechangeaction)> | No | Callback used to return the device update details. |
**Example**
-```
-audioStreamManager.on('audioCapturerChange', (AudioCapturerChangeInfoArray) => {
- for (let i = 0; i < AudioCapturerChangeInfoArray.length; i++) {
- console.info(` ## CapChange on is called for element ' + i + ' ##');
- console.info(`StreamId for ` + i + `is:` + AudioCapturerChangeInfoArray[i].streamId);
- console.info(`ClientUid for ` + i + `is:` + AudioCapturerChangeInfoArray[i].clientUid);
- 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);
- 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(`Address:` + i + `:` + AudioCapturerChangeInfoArray[i].deviceDescriptors[j].address);
- console.info(`SampleRates:` + i + `:` + AudioCapturerChangeInfoArray[i].deviceDescriptors[j].sampleRates[0]);
- console.info(`ChannelCounts` + i + `:` + AudioCapturerChangeInfoArray[i].deviceDescriptors[j].channelCounts[0]);
- console.info(`ChannelMask:` + i + `:` + AudioCapturerChangeInfoArray[i].deviceDescriptors[j].channelMasks);
- }
+
+```js
+audioManager.getRoutingManager((err,AudioRoutingManager)=>{
+ if (err) {
+ console.error(`AudioFrameworkTest:Callback:failed to get RoutingManager ${err}`);
+ }
+ else {
+ AudioRoutingManager.off('deviceChange', audio.DeviceFlag.OUTPUT_DEVICES_FLAG, (deviceChanged) => {
+ console.info('Should be no callback.');
+ });
}
});
```
-### off('audioCapturerChange')9+
+### selectOutputDevice9+
-off(type: "audioCapturerChange");
+selectOutputDevice(outputAudioDevices: AudioDeviceDescriptors, callback: AsyncCallback<void>): void
-Unsubscribes from audio capturer change events.
+Selects an audio output device. Currently, only one output device can be selected. This API uses an asynchronous callback to return the result.
-**System capability**: SystemCapability.Multimedia.Audio.Capturer
+**System API**: This is a system API.
+
+**System capability**: SystemCapability.Multimedia.Audio.Device
**Parameters**
-| Name | Type | Mandatory| Description |
-| -------- | -------- | --- | ------------------------------------------------------------- |
-| type | string |Yes | Event type. The event `'audioCapturerChange'` is triggered when the audio capturer changes.|
+| Name | Type | Mandatory| Description |
+| --------------------------- | ------------------------------------------------------------ | ---- | ------------------------- |
+| outputAudioDevices | [AudioDeviceDescriptors](#audiodevicedescriptors) | Yes | Output device. |
+| callback | AsyncCallback<void> | Yes | Callback used to return the result.|
**Example**
+```js
+let outputAudioDeviceDescriptor = [{
+ "deviceRole":audio.DeviceRole.OUTPUT_DEVICE,
+ "networkId":audio.LOCAL_NETWORK_ID,
+ "interruptGroupId":1,
+ "volumeGroupId":1 }];
+var audioRoutingManager;
+await audioManager.getRoutingManager().then((value) => {
+ audioRoutingManager = value;
+ audioRoutingManager.selectOutputDevice(outputAudioDeviceDescriptor, (err) => {
+ if (err) {
+ console.error(`Result ERROR: ${err}`);
+ } else {
+ console.info('Select output devices result callback: SUCCESS'); }
+ });
+});
```
-audioStreamManager.off('audioCapturerChange');
-console.info(`######### CapturerChange Off is called #########`);
-```
+### selectOutputDevice9+
-### isAudioRendererLowLatencySupported9+
+selectOutputDevice(outputAudioDevices: AudioDeviceDescriptors): Promise<void>
-isAudioRendererLowLatencySupported(streaminfo: AudioStreamInfo, callback: Callback<boolean>): void;
+**System API**: This is a system API.
-Checks whether the system supports the low latency configuration in the audio renderer. This API uses an asynchronous callback to return the result.
+Selects an audio output device. Currently, only one output device can be selected. This API uses a promise to return the result.
-**System capability**: SystemCapability.Multimedia.Audio.Renderer
+**System capability**: SystemCapability.Multimedia.Audio.Device
**Parameters**
-| Name | Type | Mandatory | Description |
-| ---------- | ----------------------- | -------- | --------------------------------------- |
-| streaminfo | [AudioStreamInfo](#audiostreaminfo8) | Yes | Audio stream information. |
-| callback | Callback<boolean> | Yes | Callback used to return the result. If the system supports the low latency configuration, **true** is returned. Otherwise, **false** is returned.|
+| Name | Type | Mandatory| Description |
+| --------------------------- | ------------------------------------------------------------ | ---- | ------------------------- |
+| outputAudioDevices | [AudioDeviceDescriptors](#audiodevicedescriptors) | Yes | Output device. |
+
+**Return value**
+
+| Type | Description |
+| --------------------- | --------------------------- |
+| Promise<void> | Promise used to return the result.|
**Example**
+```js
+let outputAudioDeviceDescriptor =[{
+ "deviceRole":audio.DeviceRole.OUTPUT_DEVICE,
+ "networkId":audio.LOCAL_NETWORK_ID,
+ "interruptGroupId":1,
+ "volumeGroupId":1 }];
+var audioRoutingManager;
+await audioManager.getRoutingManager().then((value) => {
+ audioRoutingManager = value;
+ audioRoutingManager.selectOutputDevice(outputAudioDeviceDescriptor).then(() => {
+ console.info('Select output devices result promise: SUCCESS');
+ }).catch((err) => {
+ console.error(`Result ERROR: ${err}`);
+ });
+});
```
-var audioManager = audio.getAudioManager();
-var AudioStreamInfo = {
- samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_44100,
- channels: audio.AudioChannel.CHANNEL_1,
- sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE,
- encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW
-}
+### selectOutputDeviceByFilter9+
+
+selectOutputDeviceByFilter(filter: AudioRendererFilter, outputAudioDevices: AudioDeviceDescriptors, callback: AsyncCallback<void>): void
+
+**System API**: This is a system API.
+
+Selects an audio output device based on the filter criteria. Currently, only one output device can be selected. This API uses an asynchronous callback to return the result.
-var audioStreamManager = audioManager.getStreamManager();
-audioStreamManager.isAudioRendererLowLatencySupported(AudioStreamInfo, (result) => {
- console.info(`isAudioRendererLowLatencySupported success var = ` + result);
+**System capability**: SystemCapability.Multimedia.Audio.Device
+
+**Parameters**
+
+| Name | Type | Mandatory| Description |
+| --------------------------- | ------------------------------------------------------------ | ---- | ------------------------- |
+| filter | [AudioRendererFilter](#audiorendererfilter9) | Yes | Filter criteria. |
+| outputAudioDevices | [AudioDeviceDescriptors](#audiodevicedescriptors) | Yes | Output device. |
+| callback | AsyncCallback<void> | Yes | Callback used to return the result.|
+
+**Example**
+```js
+let outputAudioRendererFilter = {
+ "uid":20010041,
+ "rendererInfo": {
+ "contentType":audio.ContentType.CONTENT_TYPE_MUSIC,
+ "streamUsage":audio.StreamUsage.STREAM_USAGE_MEDIA,
+ "rendererFlags":0 },
+ "rendererId":0 };
+let outputAudioDeviceDescriptor = [{
+ "deviceRole":audio.DeviceRole.OUTPUT_DEVICE,
+ "networkId":audio.LOCAL_NETWORK_ID,
+ "interruptGroupId":1,
+ "volumeGroupId":1 }];
+var audioRoutingManager;
+await audioManager.getRoutingManager().then((value) => {
+ audioRoutingManager = value;
+ audioRoutingManager.selectOutputDeviceByFilter(outputAudioRendererFilter, outputAudioDeviceDescriptor, (err) => {
+ if (err) {
+ console.error(`Result ERROR: ${err}`);
+ } else {
+ console.info('Select output devices by filter result callback: SUCCESS'); }
+ });
});
```
-### isAudioRendererLowLatencySupported9+
+### selectOutputDeviceByFilter9+
-isAudioRendererLowLatencySupported(streaminfo: AudioStreamInfo): Promise<boolean>
+selectOutputDeviceByFilter(filter: AudioRendererFilter, outputAudioDevices: AudioDeviceDescriptors): Promise<void>
-Checks whether the system supports the low latency configuration in the audio renderer.
+**System API**: This is a system API.
-**System capability**: SystemCapability.Multimedia.Audio.Renderer
+Selects an audio output device based on the filter criteria. Currently, only one output device can be selected. This API uses a promise to return the result.
+
+**System capability**: SystemCapability.Multimedia.Audio.Device
**Parameters**
-| Name | Type | Mandatory| Description |
-| ---------- | ------------------------------------ | ---- | ------------|
-| streaminfo | [AudioStreamInfo](#audiostreaminfo8) | Yes | Audio stream information. |
+| Name | Type | Mandatory| Description |
+| ----------------------| ------------------------------------------------------------ | ---- | ------------------------- |
+| filter | [AudioRendererFilter](#audiorendererfilter9) | Yes | Filter criteria. |
+| outputAudioDevices | [AudioDeviceDescriptors](#audiodevicedescriptors) | Yes | Output device. |
**Return value**
-| Type | Description |
-| ------------------- | ---------------------------------------------------- |
-| Promise<void> | Promise used to return the result. If the system supports the low latency configuration, **true** is returned. Otherwise, **false** is returned.|
+| Type | Description |
+| --------------------- | --------------------------- |
+| Promise<void> | Promise used to return the result.|
**Example**
-```
-var audioManager = audio.getAudioManager();
-
-var AudioStreamInfo = {
- samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_44100,
- channels: audio.AudioChannel.CHANNEL_1,
- sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE,
- encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW
-}
-
-var audioStreamManager = await audioManager.getStreamManager();
-var result = audioStreamManager.isAudioRendererLowLatencySupported(AudioStreamInfo);
-console.info(`isAudioRendererLowLatencySupported success var =` + result);
+```js
+let outputAudioRendererFilter = {
+ "uid":20010041,
+ "rendererInfo": {
+ "contentType":audio.ContentType.CONTENT_TYPE_MUSIC,
+ "streamUsage":audio.StreamUsage.STREAM_USAGE_MEDIA,
+ "rendererFlags":0 },
+ "rendererId":0 };
+let outputAudioDeviceDescriptor = [{
+ "deviceRole":audio.DeviceRole.OUTPUT_DEVICE,
+ "networkId":audio.LOCAL_NETWORK_ID,
+ "interruptGroupId":1,
+ "volumeGroupId":1 }];
+var audioRoutingManager;
+await audioManager.getRoutingManager().then((value) => {
+ audioRoutingManager = value;
+ audioRoutingManager.selectOutputDeviceByFilter(outputAudioRendererFilter, outputAudioDeviceDescriptor).then(() => {
+ console.info('Select output devices by filter result promise: SUCCESS');
+ }).catch((err) => {
+ console.error(`Result ERROR: ${err}`);
+ })
+});
```
## AudioRendererChangeInfo9+
@@ -2289,53 +3371,52 @@ Describes the **AudioRenderChangeInfo** array, which is read-only.
**Example**
-```
+```js
import audio from '@ohos.multimedia.audio';
var audioStreamManager;
var audioStreamManagerCB;
-var Tag = "AFCapLog : ";
var resultFlag = false;
await audioManager.getStreamManager().then(async function (data) {
audioStreamManager = data;
- console.info(Tag + `Get AudioStream Manager : Success `);
+ console.info('Get AudioStream Manager : Success');
}).catch((err) => {
- console.info(Tag + `Get AudioStream Manager : ERROR : ` + err.message);
+ console.error(`Get AudioStream Manager : ERROR : ${err}`);
});
audioManager.getStreamManager((err, data) => {
if (err) {
- console.error(Tag + `Get AudioStream Manager : ERROR : ` + err.message);
+ console.error(`Get AudioStream Manager : ERROR : ${err}`);
} else {
audioStreamManagerCB = data;
- console.info(Tag + `Get AudioStream Manager : Success `);
+ console.info('Get AudioStream Manager : Success');
}
});
audioStreamManagerCB.on('audioRendererChange', (AudioRendererChangeInfoArray) => {
for (let i = 0; i < AudioRendererChangeInfoArray.length; i++) {
- console.info(Tag + `## RendererChange on is called for ` + i + ` ##`);
- console.info(Tag + `StreamId for ` + i + `is:` + AudioRendererChangeInfoArray[i].streamId);
- console.info(Tag + `ClientUid for ` + i + `is:` + AudioRendererChangeInfoArray[i].clientUid);
- console.info(Tag + `Content for ` + i + `is:` + AudioRendererChangeInfoArray[i].rendererInfo.content);
- console.info(Tag + `Stream for ` + i + `is:` + AudioRendererChangeInfoArray[i].rendererInfo.usage);
- console.info(Tag + `Flag ` + i + `is:` + AudioRendererChangeInfoArray[i].rendererInfo.rendererFlags);
- console.info(Tag + `State for ` + i + `is:` + AudioRendererChangeInfoArray[i].rendererState);
+ console.info(`## RendererChange on is called for ${i} ##`);
+ console.info(`StreamId for ${i} is: ${AudioRendererChangeInfoArray[i].streamId}`);
+ console.info(`ClientUid for ${i} is: ${AudioRendererChangeInfoArray[i].clientUid}`);
+ 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}`);
+ console.info(`State for ${i} is: ${AudioRendererChangeInfoArray[i].rendererState}`);
var devDescriptor = AudioRendererChangeInfoArray[i].deviceDescriptors;
for (let j = 0; j < AudioRendererChangeInfoArray[i].deviceDescriptors.length; j++) {
- console.info(Tag + `Id:` + i + `:` + AudioRendererChangeInfoArray[i].deviceDescriptors[j].id);
- console.info(Tag + `Type:` + i + `:` + AudioRendererChangeInfoArray[i].deviceDescriptors[j].deviceType);
- console.info(Tag + `Role:` + i + `:` + AudioRendererChangeInfoArray[i].deviceDescriptors[j].deviceRole);
- console.info(Tag + `Name:` + i + `:` + AudioRendererChangeInfoArray[i].deviceDescriptors[j].name);
- console.info(Tag + `Addr:` + i + `:` + AudioRendererChangeInfoArray[i].deviceDescriptors[j].address);
- console.info(Tag + `SR:` + i + `:` + AudioRendererChangeInfoArray[i].deviceDescriptors[j].sampleRates[0]);
- console.info(Tag + `C` + i + `:` + AudioRendererChangeInfoArray[i].deviceDescriptors[j].channelCounts[0]);
- console.info(Tag + `CM:` + i + `:` + AudioRendererChangeInfoArray[i].deviceDescriptors[j].channelMasks);
+ 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}`);
}
if (AudioRendererChangeInfoArray[i].rendererState == 1 && devDescriptor != null) {
resultFlag = true;
- console.info(Tag + `ResultFlag for ` + i + ` is:` + resultFlag);
+ console.info(`ResultFlag for ${i} is: ${resultFlag}`);
}
}
});
@@ -2362,35 +3443,34 @@ Describes the **AudioCapturerChangeInfo** array, which is read-only.
**Example**
-```
+```js
import audio from '@ohos.multimedia.audio';
const audioManager = audio.getAudioManager();
-var Tag = "AFCapLog : ";
var resultFlag = false;
audioStreamManager.on('audioCapturerChange', (AudioCapturerChangeInfoArray) => {
for (let i = 0; i < AudioCapturerChangeInfoArray.length; i++) {
- console.info(Tag + ` ## CapChange on is called for element ' + i + ' ##');
- console.info(Tag + `StrId for ` + i + `is:` + AudioCapturerChangeInfoArray[i].streamId);
- console.info(Tag + `CUid for ` + i + `is:` + AudioCapturerChangeInfoArray[i].clientUid);
- console.info(Tag + `Src for ` + i + `is:` + AudioCapturerChangeInfoArray[i].capturerInfo.source);
- console.info(Tag + `Flag ` + i + `is:` + AudioCapturerChangeInfoArray[i].capturerInfo.capturerFlags);
- console.info(Tag + `State for ` + i + `is:` + AudioCapturerChangeInfoArray[i].capturerState);
+ console.info(`## CapChange on is called for element ${i} ##`);
+ console.info(`StrId for ${i} is: ${AudioCapturerChangeInfoArray[i].streamId}`);
+ console.info(`CUid for ${i} is: ${AudioCapturerChangeInfoArray[i].clientUid}`);
+ 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;
for (let j = 0; j < AudioCapturerChangeInfoArray[i].deviceDescriptors.length; j++) {
- console.info(Tag + `Id:` + i + `:` + AudioCapturerChangeInfoArray[i].deviceDescriptors[j].id);
- console.info(Tag + `Type:` + i + `:` + AudioCapturerChangeInfoArray[i].deviceDescriptors[j].deviceType);
- console.info(Tag + `Role:` + i + `:` + AudioCapturerChangeInfoArray[i].deviceDescriptors[j].deviceRole);
- console.info(Tag + `Name:` + i + `:` + AudioCapturerChangeInfoArray[i].deviceDescriptors[j].name);
- console.info(Tag + `Addr:` + i + `:` + AudioCapturerChangeInfoArray[i].deviceDescriptors[j].address);
- console.info(Tag + `SR:` + i + `:` + AudioCapturerChangeInfoArray[i].deviceDescriptors[j].sampleRates[0]);
- console.info(Tag + `C` + i + `:` + AudioCapturerChangeInfoArray[i].deviceDescriptors[j].channelCounts[0]);
- console.info(Tag + `CM:` + i + `:` + AudioCapturerChangeInfoArray[i].deviceDescriptors[j].channelMasks);
+ 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}`);
}
if (AudioCapturerChangeInfoArray[i].capturerState == 1 && devDescriptor != null) {
resultFlag = true;
- console.info(Tag + `ResultFlag for element ` + i + ` is: ` + resultFlag);
- }
+ console.info(`ResultFlag for element ${i} is: ${resultFlag}`);
+ }
}
});
```
@@ -2401,16 +3481,19 @@ Describes an audio device.
**System capability**: SystemCapability.Multimedia.Audio.Device
-| Name | Type | Readable| Writable| Description |
-| -------------------------- | -------------------------- | ---- | ---- | ---------- |
-| deviceRole | [DeviceRole](#devicerole) | Yes | No | Device role.|
-| deviceType | [DeviceType](#devicetype) | Yes | No | Device type.|
-| id9+ | number | Yes | No | Device ID. |
-| name9+ | string | Yes | No | Device name.|
-| address9+ | string | Yes | No | Device address.|
-| sampleRates9+ | Array<number> | Yes | No | Supported sampling rates.|
-| channelCounts9+ | Array<number> | Yes | No | Number of channels supported.|
-| channelMasks9+ | Array<number> | Yes | No | Supported channel masks.|
+| Name | Type | Readable| Writable| Description |
+| ----------------------------- | -------------------------- | ---- | ---- | ---------- |
+| deviceRole | [DeviceRole](#devicerole) | Yes | No | Device role.|
+| deviceType | [DeviceType](#devicetype) | Yes | No | Device type.|
+| id9+ | number | Yes | No | Device ID. |
+| name9+ | string | Yes | No | Device name.|
+| address9+ | string | Yes | No | Device address.|
+| sampleRates9+ | Array<number> | Yes | No | Supported sampling rates.|
+| channelCounts9+ | Array<number> | Yes | No | Number of channels supported.|
+| channelMasks9+ | Array<number> | Yes | No | Supported channel masks.|
+| networkId9+ | string | Yes | No | ID of the device network.
This is a system API and cannot be called by third-party applications.|
+| interruptGroupId9+ | number | Yes | No | ID of the interruption group to which the device belongs.
This is a system API and cannot be called by third-party applications.|
+| volumeGroupId9+ | number | Yes | No | ID of the volume group to which the device belongs.
This is a system API and cannot be called by third-party applications.|
## AudioDeviceDescriptors
@@ -2418,7 +3501,7 @@ Array of [AudioDeviceDescriptor](#audiodevicedescriptor), which is read-only.
**Example**
-```
+```js
import audio from '@ohos.multimedia.audio';
function displayDeviceProp(value) {
@@ -2430,16 +3513,42 @@ var deviceRoleValue = null;
var deviceTypeValue = null;
const promise = audio.getAudioManager().getDevices(1);
promise.then(function (value) {
- console.info(`AudioFrameworkTest: Promise: getDevices OUTPUT_DEVICES_FLAG`);
+ console.info('AudioFrameworkTest: Promise: getDevices OUTPUT_DEVICES_FLAG');
value.forEach(displayDeviceProp);
if (deviceTypeValue != null && deviceRoleValue != null){
- console.info(`AudioFrameworkTest: Promise: getDevices : OUTPUT_DEVICES_FLAG : PASS`);
+ console.info('AudioFrameworkTest: Promise: getDevices : OUTPUT_DEVICES_FLAG : PASS');
} else {
- console.info(`AudioFrameworkTest: Promise: getDevices : OUTPUT_DEVICES_FLAG : FAIL`);
+ console.error('AudioFrameworkTest: Promise: getDevices : OUTPUT_DEVICES_FLAG : FAIL');
}
});
```
+## AudioRendererFilter9+
+
+Implements filter criteria. Before calling **selectOutputDeviceByFilter**, you must obtain an **AudioRendererFilter** instance.
+
+**System API**: This is a system API.
+
+**System capability**: SystemCapability.Multimedia.Audio.Device
+
+| Name | Type | Mandatory | Description |
+| -------------| ---------------------------------------- | ---- | -------------- |
+| uid | number | Yes | Application ID.
System capability: SystemCapability.Multimedia.Audio.Core|
+| rendererInfo | [AudioRendererInfo](#audiorendererinfo8) | No | Audio renderer information.
System capability: SystemCapability.Multimedia.Audio.Renderer|
+| rendererId | number | No | Unique ID of an audio stream.
System capability: SystemCapability.Multimedia.Audio.Renderer|
+
+**Example**
+
+```js
+let outputAudioRendererFilter = {
+ "uid":20010041,
+ "rendererInfo": {
+ "contentType":audio.ContentType.CONTENT_TYPE_MUSIC,
+ "streamUsage":audio.StreamUsage.STREAM_USAGE_MEDIA,
+ "rendererFlags":0 },
+ "rendererId":0 };
+```
+
## AudioRenderer8+
Provides APIs for audio rendering. Before calling any API in **AudioRenderer**, you must use [createAudioRenderer](#audiocreateaudiorenderer8) to create an **AudioRenderer** instance.
@@ -2454,7 +3563,7 @@ Provides APIs for audio rendering. Before calling any API in **AudioRenderer**,
**Example**
-```
+```js
var state = audioRenderer.state;
```
@@ -2474,12 +3583,12 @@ Obtains the renderer information of this **AudioRenderer** instance. This API us
**Example**
-```
+```js
audioRenderer.getRendererInfo((err, rendererInfo) => {
- console.log(`Renderer GetRendererInfo:`);
- console.log(`Renderer content:` + rendererInfo.content);
- console.log(`Renderer usage:` + rendererInfo.usage);
- console.log(`Renderer flags:` + rendererInfo.rendererFlags);
+ console.info('Renderer GetRendererInfo:');
+ console.info(`Renderer content: ${rendererInfo.content}`);
+ console.info(`Renderer usage: ${rendererInfo.usage}`);
+ console.info(`Renderer flags: ${rendererInfo.rendererFlags}`);
});
```
@@ -2499,16 +3608,14 @@ Obtains the renderer information of this **AudioRenderer** instance. This API us
**Example**
-```
-var resultFlag = true;
+```js
audioRenderer.getRendererInfo().then((rendererInfo) => {
- console.log(`Renderer GetRendererInfo:`);
- console.log(`Renderer content:` + rendererInfo.content);
- console.log(`Renderer usage:` + rendererInfo.usage);
- console.log(`Renderer flags:` + rendererInfo.rendererFlags);
+ console.info('Renderer GetRendererInfo:');
+ console.info(`Renderer content: ${rendererInfo.content}`);
+ console.info(`Renderer usage: ${rendererInfo.usage}`);
+ console.info(`Renderer flags: ${rendererInfo.rendererFlags}`)
}).catch((err) => {
- console.log(`AudioFrameworkRenderLog: RendererInfo :ERROR: ` + err.message);
- resultFlag = false;
+ console.error(`AudioFrameworkRenderLog: RendererInfo :ERROR: ${err}`);
});
```
@@ -2528,13 +3635,13 @@ Obtains the stream information of this **AudioRenderer** instance. This API uses
**Example**
-```
+```js
audioRenderer.getStreamInfo((err, streamInfo) => {
- console.log(`Renderer GetStreamInfo:`);
- console.log(`Renderer sampling rate:` + streamInfo.samplingRate);
- console.log(`Renderer channel:` + streamInfo.channels);
- console.log(`Renderer format:` + streamInfo.sampleFormat);
- console.log(`Renderer encoding type:` + streamInfo.encodingType);
+ console.info('Renderer GetStreamInfo:');
+ console.info(`Renderer sampling rate: ${streamInfo.samplingRate}`);
+ console.info(`Renderer channel: ${streamInfo.channels}`);
+ console.info(`Renderer format: ${streamInfo.sampleFormat}`);
+ console.info(`Renderer encoding type: ${streamInfo.encodingType}`);
});
```
@@ -2554,15 +3661,15 @@ Obtains the stream information of this **AudioRenderer** instance. This API uses
**Example**
-```
+```js
audioRenderer.getStreamInfo().then((streamInfo) => {
- console.log(`Renderer GetStreamInfo:`);
- console.log(`Renderer sampling rate:` + streamInfo.samplingRate);
- console.log(`Renderer channel:` + streamInfo.channels);
- console.log(`Renderer format:` + streamInfo.sampleFormat);
- console.log(`Renderer encoding type:` + streamInfo.encodingType);
+ console.info('Renderer GetStreamInfo:');
+ console.info(`Renderer sampling rate: ${streamInfo.samplingRate}`);
+ console.info(`Renderer channel: ${streamInfo.channels}`);
+ console.info(`Renderer format: ${streamInfo.sampleFormat}`);
+ console.info(`Renderer encoding type: ${streamInfo.encodingType}`);
}).catch((err) => {
- console.log(`ERROR: ` + err.message);
+ console.error(`ERROR: ${err}`);
});
```
@@ -2582,12 +3689,12 @@ Starts the renderer. This API uses an asynchronous callback to return the result
**Example**
-```
+```js
audioRenderer.start((err) => {
if (err) {
- console.error(`Renderer start failed.`);
+ console.error('Renderer start failed.');
} else {
- console.info(`Renderer start success.`);
+ console.info('Renderer start success.');
}
});
```
@@ -2608,11 +3715,11 @@ Starts the renderer. This API uses a promise to return the result.
**Example**
-```
+```js
audioRenderer.start().then(() => {
- console.log(`Renderer started`);
+ console.info('Renderer started');
}).catch((err) => {
- console.log(`ERROR: ` + err.message);
+ console.error(`ERROR: ${err}`);
});
```
@@ -2632,12 +3739,12 @@ Pauses rendering. This API uses an asynchronous callback to return the result.
**Example**
-```
+```js
audioRenderer.pause((err) => {
if (err) {
- console.error(`Renderer pause failed`);
+ console.error('Renderer pause failed');
} else {
- console.log(`Renderer paused.`);
+ console.info('Renderer paused.');
}
});
```
@@ -2658,11 +3765,11 @@ Pauses rendering. This API uses a promise to return the result.
**Example**
-```
+```js
audioRenderer.pause().then(() => {
- console.log(`Renderer paused`);
+ console.info('Renderer paused');
}).catch((err) => {
- console.log(`ERROR: ` + err.message);
+ console.error(`ERROR: ${err}`);
});
```
@@ -2682,12 +3789,12 @@ Drains the playback buffer. This API uses an asynchronous callback to return the
**Example**
-```
+```js
audioRenderer.drain((err) => {
if (err) {
- console.error(`Renderer drain failed`);
+ console.error('Renderer drain failed');
} else {
- console.log(`Renderer drained.`);
+ console.info('Renderer drained.');
}
});
```
@@ -2708,11 +3815,11 @@ Drains the playback buffer. This API uses a promise to return the result.
**Example**
-```
+```js
audioRenderer.drain().then(() => {
- console.log(`Renderer drained successfully`);
+ console.info('Renderer drained successfully');
}).catch((err) => {
- console.log(`ERROR: ` + err.message);
+ console.error(`ERROR: ${err}`);
});
```
@@ -2732,12 +3839,12 @@ Stops rendering. This API uses an asynchronous callback to return the result.
**Example**
-```
+```js
audioRenderer.stop((err) => {
if (err) {
- console.error(`Renderer stop failed`);
+ console.error('Renderer stop failed');
} else {
- console.log(`Renderer stopped.`);
+ console.info('Renderer stopped.');
}
});
```
@@ -2758,11 +3865,11 @@ Stops rendering. This API uses a promise to return the result.
**Example**
-```
+```js
audioRenderer.stop().then(() => {
- console.log(`Renderer stopped successfully`);
+ console.info('Renderer stopped successfully');
}).catch((err) => {
- console.log(`ERROR: ` + err.message);
+ console.error(`ERROR: ${err}`);
});
```
@@ -2782,12 +3889,12 @@ Releases the renderer. This API uses an asynchronous callback to return the resu
**Example**
-```
+```js
audioRenderer.release((err) => {
if (err) {
- console.error(`Renderer release failed`);
+ console.error('Renderer release failed');
} else {
- console.log(`Renderer released.`);
+ console.info('Renderer released.');
}
});
```
@@ -2808,11 +3915,11 @@ Releases the renderer. This API uses a promise to return the result.
**Example**
-```
+```js
audioRenderer.release().then(() => {
- console.log(`Renderer released successfully`);
+ console.info('Renderer released successfully');
}).catch((err) => {
- console.log(`ERROR: ` + err.message);
+ console.error(`ERROR: ${err}`);
});
```
@@ -2833,7 +3940,7 @@ Writes the buffer. This API uses an asynchronous callback to return the result.
**Example**
-```
+```js
import audio from '@ohos.multimedia.audio';
import fileio from '@ohos.fileio';
import featureAbility from '@ohos.ability.featureAbility'
@@ -2858,29 +3965,29 @@ var audioRendererOptions = {
var audioRenderer;
audio.createAudioRenderer(audioRendererOptions).then((data)=> {
audioRenderer = data;
- console.info(`AudioFrameworkRenderLog: AudioRenderer Created: SUCCESS`);
+ console.info('AudioFrameworkRenderLog: AudioRenderer Created: SUCCESS');
}).catch((err) => {
- console.info(`AudioFrameworkRenderLog: AudioRenderer Created: ERROR: ` + err.message);
+ console.error(`AudioFrameworkRenderLog: AudioRenderer Created: ERROR: ${err}`);
});
var bufferSize;
audioRenderer.getBufferSize().then((data)=> {
- console.info(`AudioFrameworkRenderLog: getBufferSize: SUCCESS ` + data);
+ console.info(`AudioFrameworkRenderLog: getBufferSize: SUCCESS ${data}`);
bufferSize = data;
}).catch((err) => {
- console.info.(`AudioFrameworkRenderLog: getBufferSize: ERROR: ` + err.message);
+ console.error.(`AudioFrameworkRenderLog: getBufferSize: ERROR: ${err}`);
});
-console.info(`Buffer size:` + bufferSize);
+console.info(`Buffer size: ${bufferSize}`);
var context = featureAbility.getContext();
var path = await context.getCacheDir();
-var filePath = path + "/StarWars10s-2C-48000-4SW.wav";
+var filePath = path + '/StarWars10s-2C-48000-4SW.wav';
let ss = fileio.createStreamSync(filePath, 'r');
let buf = new ArrayBuffer(bufferSize);
ss.readSync(buf);
audioRenderer.write(buf, (err, writtenbytes) => {
if (writtenbytes < 0) {
- console.error(`write failed.`);
+ console.error('write failed.');
} else {
- console.log(`Actual written bytes: ` + writtenbytes);
+ console.info(`Actual written bytes: ${writtenbytes}`);
}
});
```
@@ -2901,7 +4008,7 @@ Writes the buffer. This API uses a promise to return the result.
**Example**
-```
+```js
import audio from '@ohos.multimedia.audio';
import fileio from '@ohos.fileio';
import featureAbility from '@ohos.ability.featureAbility'
@@ -2926,18 +4033,18 @@ var audioRendererOptions = {
var audioRenderer;
audio.createAudioRenderer(audioRendererOptions).then((data) => {
audioRenderer = data;
- console.info(`AudioFrameworkRenderLog: AudioRenderer Created: SUCCESS`);
+ console.info('AudioFrameworkRenderLog: AudioRenderer Created: SUCCESS');
}).catch((err) => {
- console.info(`AudioFrameworkRenderLog: AudioRenderer Created: ERROR: ` + err.message);
+ console.error(`AudioFrameworkRenderLog: AudioRenderer Created: ERROR: ${err}`);
});
var bufferSize;
audioRenderer.getBufferSize().then((data) => {
- console.info(`AudioFrameworkRenderLog: getBufferSize: SUCCESS ` + data);
+ console.info(`AudioFrameworkRenderLog: getBufferSize: SUCCESS ${data}`);
bufferSize = data;
}).catch((err) => {
- console.info(`AudioFrameworkRenderLog: getBufferSize: ERROR: ` + err.message);
+ console.info(`AudioFrameworkRenderLog: getBufferSize: ERROR: ${err}`);
});
-console.info(`BufferSize: ` + bufferSize);
+console.info(`BufferSize: ${bufferSize}`);
var context = featureAbility.getContext();
var path = await context.getCacheDir();
var filePath = 'data/StarWars10s-2C-48000-4SW.wav';
@@ -2946,12 +4053,12 @@ let buf = new ArrayBuffer(bufferSize);
ss.readSync(buf);
audioRenderer.write(buf).then((writtenbytes) => {
if (writtenbytes < 0) {
- console.error(`write failed.`);
+ console.error('write failed.');
} else {
- console.log(`Actual written bytes: ` + writtenbytes);
+ console.info(`Actual written bytes: ${writtenbytes}`);
}
}).catch((err) => {
- console.log(`ERROR: ` + err.message);
+ console.error(`ERROR: ${err}`);
});
```
@@ -2971,9 +4078,9 @@ Obtains the number of nanoseconds elapsed from the Unix epoch (January 1, 1970).
**Example**
-```
+```js
audioRenderer.getAudioTime((err, timestamp) => {
- console.log(`Current timestamp: ` + timestamp);
+ console.info(`Current timestamp: ${timestamp}`);
});
```
@@ -2993,11 +4100,11 @@ Obtains the number of nanoseconds elapsed from the Unix epoch (January 1, 1970).
**Example**
-```
+```js
audioRenderer.getAudioTime().then((timestamp) => {
- console.log(`Current timestamp: ` + timestamp);
+ console.info(`Current timestamp: ${timestamp}`);
}).catch((err) => {
- console.log(`ERROR: ` + err.message);
+ console.error(`ERROR: ${err}`);
});
```
@@ -3017,10 +4124,10 @@ Obtains a reasonable minimum buffer size in bytes for rendering. This API uses a
**Example**
-```
+```js
var bufferSize = audioRenderer.getBufferSize(async(err, bufferSize) => {
if (err) {
- console.error(`getBufferSize error`);
+ console.error('getBufferSize error');
}
});
```
@@ -3041,7 +4148,7 @@ Obtains a reasonable minimum buffer size in bytes for rendering. This API uses a
**Example**
-```
+```js
import audio from '@ohos.multimedia.audio';
import fileio from '@ohos.fileio';
@@ -3067,14 +4174,14 @@ audio.createAudioRenderer(audioRendererOptions).then((data) => {
audioRenderer = data;
console.info('AudioFrameworkRenderLog: AudioRenderer Created: SUCCESS');
}).catch((err) => {
- console.info('AudioFrameworkRenderLog: AudioRenderer Created: ERROR: ' + err.message);
+ console.info(`AudioFrameworkRenderLog: AudioRenderer Created: ERROR: ${err}`);
});
var bufferSize;
audioRenderer.getBufferSize().then((data) => {
- console.info(`AudioFrameworkRenderLog: getBufferSize: SUCCESS ` + data);
+ console.info(`AudioFrameworkRenderLog: getBufferSize: SUCCESS ${data}`);
bufferSize = data;
}).catch((err) => {
- console.info(`AudioFrameworkRenderLog: getBufferSize: ERROR: ` + err.message);
+ console.error(`AudioFrameworkRenderLog: getBufferSize: ERROR: ${err}`);
});
```
@@ -3095,12 +4202,12 @@ Sets the render rate. This API uses an asynchronous callback to return the resul
**Example**
-```
+```js
audioRenderer.setRenderRate(audio.AudioRendererRate.RENDER_RATE_NORMAL, (err) => {
if (err) {
- console.error(`Failed to set params`);
+ console.error('Failed to set params');
} else {
- console.log(`Callback invoked to indicate a successful render rate setting.`);
+ console.info('Callback invoked to indicate a successful render rate setting.');
}
});
```
@@ -3127,11 +4234,11 @@ Sets the render rate. This API uses a promise to return the result.
**Example**
-```
+```js
audioRenderer.setRenderRate(audio.AudioRendererRate.RENDER_RATE_NORMAL).then(() => {
- console.log(`setRenderRate SUCCESS`);
+ console.info('setRenderRate SUCCESS');
}).catch((err) => {
- console.log(`ERROR: ` + err.message);
+ console.error(`ERROR: ${err}`);
});
```
@@ -3151,9 +4258,9 @@ Obtains the current render rate. This API uses an asynchronous callback to retur
**Example**
-```
+```js
audioRenderer.getRenderRate((err, renderrate) => {
- console.log(`getRenderRate: ` + renderrate);
+ console.info(`getRenderRate: ${renderrate}`);
});
```
@@ -3173,11 +4280,11 @@ Obtains the current render rate. This API uses a promise to return the result.
**Example**
-```
+```js
audioRenderer.getRenderRate().then((renderRate) => {
- console.log(`getRenderRate: ` + renderRate);
+ console.info(`getRenderRate: ${renderRate}`);
}).catch((err) => {
- console.log(`ERROR: ` + err.message);
+ console.error(`ERROR: ${err}`);
});
```
### setInterruptMode9+
@@ -3202,7 +4309,7 @@ Sets the audio interruption mode for the application. This API uses a promise to
**Example**
-```
+```js
var audioStreamInfo = {
samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_48000,
channels: audio.AudioChannel.CHANNEL_1,
@@ -3221,14 +4328,14 @@ var audioRendererOptions = {
let audioRenderer = await audio.createAudioRenderer(audioRendererOptions);
let mode = 0;
audioRenderer.setInterruptMode(mode).then(data=>{
- console.log(`setInterruptMode Success!`);
-}).catch(err=>{
- console.log(`setInterruptMode Fail:` + err.message);
+ console.info('setInterruptMode Success!');
+}).catch((err) => {
+ console.error(`setInterruptMode Fail: ${err}`);
});
```
### setInterruptMode9+
-setInterruptMode(mode: InterruptMode, callback: Callback\): void
+setInterruptMode(mode: InterruptMode, callback: AsyncCallback\): void
Sets the audio interruption mode for the application. This API uses a callback to return the result.
@@ -3239,11 +4346,11 @@ Sets the audio interruption mode for the application. This API uses a callback t
| Name | Type | Mandatory | Description |
| ------- | ----------------------------------- | ------ | -------------- |
|mode | [InterruptMode](#interruptmode9) | Yes | Audio interruption mode.|
-|callback | Callback\ | Yes |Callback used to return the result.|
+|callback | AsyncCallback\ | Yes |Callback used to return the result.|
**Example**
-```
+```js
var audioStreamInfo = {
samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_48000,
channels: audio.AudioChannel.CHANNEL_1,
@@ -3263,9 +4370,9 @@ let audioRenderer = await audio.createAudioRenderer(audioRendererOptions);
let mode = 1;
audioRenderer.setInterruptMode(mode, (err, data)=>{
if(err){
- console.log(`setInterruptMode Fail:` + err.message);
+ console.error(`setInterruptMode Fail: ${err}`);
}
- console.log(`setInterruptMode Success!`);
+ console.info('setInterruptMode Success!');
});
```
### on('interrupt')9+
@@ -3285,47 +4392,47 @@ Subscribes to audio interruption events. This API uses a callback to get interru
**Example**
-```
+```js
var isPlay;
var started;
audioRenderer.on('interrupt', async(interruptEvent) => {
if (interruptEvent.forceType == audio.InterruptForceType.INTERRUPT_FORCE) {
switch (interruptEvent.hintType) {
case audio.InterruptHint.INTERRUPT_HINT_PAUSE:
- console.log(`Force paused. Stop writing`);
+ console.info('Force paused. Stop writing');
isPlay = false;
break;
case audio.InterruptHint.INTERRUPT_HINT_STOP:
- console.log(`Force stopped. Stop writing`);
+ console.info('Force stopped. Stop writing');
isPlay = false;
break;
}
} else if (interruptEvent.forceType == audio.InterruptForceType.INTERRUPT_SHARE) {
switch (interruptEvent.hintType) {
case audio.InterruptHint.INTERRUPT_HINT_RESUME:
- console.log(`Resume force paused renderer or ignore`);
+ console.info('Resume force paused renderer or ignore');
await audioRenderer.start().then(async function () {
- console.info(`AudioInterruptMusic: renderInstant started :SUCCESS `);
+ console.info('AudioInterruptMusic: renderInstant started :SUCCESS ');
started = true;
}).catch((err) => {
- console.info(`AudioInterruptMusic: renderInstant start :ERROR : ` + err.message);
+ console.error(`AudioInterruptMusic: renderInstant start :ERROR : ${err}`);
started = false;
});
if (started) {
isPlay = true;
- console.info(`AudioInterruptMusic Renderer started : isPlay : ` + isPlay);
+ console.info(`AudioInterruptMusic Renderer started : isPlay : ${isPlay}`);
} else {
- console.error(`AudioInterruptMusic Renderer start failed`);
+ console.error('AudioInterruptMusic Renderer start failed');
}
break;
case audio.InterruptHint.INTERRUPT_HINT_PAUSE:
- console.log('Choose to pause or ignore');
+ console.info('Choose to pause or ignore');
if (isPlay == true) {
isPlay == false;
- console.info(`AudioInterruptMusic: Media PAUSE : TRUE`);
+ console.info('AudioInterruptMusic: Media PAUSE : TRUE');
} else {
isPlay = true;
- console.info(`AudioInterruptMusic: Media PLAY : TRUE`);
+ console.info('AudioInterruptMusic: Media PLAY : TRUE');
}
break;
}
@@ -3335,7 +4442,7 @@ audioRenderer.on('interrupt', async(interruptEvent) => {
### on('markReach')8+
-on(type: 'markReach', frame: number, callback: (position: number) => {}): void
+on(type: "markReach", frame: number, callback: Callback): void
Subscribes to mark reached events. When the number of frames rendered reaches the value of the **frame** parameter, the callback is invoked.
@@ -3347,14 +4454,14 @@ Subscribes to mark reached events. When the number of frames rendered reaches th
| :------- | :----------------------- | :--- | :---------------------------------------- |
| type | string | Yes | Event type. The value **markReach** means the mark reached event, which is triggered when the number of frames captured reaches the value of the **frame** parameter.|
| frame | number | Yes | Number of frames to trigger the event. The value must be greater than **0**. |
-| callback | (position: number) => {} | Yes | Callback invoked when the event is triggered. |
+| callback | Callback | Yes | Callback invoked when the event is triggered. |
**Example**
-```
+```js
audioRenderer.on('markReach', 1000, (position) => {
if (position == 1000) {
- console.log(`ON Triggered successfully`);
+ console.info('ON Triggered successfully');
}
});
```
@@ -3376,13 +4483,13 @@ Unsubscribes from mark reached events.
**Example**
-```
+```js
audioRenderer.off('markReach');
```
### on('periodReach') 8+
-on(type: "periodReach", frame: number, callback: (position: number) => {}): void
+on(type: "periodReach", frame: number, callback: Callback): void
Subscribes to period reached events. When the period of frame rendering reaches the value of the **frame** parameter, the callback is invoked.
@@ -3393,15 +4500,15 @@ Subscribes to period reached events. When the period of frame rendering reaches
| Name | Type | Mandatory| Description |
| :------- | :----------------------- | :--- | :------------------------------------------ |
| type | string | Yes | Event type. The value **periodReach** means the period reached event, which is triggered when the period of frame rendering reaches the value of the **frame** parameter.|
-| frame | number | Yes | Period during which frame rendering is listened. The value must be greater than **0**. |
-| callback | (position: number) => {} | Yes | Callback invoked when the event is triggered. |
+| frame | number | Yes | Number of frames to trigger the event. The value must be greater than **0**. |
+| callback | Callback | Yes | Callback invoked when the event is triggered. |
**Example**
-```
+```js
audioRenderer.on('periodReach', 1000, (position) => {
if (position == 1000) {
- console.log(`ON Triggered successfully`);
+ console.info('ON Triggered successfully');
}
});
```
@@ -3422,7 +4529,7 @@ Unsubscribes from period reached events.
**Example**
-```
+```js
audioRenderer.off('periodReach')
```
@@ -3443,46 +4550,17 @@ Subscribes to state change events.
**Example**
-```
+```js
audioRenderer.on('stateChange', (state) => {
if (state == 1) {
- console.log(`audio renderer state is: STATE_PREPARED`);
+ console.info('audio renderer state is: STATE_PREPARED');
}
if (state == 2) {
- console.log(`audio renderer state is: STATE_RUNNING`);
+ console.info('audio renderer state is: STATE_RUNNING');
}
});
```
-### on('dataRequest') 9+
-
-on(type: "dataRequest", callback: Callback\): void;
-
-Subscribes to request events of audio data.
-
-**System capability**: SystemCapability.Multimedia.Audio.Renderer
-
-**Parameters**
-
-| Name | Type | Mandatory| Description |
-| -------- | ------- | --------- | ------------------------------------------------------------------- |
-| type | string | Yes | Event type. The value **dataRequest** indicates a data request event.|
-| callback | [AudioRendererDataInfo](#audiorendererdatainfo9) | Yes | Callback used to return the audio renderer information.|
-
-**Example**
-```
-const path = '/data/storage/el2/ba se/haps/entry/cache/PinkPanther60-44100-1c.wav';
- let ss = fileio.createStreamSync(path, 'r');
- let discardHeader = new ArrayBuffer(44);
- ss.readSync(discardHeader);
- let rlen = 0;
- audioRenderer.on('dataRequest', (audioRendererDataInfo) => {
- var viewObject = new DataView(audioRendererDataInfo.buffer);
- rlen += ss.readSync(viewObject.buffer);
- console.info(`AudioRenderLog: bytes read from file: ` + rlen);
- })
-```
-
## AudioCapturer8+
Provides APIs for audio capture. Before calling any API in **AudioCapturer**, you must use [createAudioCapturer](#audiocreateaudiocapturer8) to create an **AudioCapturer** instance.
@@ -3497,7 +4575,7 @@ Provides APIs for audio capture. Before calling any API in **AudioCapturer**, yo
**Example**
-```
+```js
var state = audioCapturer.state;
```
@@ -3517,14 +4595,14 @@ Obtains the capturer information of this **AudioCapturer** instance. This API us
**Example**
-```
+```js
audioCapturer.getCapturerInfo((err, capturerInfo) => {
if (err) {
- console.error(`Failed to get capture info`);
+ console.error('Failed to get capture info');
} else {
- console.log(`Capturer getCapturerInfo:`);
- console.log(`Capturer source:` + capturerInfo.source);
- console.log(`Capturer flags:` + capturerInfo.capturerFlags);
+ console.info('Capturer getCapturerInfo:');
+ console.info(`Capturer source: ${capturerInfo.source}`);
+ console.info(`Capturer flags: ${capturerInfo.capturerFlags}`);
}
});
```
@@ -3546,18 +4624,18 @@ Obtains the capturer information of this **AudioCapturer** instance. This API us
**Example**
-```
+```js
audioCapturer.getCapturerInfo().then((audioParamsGet) => {
if (audioParamsGet != undefined) {
- console.info(`AudioFrameworkRecLog: Capturer CapturerInfo:`);
- console.info(`AudioFrameworkRecLog: Capturer SourceType:` + audioParamsGet.source);
- console.info(`AudioFrameworkRecLog: Capturer capturerFlags:` + audioParamsGet.capturerFlags);
+ console.info('AudioFrameworkRecLog: Capturer CapturerInfo:');
+ console.info(`AudioFrameworkRecLog: Capturer SourceType: ${audioParamsGet.source}`);
+ console.info(`AudioFrameworkRecLog: Capturer capturerFlags: ${audioParamsGet.capturerFlags}`);
} else {
- console.info(`AudioFrameworkRecLog: audioParamsGet is : ` + audioParamsGet);
- console.info(`AudioFrameworkRecLog: audioParams getCapturerInfo are incorrect: `);
+ console.info(`AudioFrameworkRecLog: audioParamsGet is : ${audioParamsGet}`);
+ console.info('AudioFrameworkRecLog: audioParams getCapturerInfo are incorrect');
}
}).catch((err) => {
- console.log(`AudioFrameworkRecLog: CapturerInfo :ERROR: ` + err.message);
+ console.error(`AudioFrameworkRecLog: CapturerInfo :ERROR: ${err}`);
});
```
@@ -3577,16 +4655,16 @@ Obtains the stream information of this **AudioCapturer** instance. This API uses
**Example**
-```
+```js
audioCapturer.getStreamInfo((err, streamInfo) => {
if (err) {
- console.error(`Failed to get stream info');
+ console.error('Failed to get stream info');
} else {
- console.log(`Capturer GetStreamInfo:`);
- console.log(`Capturer sampling rate:` + streamInfo.samplingRate);
- console.log(`Capturer channel:` + streamInfo.channels);
- console.log(`Capturer format:` + streamInfo.sampleFormat);
- console.log(`Capturer encoding type:` + streamInfo.encodingType);
+ console.info('Capturer GetStreamInfo:');
+ console.info(`Capturer sampling rate: ${streamInfo.samplingRate}`);
+ console.info(`Capturer channel: ${streamInfo.channels}`);
+ console.info(`Capturer format: ${streamInfo.sampleFormat}`);
+ console.info(`Capturer encoding type: ${streamInfo.encodingType}`);
}
});
```
@@ -3607,15 +4685,15 @@ Obtains the stream information of this **AudioCapturer** instance. This API uses
**Example**
-```
+```js
audioCapturer.getStreamInfo().then((audioParamsGet) => {
- console.info(`getStreamInfo:`);
- console.info(`sampleFormat:` + audioParamsGet.sampleFormat);
- console.info(`samplingRate:` + audioParamsGet.samplingRate);
- console.info(`channels:` + audioParamsGet.channels);
- console.info(`encodingType:` + audioParamsGet.encodingType);
+ console.info('getStreamInfo:');
+ console.info(`sampleFormat: ${audioParamsGet.sampleFormat}`);
+ console.info(`samplingRate: ${audioParamsGet.samplingRate}`);
+ console.info(`channels: ${audioParamsGet.channels}`);
+ console.info(`encodingType: ${audioParamsGet.encodingType}`);
}).catch((err) => {
- console.log(`getStreamInfo :ERROR: ` + err.message);
+ console.error(`getStreamInfo :ERROR: ${err}`);
});
```
@@ -3635,12 +4713,12 @@ Starts capturing. This API uses an asynchronous callback to return the result.
**Example**
-```
+```js
audioCapturer.start((err) => {
if (err) {
- console.error(`Capturer start failed.`);
+ console.error('Capturer start failed.');
} else {
- console.info(`Capturer start success.`);
+ console.info('Capturer start success.');
}
});
```
@@ -3662,7 +4740,7 @@ Starts capturing. This API uses a promise to return the result.
**Example**
-```
+```js
import audio from '@ohos.multimedia.audio';
import fileio from '@ohos.fileio';
@@ -3679,24 +4757,22 @@ var audioCapturerInfo = {
}
var audioCapturer;
-var stateFlag;
audio.createAudioCapturer(audioCapturerOptions).then((data) => {
audioCapturer = data;
- console.info(`AudioFrameworkRecLog: AudioCapturer Created: SUCCESS`);
+ console.info('AudioFrameworkRecLog: AudioCapturer Created: SUCCESS');
}).catch((err) => {
- console.info(`AudioFrameworkRecLog: AudioCapturer Created: ERROR: ` + err.message);
+ console.info(`AudioFrameworkRecLog: AudioCapturer Created: ERROR: ${err}`);
});
audioCapturer.start().then(() => {
- console.info(`AudioFrameworkRecLog: ---------START---------`);
- console.info(`AudioFrameworkRecLog: Capturer started: SUCCESS`);
- console.info(`AudioFrameworkRecLog: AudioCapturer: STATE: ` + audioCapturer.state);
- console.info(`AudioFrameworkRecLog: Capturer started: SUCCESS `);
+ console.info('AudioFrameworkRecLog: ---------START---------');
+ console.info('AudioFrameworkRecLog: Capturer started: SUCCESS');
+ console.info(`AudioFrameworkRecLog: AudioCapturer: STATE: ${audioCapturer.state}`);
+ console.info('AudioFrameworkRecLog: Capturer started: SUCCESS');
if ((audioCapturer.state == audio.AudioState.STATE_RUNNING)) {
- console.info(`AudioFrameworkRecLog: AudioCapturer is in Running State`);
+ console.info('AudioFrameworkRecLog: AudioCapturer is in Running State');
}
}).catch((err) => {
- console.info(`AudioFrameworkRecLog: Capturer start :ERROR : ` + err.message);
- stateFlag = false;
+ console.info(`AudioFrameworkRecLog: Capturer start :ERROR : ${err}`);
});
```
@@ -3716,12 +4792,12 @@ Stops capturing. This API uses an asynchronous callback to return the result.
**Example**
-```
+```js
audioCapturer.stop((err) => {
if (err) {
- console.error(`Capturer stop failed`);
+ console.error('Capturer stop failed');
} else {
- console.log(`Capturer stopped.`);
+ console.info('Capturer stopped.');
}
});
```
@@ -3743,15 +4819,15 @@ Stops capturing. This API uses a promise to return the result.
**Example**
-```
+```js
audioCapturer.stop().then(() => {
- console.info(`AudioFrameworkRecLog: ---------STOP RECORD---------`);
- console.info(`AudioFrameworkRecLog: Capturer stopped: SUCCESS`);
+ console.info('AudioFrameworkRecLog: ---------STOP RECORD---------');
+ console.info('AudioFrameworkRecLog: Capturer stopped: SUCCESS');
if ((audioCapturer.state == audio.AudioState.STATE_STOPPED)){
- console.info(`AudioFrameworkRecLog: State is Stopped: `);
+ console.info('AudioFrameworkRecLog: State is Stopped:');
}
}).catch((err) => {
- console.info(`AudioFrameworkRecLog: Capturer stop: ERROR: ` + err.message);
+ console.info(`AudioFrameworkRecLog: Capturer stop: ERROR: ${err}`);
});
```
@@ -3771,12 +4847,12 @@ Releases this **AudioCapturer** instance. This API uses an asynchronous callback
**Example**
-```
+```js
audioCapturer.release((err) => {
if (err) {
- console.error(`capturer release failed`);
+ console.error('capturer release failed');
} else {
- console.log(`capturer released.`);
+ console.info('capturer released.');
}
});
```
@@ -3798,15 +4874,15 @@ Releases this **AudioCapturer** instance. This API uses a promise to return the
**Example**
-```
+```js
var stateFlag;
audioCapturer.release().then(() => {
- console.info(`AudioFrameworkRecLog: ---------RELEASE RECORD---------`);
- console.info(`AudioFrameworkRecLog: Capturer release : SUCCESS`);
- console.info(`AudioFrameworkRecLog: AudioCapturer : STATE : ` + audioCapturer.state);
- console.info(`AudioFrameworkRecLog: stateFlag : ` + stateFlag);
+ console.info('AudioFrameworkRecLog: ---------RELEASE RECORD---------');
+ console.info('AudioFrameworkRecLog: Capturer release : SUCCESS');
+ console.info(`AudioFrameworkRecLog: AudioCapturer : STATE : ${audioCapturer.state}`);
+ console.info(`AudioFrameworkRecLog: stateFlag : ${stateFlag}`);
}).catch((err) => {
- console.info(`AudioFrameworkRecLog: Capturer stop: ERROR: ` + err.message);
+ console.info(`AudioFrameworkRecLog: Capturer stop: ERROR: ${err}`);
});
```
@@ -3829,17 +4905,17 @@ Reads the buffer. This API uses an asynchronous callback to return the result.
**Example**
-```
+```js
var bufferSize;
audioCapturer.getBufferSize().then((data) => {
- console.info(`AudioFrameworkRecLog: getBufferSize: SUCCESS ` + data);
+ console.info(`AudioFrameworkRecLog: getBufferSize: SUCCESS ${data}`);
bufferSize = data;
}).catch((err) => {
- console.info(`AudioFrameworkRecLog: getBufferSize: EROOR: ` + err.message);
+ console.error(`AudioFrameworkRecLog: getBufferSize: EROOR: ${err}`);
});
audioCapturer.read(bufferSize, true, async(err, buffer) => {
if (!err) {
- console.log(`Success in reading the buffer data`);
+ console.info('Success in reading the buffer data');
}
});
```
@@ -3868,19 +4944,19 @@ Reads the buffer. This API uses a promise to return the result.
**Example**
-```
+```js
var bufferSize;
audioCapturer.getBufferSize().then((data) => {
- console.info(`AudioFrameworkRecLog: getBufferSize: SUCCESS ` + data);
+ console.info(`AudioFrameworkRecLog: getBufferSize: SUCCESS ${data}`);
bufferSize = data;
}).catch((err) => {
- console.info(`AudioFrameworkRecLog: getBufferSize: ERROR ` + err.message);
+ console.info(`AudioFrameworkRecLog: getBufferSize: ERROR ${err}`);
});
-console.info(`Buffer size: ` + bufferSize);
+console.info(`Buffer size: ${bufferSize}`);
audioCapturer.read(bufferSize, true).then((buffer) => {
- console.info(`buffer read successfully`);
+ console.info('buffer read successfully');
}).catch((err) => {
- console.info(`ERROR : ` + err.message);
+ console.info(`ERROR : ${err}`);
});
```
@@ -3897,13 +4973,13 @@ Obtains the number of nanoseconds elapsed from the Unix epoch (January 1, 1970).
| Name | Type | Mandatory| Description |
| :------- | :--------------------- | :--- | :----------------------------- |
-| callback | AsyncCallback | Yes | Callback used to return the timestamp. |
+| callback | AsyncCallback | Yes | Callback used to return the result.|
**Example**
-```
+```js
audioCapturer.getAudioTime((err, timestamp) => {
- console.log(`Current timestamp: ` + timestamp);
+ console.info(`Current timestamp: ${timestamp}`);
});
```
@@ -3924,11 +5000,11 @@ Obtains the number of nanoseconds elapsed from the Unix epoch (January 1, 1970).
**Example**
-```
+```js
audioCapturer.getAudioTime().then((audioTime) => {
- console.info(`AudioFrameworkRecLog: AudioCapturer getAudioTime : Success` + audioTime );
+ console.info(`AudioFrameworkRecLog: AudioCapturer getAudioTime : Success ${audioTime}`);
}).catch((err) => {
- console.info(`AudioFrameworkRecLog: AudioCapturer Created : ERROR : ` + err.message);
+ console.info(`AudioFrameworkRecLog: AudioCapturer Created : ERROR : ${err}`);
});
```
@@ -3949,14 +5025,14 @@ Obtains a reasonable minimum buffer size in bytes for capturing. This API uses a
**Example**
-```
+```js
audioCapturer.getBufferSize((err, bufferSize) => {
if (!err) {
- console.log(`BufferSize : ` + bufferSize);
+ console.info(`BufferSize : ${bufferSize}`);
audioCapturer.read(bufferSize, true).then((buffer) => {
- console.info(`Buffer read is ` + buffer );
+ console.info(`Buffer read is ${buffer}`);
}).catch((err) => {
- console.info(`AudioFrameworkRecLog: AudioCapturer Created : ERROR : ` + err.message);
+ console.error(`AudioFrameworkRecLog: AudioCapturer Created : ERROR : ${err}`);
});
}
});
@@ -3979,20 +5055,20 @@ Obtains a reasonable minimum buffer size in bytes for capturing. This API uses a
**Example**
-```
+```js
var bufferSize;
audioCapturer.getBufferSize().then((data) => {
- console.info(`AudioFrameworkRecLog: getBufferSize :SUCCESS ` + data);
+ console.info(`AudioFrameworkRecLog: getBufferSize :SUCCESS ${data}`);
bufferSize = data;
}).catch((err) => {
- console.info(`AudioFrameworkRecLog: getBufferSize :ERROR : ` + err.message);
+ console.info(`AudioFrameworkRecLog: getBufferSize :ERROR : ${err}`);
});
```
### on('markReach')8+
-on(type: 'markReach', frame: number, callback: (position: number) => {}): void
+on(type: "markReach", frame: number, callback: Callback): void
Subscribes to mark reached events. When the number of frames captured reaches the value of the **frame** parameter, the callback is invoked.
@@ -4000,18 +5076,18 @@ Subscribes to mark reached events. When the number of frames captured reaches th
**Parameters**
-| Name | Type | Mandatory| Description |
-| :------- | :---------------------- | :--- | :----------------------------------------- |
-| type | string | Yes | Event type. The value **markReach** means the mark reached event, which is triggered when the number of frames captured reaches the value of the **frame** parameter. |
-| frame | number | Yes | Number of frames to trigger the event. The value must be greater than **0**. |
-| callback | position: number) => {} | Yes | Callback invoked when the event is triggered.|
+| Name | Type | Mandatory| Description |
+| :------- | :---------------------- | :--- | :----------------------------------------- |
+| type | string | Yes | Event type. The value **markReach** means the mark reached event, which is triggered when the number of frames captured reaches the value of the **frame** parameter. |
+| frame | number | Yes | Number of frames to trigger the event. The value must be greater than **0**. |
+| callback | Callback | Yes | Callback invoked when the event is triggered.|
**Example**
-```
+```js
audioCapturer.on('markReach', 1000, (position) => {
if (position == 1000) {
- console.log(`ON Triggered successfully`);
+ console.info('ON Triggered successfully');
}
});
```
@@ -4032,13 +5108,13 @@ Unsubscribes from mark reached events.
**Example**
-```
+```js
audioCapturer.off('markReach');
```
### on('periodReach')8+
-on(type: "periodReach", frame: number, callback: (position: number) => {}): void
+on(type: "periodReach", frame: number, callback: Callback): void
Subscribes to mark reached events. When the period of frame capturing reaches the value of the **frame** parameter, the callback is invoked.
@@ -4048,16 +5124,16 @@ Subscribes to mark reached events. When the period of frame capturing reaches th
| Name | Type | Mandatory| Description |
| :------- | :----------------------- | :--- | :------------------------------------------ |
-| type | string | Yes | Event type. The value **periodReach** means the period reached event, which is triggered when the period of frame capturing reaches the value of the **frame** parameter. |
-| frame | number | Yes | Period during which frame capturing is listened. The value must be greater than **0**. |
-| callback | (position: number) => {} | Yes | Callback invoked when the event is triggered. |
+| type | string | Yes | Event type. The value **periodReach** means the period reached event, which is triggered when the period of frame rendering reaches the value of the **frame** parameter.|
+| frame | number | Yes | Number of frames to trigger the event. The value must be greater than **0**. |
+| callback | Callback | Yes | Callback invoked when the event is triggered. |
**Example**
-```
+```js
audioCapturer.on('periodReach', 1000, (position) => {
if (position == 1000) {
- console.log(`ON Triggered successfully`);
+ console.info('ON Triggered successfully');
}
});
```
@@ -4078,7 +5154,7 @@ Unsubscribes from period reached events.
**Example**
-```
+```js
audioCapturer.off('periodReach')
```
@@ -4099,13 +5175,13 @@ Subscribes to state change events.
**Example**
-```
+```js
audioCapturer.on('stateChange', (state) => {
if (state == 1) {
- console.log(`audio capturer state is: STATE_PREPARED`);
+ console.info('audio capturer state is: STATE_PREPARED');
}
if (state == 2) {
- console.log(`audio capturer state is: STATE_RUNNING`);
+ console.info('audio capturer state is: STATE_RUNNING');
}
});
```