提交 c98bc2a9 编写于 作者: J jiao_yanlin

Update device descriptor, focus type and sample format, sample code modification

Signed-off-by: Njiao_yanlin <jiaoyanlin@huawei.com>
上级 fc39f1cd
...@@ -36,6 +36,24 @@ getAudioManager(): AudioManager ...@@ -36,6 +36,24 @@ getAudioManager(): AudioManager
var audioManager = audio.getAudioManager(); var audioManager = audio.getAudioManager();
``` ```
## audio.getStreamManager<sup>9+</sup>
getStreamManager(): AudioStreamManager
获取音频流管理器实例。
**系统能力:** SystemCapability.Multimedia.Audio.Core
**返回值:**
| 类型 | 说明 |
| -------------------------------------------------| ------------------------------- |
| [AudioStreamManager](#audiostreammanager9) | 返回音频流管理器实例。 |
**示例:**
```
var audioStreamManager = audio.getStreamManager();
```
## audio.createAudioRenderer<sup>8+</sup> ## audio.createAudioRenderer<sup>8+</sup>
createAudioRenderer(options: AudioRendererOptions, callback: AsyncCallback\<AudioRenderer>): void createAudioRenderer(options: AudioRendererOptions, callback: AsyncCallback\<AudioRenderer>): void
...@@ -44,7 +62,7 @@ createAudioRenderer(options: AudioRendererOptions, callback: AsyncCallback\<Audi ...@@ -44,7 +62,7 @@ createAudioRenderer(options: AudioRendererOptions, callback: AsyncCallback\<Audi
**系统能力:** SystemCapability.Multimedia.Audio.Renderer **系统能力:** SystemCapability.Multimedia.Audio.Renderer
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| -------- | ----------------------------------------------- | ---- | ---------------- | | -------- | ----------------------------------------------- | ---- | ---------------- |
...@@ -252,7 +270,7 @@ audio.createAudioCapturer(audioCapturerOptions).then((data) => { ...@@ -252,7 +270,7 @@ audio.createAudioCapturer(audioCapturerOptions).then((data) => {
枚举,焦点模型。 枚举,焦点模型。
**系统能力:** SystemCapability.Multimedia.Audio.InterruptMode **系统能力:** SystemCapability.Multimedia.Audio.Core
| 名称 | 默认值 | 描述 | | 名称 | 默认值 | 描述 |
| ---------------------------- | ------ | ---------- | | ---------------------------- | ------ | ---------- |
...@@ -331,13 +349,14 @@ audio.createAudioCapturer(audioCapturerOptions).then((data) => { ...@@ -331,13 +349,14 @@ audio.createAudioCapturer(audioCapturerOptions).then((data) => {
**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Core **系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Core
| 名称 | 默认值 | 描述 | | 名称 | 默认值 | 描述 |
| --------------------- | ------ | -------------------------- | | ---------------------------------- | ------ | -------------------------- |
| SAMPLE_FORMAT_INVALID | -1 | 无效格式。 | | SAMPLE_FORMAT_INVALID | -1 | 无效格式。 |
| SAMPLE_FORMAT_U8 | 0 | 无符号8位整数。 | | SAMPLE_FORMAT_U8 | 0 | 无符号8位整数。 |
| SAMPLE_FORMAT_S16LE | 1 | 带符号的16位整数,小尾数。 | | SAMPLE_FORMAT_S16LE | 1 | 带符号的16位整数,小尾数。 |
| SAMPLE_FORMAT_S24LE | 2 | 带符号的24位整数,小尾数。 | | SAMPLE_FORMAT_S24LE | 2 | 带符号的24位整数,小尾数。 <br>由于系统限制,该采样格式仅部分设备支持,请根据实际情况使用。|
| SAMPLE_FORMAT_S32LE | 3 | 带符号的32位整数,小尾数。 | | SAMPLE_FORMAT_S32LE | 3 | 带符号的32位整数,小尾数。 <br>由于系统限制,该采样格式仅部分设备支持,请根据实际情况使用。|
| SAMPLE_FORMAT_F32LE<sup>9+</sup> | 4 | 带符号的32位整数,小尾数。 <br>由于系统限制,该采样格式仅部分设备支持,请根据实际情况使用。|
## AudioChannel<sup>8+</sup> ## AudioChannel<sup>8+</sup>
...@@ -409,6 +428,17 @@ audio.createAudioCapturer(audioCapturerOptions).then((data) => { ...@@ -409,6 +428,17 @@ audio.createAudioCapturer(audioCapturerOptions).then((data) => {
| STREAM_USAGE_VOICE_COMMUNICATION | 2 | 语音通信。 | | STREAM_USAGE_VOICE_COMMUNICATION | 2 | 语音通信。 |
| STREAM_USAGE_NOTIFICATION_RINGTONE | 6 | 通知铃声。 | | STREAM_USAGE_NOTIFICATION_RINGTONE | 6 | 通知铃声。 |
## FocusType<sup>9+</sup>
表示焦点类型的枚举。
**系统能力:**: SystemCapability.Multimedia.Audio.Core
| 名称 | 默认值 | 描述 |
| ---------------------------------- | ------ | ------------------------------- |
| FOCUS_TYPE_RECORDING | 0 | 在录制场景使用,可打断其他音频。 |
## AudioState<sup>8+</sup> ## AudioState<sup>8+</sup>
枚举,音频状态。 枚举,音频状态。
...@@ -510,6 +540,17 @@ audio.createAudioCapturer(audioCapturerOptions).then((data) => { ...@@ -510,6 +540,17 @@ audio.createAudioCapturer(audioCapturerOptions).then((data) => {
| usage | [StreamUsage](#streamusage) | 是 | 音频流使用类型。 | | usage | [StreamUsage](#streamusage) | 是 | 音频流使用类型。 |
| rendererFlags | number | 是 | 音频渲染器标志。 | | rendererFlags | number | 是 | 音频渲染器标志。 |
## AudioRendererFlag<sup>9+</sup>
枚举,决定输出策略的音频渲染器标志。
**系统能力**: SystemCapability.Multimedia.Audio.Core
| 名称 | 默认值 | 说明 |
| ------------------| ------------ | ---------------------- |
| FLAG_NONE | 0 | 无特殊策略。 |
| FLAG_LOW_LATENCY | 1 | 使用低延迟进程的标志。 |
## AudioRendererOptions<sup>8+</sup> ## AudioRendererOptions<sup>8+</sup>
音频渲染器选项信息。 音频渲染器选项信息。
...@@ -576,7 +617,7 @@ audio.createAudioCapturer(audioCapturerOptions).then((data) => { ...@@ -576,7 +617,7 @@ audio.createAudioCapturer(audioCapturerOptions).then((data) => {
描述设备连接状态变化和设备信息。 描述设备连接状态变化和设备信息。
**系统能力:**SystemCapability.Multimedia.Audio.Device **系统能力:** SystemCapability.Multimedia.Audio.Device
| 名称 | 类型 | 必填 | 说明 | | 名称 | 类型 | 必填 | 说明 |
| :---------------- | :------------------------------------------------ | :--- | :----------------- | | :---------------- | :------------------------------------------------ | :--- | :----------------- |
...@@ -616,6 +657,17 @@ audio.createAudioCapturer(audioCapturerOptions).then((data) => { ...@@ -616,6 +657,17 @@ audio.createAudioCapturer(audioCapturerOptions).then((data) => {
| source | [SourceType](#sourcetype) | 是 | 音源类型。 | | source | [SourceType](#sourcetype) | 是 | 音源类型。 |
| capturerFlags | number | 是 | 音频采集器标志。 | | capturerFlags | number | 是 | 音频采集器标志。 |
## AudioRendererDataInfo<sup>9+</sup>
音频渲染器的数据信息。
**系统能力**: SystemCapability.Multimedia.Audio.Renderer
| 名称 | 类型 | 必填 | 说明 |
| ------- | ----------- | -------| ------------------------ |
| buffer | ArrayBuffer | 是 | 要填充的缓冲区。 |
| flags | number | 是 | 缓冲区扩展信息。 |
## SourceType<sup>8+</sup><a name="sourcetype"></a> ## SourceType<sup>8+</sup><a name="sourcetype"></a>
枚举,音源类型。 枚举,音源类型。
...@@ -651,7 +703,7 @@ setVolume(volumeType: AudioVolumeType, volume: number, callback: AsyncCallback&l ...@@ -651,7 +703,7 @@ setVolume(volumeType: AudioVolumeType, volume: number, callback: AsyncCallback&l
设置指定流的音量,使用callback方式异步返回结果。 设置指定流的音量,使用callback方式异步返回结果。
**需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY仅设置铃声(即volumeType为AudioVolumeType.RINGTONE)在静音和非静音状态切换时需要该权限。 **需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY<br/>仅设置铃声(即volumeType为AudioVolumeType.RINGTONE)在静音和非静音状态切换时需要该权限。
**系统能力:** SystemCapability.Multimedia.Audio.Volume **系统能力:** SystemCapability.Multimedia.Audio.Volume
...@@ -681,7 +733,7 @@ setVolume(volumeType: AudioVolumeType, volume: number): Promise&lt;void&gt; ...@@ -681,7 +733,7 @@ setVolume(volumeType: AudioVolumeType, volume: number): Promise&lt;void&gt;
设置指定流的音量,使用Promise方式异步返回结果。 设置指定流的音量,使用Promise方式异步返回结果。
**需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY仅设置铃声(即volumeType为AudioVolumeType.RINGTONE)在静音和非静音状态切换时需要该权限。 **需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY<br/>仅设置铃声(即volumeType为AudioVolumeType.RINGTONE)在静音和非静音状态切换时需要该权限。
**系统能力:** SystemCapability.Multimedia.Audio.Volume **系统能力:** SystemCapability.Multimedia.Audio.Volume
...@@ -877,7 +929,7 @@ mute(volumeType: AudioVolumeType, mute: boolean, callback: AsyncCallback&lt;void ...@@ -877,7 +929,7 @@ mute(volumeType: AudioVolumeType, mute: boolean, callback: AsyncCallback&lt;void
设置指定音量流静音,使用callback方式异步返回结果。 设置指定音量流静音,使用callback方式异步返回结果。
**需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY仅设置铃声(即volumeType为AudioVolumeType.RINGTONE)在静音和非静音状态切换时需要该权限。 **需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY<br/>仅设置铃声(即volumeType为AudioVolumeType.RINGTONE)在静音和非静音状态切换时需要该权限。
**系统能力:** SystemCapability.Multimedia.Audio.Volume **系统能力:** SystemCapability.Multimedia.Audio.Volume
...@@ -907,7 +959,7 @@ mute(volumeType: AudioVolumeType, mute: boolean): Promise&lt;void&gt; ...@@ -907,7 +959,7 @@ mute(volumeType: AudioVolumeType, mute: boolean): Promise&lt;void&gt;
设置指定音量流静音,使用Promise方式异步返回结果。 设置指定音量流静音,使用Promise方式异步返回结果。
**需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY仅设置铃声(即volumeType为AudioVolumeType.RINGTONE)在静音和非静音状态切换时需要该权限。 **需要权限:** ohos.permission.ACCESS_NOTIFICATION_POLICY<br/>仅设置铃声(即volumeType为AudioVolumeType.RINGTONE)在静音和非静音状态切换时需要该权限。
**系统能力:** SystemCapability.Multimedia.Audio.Volume **系统能力:** SystemCapability.Multimedia.Audio.Volume
...@@ -1566,6 +1618,8 @@ on(type: 'volumeChange', callback: Callback\<VolumeEvent>): void ...@@ -1566,6 +1618,8 @@ on(type: 'volumeChange', callback: Callback\<VolumeEvent>): void
此接口为系统接口,三方应用不支持调用。 此接口为系统接口,三方应用不支持调用。
目前此订阅接口在单进程多AudioManager实例的使用场景下,仅最后一个实例的订阅生效,其他实例的订阅会被覆盖(即使最后一个实例没有进行订阅),因此推荐使用单一AudioManager实例进行开发。
**系统能力:** SystemCapability.Multimedia.Audio.Volume **系统能力:** SystemCapability.Multimedia.Audio.Volume
**参数:** **参数:**
...@@ -1839,16 +1893,534 @@ audioManager.getAudioScene().then((value) => { ...@@ -1839,16 +1893,534 @@ audioManager.getAudioScene().then((value) => {
}); });
``` ```
## AudioStreamManager<sup>9+</sup>
管理音频流。在使用AudioStreamManager的API前,需要使用[getStreamManager](#audiogetstreammanager9)获取AudioStreamManager实例。
### getCurrentAudioRendererInfoArray<sup>9+</sup>
getCurrentAudioRendererInfoArray(callback: AsyncCallback&lt;AudioRendererChangeInfoArray&gt;): void
获取当前音频渲染器的信息。使用callback异步回调。
**系统能力**: SystemCapability.Multimedia.Audio.Renderer
**参数:**
| 名称 | 类型 | 必填 | 说明 |
| -------- | ----------------------------------- | -------- | --------------------------- |
| callback | AsyncCallback<[AudioRendererChangeInfoArray](#audiorendererchangeinfoarray9)> | 是 | 回调函数,返回当前音频渲染器的信息。 |
**示例:**
```
audioStreamManager.getCurrentAudioRendererInfoArray(async (err, AudioRendererChangeInfoArray) => {
console.info('[GET_RENDERER_STATE_1_CALLBACK] **** Get Callback Called ****');
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);
}
}
}
}
});
```
### getCurrentAudioRendererInfoArray<sup>9+</sup>
getCurrentAudioRendererInfoArray(): Promise&lt;AudioRendererChangeInfoArray&gt;
获取当前音频渲染器的信息。使用Promise异步回调。
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
**返回值:**
| 类型 | 说明 |
| ---------------------------------------------------------------------------------| --------------------------------------- |
| Promise<[AudioRendererChangeInfoArray](#audiorendererchangeinfoarray9)> | Promise对象,返回当前音频渲染器信息。 |
**示例:**
```
await audioStreamManager.getCurrentAudioRendererInfoArray().then( function (AudioRendererChangeInfoArray) {
console.info('[GET_RENDERER_STATE_3_PROMISE] ######### 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);
resultFlag = false;
});
```
### getCurrentAudioCapturerInfoArray<sup>9+</sup>
getCurrentAudioCapturerInfoArray(callback: AsyncCallback&lt;AudioCapturerChangeInfoArray&gt;): void
获取当前音频采集器的信息。使用callback异步回调。
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
**参数:**
| 名称 | 类型 | 必填 | 说明 |
| ---------- | ----------------------------------- | --------- | -------------------------------------------------------- |
| callback | AsyncCallback<[AudioCapturerChangeInfoArray](#audiocapturerchangeinfoarray9)> | 是 | 回调函数,返回当前音频采集器的信息。 |
**示例:**
```
audioStreamManager.getCurrentAudioCapturerInfoArray(async (err, AudioCapturerChangeInfoArray) => {
console.info('[GET_CAPTURER_STATE_1_CALLBACK] **** Get Callback Called ****');
if (err) {
console.log('getCurrentAudioCapturerInfoArray :ERROR: '+err.message);
resultFlag = false;
}
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);
}
}
}
}
});
```
### getCurrentAudioCapturerInfoArray<sup>9+</sup>
getCurrentAudioCapturerInfoArray(): Promise&lt;AudioCapturerChangeInfoArray&gt;
获取当前音频采集器的信息。使用Promise异步回调。
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
**返回值:**
| 类型 | 说明 |
| -----------------------------------------------------------------------------| ----------------------------------- |
| Promise<[AudioCapturerChangeInfoArray](#audiocapturerchangeinfoarray9)> | Promise对象,返回当前音频渲染器信息。 |
**示例:**
```
await audioStreamManagerCB.getCurrentAudioCapturerInfoArray().then( function (AudioCapturerChangeInfoArray) {
console.info('AFCapturerChangeLog: [GET_CAP_STA_1_PR] **** 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;
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);
}
}
}
}).catch((err) => {
console.log('getCurrentAudioCapturerInfoArray :ERROR: '+err.message);
resultFlag = false;
});
```
### on('audioRendererChange')<sup>9+</sup>
on(type: "audioRendererChange", callback: Callback&lt;AudioRendererChangeInfoArray&gt;): void
监听音频渲染器更改事件。
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
**参数:**
| 名称 | 类型 | 必填 | 说明 |
| -------- | ---------- | --------- | ------------------------------------------------------------------------ |
| type | string | 是 | 事件类型,支持的事件`'audioRendererChange'`:当音频渲染器发生更改时触发。 |
| callback | Callback<[AudioRendererChangeInfoArray](#audiorendererchangeinfoarry9)> | 是 | 回调函数。 |
**示例:**
```
audioStreamManagerCB.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);
}
}
});
```
### off('audioRendererChange')<sup>9+</sup>
off(type: "audioRendererChange");
监听音频渲染器更改事件。
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
**参数:**
| 名称 | 类型 | 必填 | 说明 |
| -------- | ------- | ---- | ---------------- |
| type | string | 是 | 事件类型,支持的事件`'audioRendererChange'`:音频渲染器更改事件。 |
**示例:**
```
audioStreamManagerCB.off('audioRendererChange');
console.info('[RENDERER-CHANGE-ON-001] ######### RendererChange Off is called #########');
```
### on('audioCapturerChange')<sup>9+</sup>
on(type: "audioCapturerChange", callback: Callback&lt;AudioCapturerChangeInfoArray&gt;): void
监听音频捕获器更改事件。
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
**参数:**
| 名称 | 类型 | 必填 | 说明 |
| -------- | ------- | --------- | ------------------------------------------------------------------- ---- |
| type | string | 是 | 事件类型,支持的事件`'audioCapturerChange'`:当音频采集器发生更改时触发。 |
| callback | Callback<[AudioCapturerChangeInfoArray](#audiocapturerchangeinfoarry9)> | 是 | 回调函数。 |
**示例:**
```
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);
}
}
});
```
### off('audioCapturerChange')<sup>9+</sup>
off(type: "audioCapturerChange");
监听音频捕获器更改事件。
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
**参数:**
| 名称 | 类型 | 必填 | 说明 |
| -------- | -------- | --- | ------------------------------------------------------------- |
| type | string |是 | 事件类型,支持的事件`'audioCapturerChange'`:音频采集器更改事件。 |
**示例:**
```
audioStreamManager.off('audioCapturerChange');
console.info('[GET_CAPTURER_STATE_2_PROMISE] ######### CapturerChange Off is called #########');
```
### isAudioRendererLowLatencySupported<sup>9+</sup>
isAudioRendererLowLatencySupported(streaminfo: AudioStreamInfo, callback: Callback&lt;boolean&gt;): void;
检查系统是否支持音频渲染器中的低延迟配置。使用callback异步回调。
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
**参数:**
| 名称 | 类型 | 必填 | 说明 |
| ---------- | ----------------------- | -------- | --------------------------------------- |
| streaminfo | [AudioStreamInfo](#audiostreaminfo8) | 是 | 音频渲染器流信息。 |
| callback | Callback&lt;boolean&gt; | 是 | 返回系统是否支持音频渲染器中的低延迟配置。 |
**示例:**
```
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 streamManagerCB = audioManager.getStreamManager();
streamManagerCB.isAudioRendererLowLatencySupported(AudioStreamInfo, (result) => {
console.info('isAudioRendererLowLatencySupported success var = ' + result);
});
```
### isAudioRendererLowLatencySupported<sup>9+</sup>
isAudioRendererLowLatencySupported(streaminfo: AudioStreamInfo): Promise&lt;boolean&gt;
检查系统是否支持音频渲染器中的低延迟配置。
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
**参数:**
| 参数名 | 类型 | 必填 | 说明 |
| ---------- | ------------------------------------ | ---- | ------------|
| streaminfo | [AudioStreamInfo](#audiostreaminfo8) | 是 | 数据流信息 |
**返回值:**
| 类型 | 说明 |
| ------------------- | ---------------------------------------------------- |
| Promise&lt;void&gt; | Promise方式异步返回系统是否支持音频渲染器中的低延迟配置。 |
**示例:**
```
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 streamManager = await audioManager.getStreamManager();
var result = streamManager.isAudioRendererLowLatencySupported(AudioStreamInfo);
console.info('isAudioRendererLowLatencySupported success var =' + result);
```
## AudioRendererChangeInfo<sup>9+</sup>
描述音频渲染器更改信息。
**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Renderer
| 名称 | 类型 | 可读 | 可写 | 说明 |
| -------------------| ----------------------------------------- | ---- | ---- | ---------------------------- |
| streamId | number | 是 | 否 | 音频流唯一id。 |
| clientUid | number | 是 | 否 | 音频渲染器客户端应用程序的Uid。<br/>此接口为系统接口,三方应用不支持调用。 |
| rendererInfo | [AudioRendererInfo](#audiorendererinfo8) | 是 | 否 | 音频渲染器信息。 |
| rendererState | [AudioState](#audiostate) | 是 | 否 | 音频状态。<br/>此接口为系统接口,三方应用不支持调用。|
## AudioRendererChangeInfoArray<sup>9+</sup>
AudioRenderChangeInfo数组,只读。
**系统能力:**: SystemCapability.Multimedia.Audio.Renderer
**示例:**
```
import audio from '@ohos.multimedia.audio';
var audioStreamManager;
var audioStreamManagerCB;
await audioManager.getStreamManager().then(async function (data) {
audioStreamManager = data;
console.info(Tag+'Get AudioStream Manager : Success ');
}).catch((err) => {
console.info(Tag+'Get AudioStream Manager : ERROR : '+err.message);
});
audioManager.getStreamManager((err, data) => {
if (err) {
console.error(Tag+'Get AudioStream Manager : ERROR : '+err.message);
}
else {
audioStreamManagerCB = data;
console.info(Tag+'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);
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);
}
if (AudioRendererChangeInfoArray[i].rendererState == 1 && devDescriptor != null) {
resultFlag = true;
console.info(Tag+'[RENDERER-CHANGE-ON-001] ResultFlag for '+i+' is:'+resultFlag);
}
}
});
```
## AudioCapturerChangeInfo<sup>9+</sup>
描述音频捕获器更改信息。
**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Capturer
| 名称 | 类型 | 可读 | 可写 | 说明 |
| -------------------| ----------------------------------------- | ---- | ---- | ---------------------------- |
| streamId | number | 是 | 否 | 音频流唯一id。 |
| clientUid | number | 是 | 否 | 音频渲染器客户端应用程序的Uid。<br/>此接口为系统接口,三方应用不支持调用。 |
| capturerInfo | [AudioCapturerInfo](#audiocaptureinfo8) | 是 | 否 | 音频渲染器信息。 |
| capturerState | [AudioState](#audiostate) | 是 | 否 | 音频状态。<br/>此接口为系统接口,三方应用不支持调用。|
## AudioCapturerChangeInfoArray<sup>9+</sup>
AudioCapturerChangeInfo数组,只读。
**系统能力:** SystemCapability.Multimedia.Audio.Capturer
**示例:**
```
import audio from '@ohos.multimedia.audio';
const audioManager = audio.getAudioManager();
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);
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);
}
if (AudioCapturerChangeInfoArray[i].capturerState == 1 && devDescriptor != null) {
resultFlag = true;
console.info(Tag+'[CAPTURER-CHANGE-ON-001] ResultFlag for element '+i +' is: '+ resultFlag);
}
}
});
```
## AudioDeviceDescriptor ## AudioDeviceDescriptor
描述音频设备。 描述音频设备。
**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Device **系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Device
| 名称 | 类型 | 可读 | 可写 | 说明 | | 名称 | 类型 | 可读 | 可写 | 说明 |
| ---------- | ------------------------- | ---- | ---- | ---------- | | -------------------------- | -------------------------- | ---- | ---- | ---------- |
| deviceRole | [DeviceRole](#devicerole) | 是 | 否 | 设备角色。 | | deviceRole | [DeviceRole](#devicerole) | 是 | 否 | 设备角色。 |
| deviceType | [DeviceType](#devicetype) | 是 | 否 | 设备类型。 | | deviceType | [DeviceType](#devicetype) | 是 | 否 | 设备类型。 |
| id<sup>9+</sup> | number | 是 | 否 | 设备id。 |
| name<sup>9+</sup> | string | 是 | 否 | 设备名称。 |
| address<sup>9+</sup> | string | 是 | 否 | 设备地址。 |
| sampleRates<sup>9+</sup> | Array&lt;number&gt; | 是 | 否 | 支持的采样率。 |
| channelCounts<sup>9+</sup> | Array&lt;number&gt; | 是 | 否 | 支持的通道数。 |
| channelMasks<sup>9+</sup> | Array&lt;number&gt; | 是 | 否 | 支持的通道掩码。 |
## AudioDeviceDescriptors ## AudioDeviceDescriptors
...@@ -1904,7 +2476,7 @@ getRendererInfo(callback: AsyncCallback<AudioRendererInfo\>): void ...@@ -1904,7 +2476,7 @@ getRendererInfo(callback: AsyncCallback<AudioRendererInfo\>): void
获取当前被创建的音频渲染器的信息,使用callback方式异步返回结果。 获取当前被创建的音频渲染器的信息,使用callback方式异步返回结果。
**系统能力**: SystemCapability.Multimedia.Audio.Renderer **系统能力:** SystemCapability.Multimedia.Audio.Renderer
**参数:** **参数:**
...@@ -1929,7 +2501,7 @@ getRendererInfo(): Promise<AudioRendererInfo\> ...@@ -1929,7 +2501,7 @@ getRendererInfo(): Promise<AudioRendererInfo\>
获取当前被创建的音频渲染器的信息,使用Promise方式异步返回结果。 获取当前被创建的音频渲染器的信息,使用Promise方式异步返回结果。
**系统能力**: SystemCapability.Multimedia.Audio.Renderer **系统能力:** SystemCapability.Multimedia.Audio.Renderer
**返回值:** **返回值:**
...@@ -1958,7 +2530,7 @@ getStreamInfo(callback: AsyncCallback<AudioStreamInfo\>): void ...@@ -1958,7 +2530,7 @@ getStreamInfo(callback: AsyncCallback<AudioStreamInfo\>): void
获取音频流信息,使用callback方式异步返回结果。 获取音频流信息,使用callback方式异步返回结果。
**系统能力**: SystemCapability.Multimedia.Audio.Renderer **系统能力:** SystemCapability.Multimedia.Audio.Renderer
**参数:** **参数:**
...@@ -1984,7 +2556,7 @@ getStreamInfo(): Promise<AudioStreamInfo\> ...@@ -1984,7 +2556,7 @@ getStreamInfo(): Promise<AudioStreamInfo\>
获取音频流信息,使用Promise方式异步返回结果。 获取音频流信息,使用Promise方式异步返回结果。
**系统能力**: SystemCapability.Multimedia.Audio.Renderer **系统能力:** SystemCapability.Multimedia.Audio.Renderer
**返回值:** **返回值:**
...@@ -2012,7 +2584,7 @@ start(callback: AsyncCallback<void\>): void ...@@ -2012,7 +2584,7 @@ start(callback: AsyncCallback<void\>): void
启动音频渲染器。使用callback方式异步返回结果。 启动音频渲染器。使用callback方式异步返回结果。
**系统能力**: SystemCapability.Multimedia.Audio.Renderer **系统能力:** SystemCapability.Multimedia.Audio.Renderer
**参数:** **参数:**
...@@ -2038,7 +2610,7 @@ start(): Promise<void\> ...@@ -2038,7 +2610,7 @@ start(): Promise<void\>
启动音频渲染器。使用Promise方式异步返回结果。 启动音频渲染器。使用Promise方式异步返回结果。
**系统能力**: SystemCapability.Multimedia.Audio.Renderer **系统能力:** SystemCapability.Multimedia.Audio.Renderer
**返回值:** **返回值:**
...@@ -2062,7 +2634,7 @@ pause(callback: AsyncCallback\<void>): void ...@@ -2062,7 +2634,7 @@ pause(callback: AsyncCallback\<void>): void
暂停渲染。使用callback方式异步返回结果。 暂停渲染。使用callback方式异步返回结果。
**系统能力**: SystemCapability.Multimedia.Audio.Renderer **系统能力:** SystemCapability.Multimedia.Audio.Renderer
**参数:** **参数:**
...@@ -2088,7 +2660,7 @@ pause(): Promise\<void> ...@@ -2088,7 +2660,7 @@ pause(): Promise\<void>
暂停渲染。使用Promise方式异步返回结果。 暂停渲染。使用Promise方式异步返回结果。
**系统能力**: SystemCapability.Multimedia.Audio.Renderer **系统能力:** SystemCapability.Multimedia.Audio.Renderer
**返回值:** **返回值:**
...@@ -2112,7 +2684,7 @@ drain(callback: AsyncCallback\<void>): void ...@@ -2112,7 +2684,7 @@ drain(callback: AsyncCallback\<void>): void
检查缓冲区是否已被耗尽。使用callback方式异步返回结果。 检查缓冲区是否已被耗尽。使用callback方式异步返回结果。
**系统能力**: SystemCapability.Multimedia.Audio.Renderer **系统能力:** SystemCapability.Multimedia.Audio.Renderer
**参数:** **参数:**
...@@ -2138,7 +2710,7 @@ drain(): Promise\<void> ...@@ -2138,7 +2710,7 @@ drain(): Promise\<void>
检查缓冲区是否已被耗尽。使用Promise方式异步返回结果。 检查缓冲区是否已被耗尽。使用Promise方式异步返回结果。
**系统能力**: SystemCapability.Multimedia.Audio.Renderer **系统能力:** SystemCapability.Multimedia.Audio.Renderer
**返回值:** **返回值:**
...@@ -2162,7 +2734,7 @@ stop(callback: AsyncCallback\<void>): void ...@@ -2162,7 +2734,7 @@ stop(callback: AsyncCallback\<void>): void
停止渲染。使用callback方式异步返回结果。 停止渲染。使用callback方式异步返回结果。
**系统能力**: SystemCapability.Multimedia.Audio.Renderer **系统能力:** SystemCapability.Multimedia.Audio.Renderer
**参数:** **参数:**
...@@ -2188,7 +2760,7 @@ stop(): Promise\<void> ...@@ -2188,7 +2760,7 @@ stop(): Promise\<void>
停止渲染。使用Promise方式异步返回结果。 停止渲染。使用Promise方式异步返回结果。
**系统能力**: SystemCapability.Multimedia.Audio.Renderer **系统能力:** SystemCapability.Multimedia.Audio.Renderer
**返回值:** **返回值:**
...@@ -2212,7 +2784,7 @@ release(callback: AsyncCallback\<void>): void ...@@ -2212,7 +2784,7 @@ release(callback: AsyncCallback\<void>): void
释放音频渲染器。使用callback方式异步返回结果。 释放音频渲染器。使用callback方式异步返回结果。
**系统能力**: SystemCapability.Multimedia.Audio.Renderer **系统能力:** SystemCapability.Multimedia.Audio.Renderer
**参数:** **参数:**
...@@ -2238,7 +2810,7 @@ release(): Promise\<void> ...@@ -2238,7 +2810,7 @@ release(): Promise\<void>
释放渲染器。使用Promise方式异步返回结果。 释放渲染器。使用Promise方式异步返回结果。
**系统能力**: SystemCapability.Multimedia.Audio.Renderer **系统能力:** SystemCapability.Multimedia.Audio.Renderer
**返回值:** **返回值:**
...@@ -2262,7 +2834,7 @@ write(buffer: ArrayBuffer, callback: AsyncCallback\<number>): void ...@@ -2262,7 +2834,7 @@ write(buffer: ArrayBuffer, callback: AsyncCallback\<number>): void
写入缓冲区。使用callback方式异步返回结果。 写入缓冲区。使用callback方式异步返回结果。
**系统能力**: SystemCapability.Multimedia.Audio.Renderer **系统能力:** SystemCapability.Multimedia.Audio.Renderer
**参数:** **参数:**
...@@ -2287,7 +2859,7 @@ var audioStreamInfo = { ...@@ -2287,7 +2859,7 @@ var audioStreamInfo = {
var audioRendererInfo = { var audioRendererInfo = {
content: audio.ContentType.CONTENT_TYPE_SPEECH, content: audio.ContentType.CONTENT_TYPE_SPEECH,
usage: audio.streamUsage.STREAM_USAGE_VOICE_COMMUNICATION usage: audio.StreamUsage.STREAM_USAGE_VOICE_COMMUNICATION
rendererFlags: 1 rendererFlags: 1
} }
...@@ -2331,7 +2903,7 @@ write(buffer: ArrayBuffer): Promise\<number> ...@@ -2331,7 +2903,7 @@ write(buffer: ArrayBuffer): Promise\<number>
写入缓冲区。使用Promise方式异步返回结果。 写入缓冲区。使用Promise方式异步返回结果。
**系统能力**: SystemCapability.Multimedia.Audio.Renderer **系统能力:** SystemCapability.Multimedia.Audio.Renderer
**返回值:** **返回值:**
...@@ -2349,13 +2921,13 @@ import featureAbility from '@ohos.ability.featureAbility' ...@@ -2349,13 +2921,13 @@ import featureAbility from '@ohos.ability.featureAbility'
var audioStreamInfo = { var audioStreamInfo = {
samplingRate:audio.AudioSamplingRate.SAMPLE_RATE_48000, samplingRate:audio.AudioSamplingRate.SAMPLE_RATE_48000,
channels:audio.AudioChannel.CHANNEL_2, channels:audio.AudioChannel.CHANNEL_2,
sampleFormat.audio.AudioSampleFormat.SAMPLE_FORMAT_S32LE, sampleFormat:audio.AudioSampleFormat.SAMPLE_FORMAT_S32LE,
encodingType.audio.AudioEncodingType.ENCODING_TYPE_RAW encodingType:audio.AudioEncodingType.ENCODING_TYPE_RAW
} }
var audioRendererInfo = { var audioRendererInfo = {
content: audio.ContentType.CONTENT_TYPE_SPEECH, content: audio.ContentType.CONTENT_TYPE_SPEECH,
usage: audio.streamUsage.STREAM_USAGE_VOICE_COMMUNICATION, usage: audio.StreamUsage.STREAM_USAGE_VOICE_COMMUNICATION,
rendererFlags: 1 rendererFlags: 1
} }
...@@ -2401,7 +2973,7 @@ getAudioTime(callback: AsyncCallback\<number>): void ...@@ -2401,7 +2973,7 @@ getAudioTime(callback: AsyncCallback\<number>): void
获取时间戳(从 1970 年 1 月 1 日开始)。使用callback方式异步返回结果。 获取时间戳(从 1970 年 1 月 1 日开始)。使用callback方式异步返回结果。
**系统能力**: SystemCapability.Multimedia.Audio.Renderer **系统能力:** SystemCapability.Multimedia.Audio.Renderer
**参数:** **参数:**
...@@ -2423,7 +2995,7 @@ getAudioTime(): Promise\<number> ...@@ -2423,7 +2995,7 @@ getAudioTime(): Promise\<number>
获取时间戳(从 1970 年 1 月 1 日开始)。使用Promise方式异步返回结果。 获取时间戳(从 1970 年 1 月 1 日开始)。使用Promise方式异步返回结果。
**系统能力**: SystemCapability.Multimedia.Audio.Renderer **系统能力:** SystemCapability.Multimedia.Audio.Renderer
**返回值:** **返回值:**
...@@ -2447,7 +3019,7 @@ getBufferSize(callback: AsyncCallback\<number>): void ...@@ -2447,7 +3019,7 @@ getBufferSize(callback: AsyncCallback\<number>): void
获取音频渲染器的最小缓冲区大小。使用callback方式异步返回结果。 获取音频渲染器的最小缓冲区大小。使用callback方式异步返回结果。
**系统能力**: SystemCapability.Multimedia.Audio.Renderer **系统能力:** SystemCapability.Multimedia.Audio.Renderer
**参数:** **参数:**
...@@ -2471,7 +3043,7 @@ getBufferSize(): Promise\<number> ...@@ -2471,7 +3043,7 @@ getBufferSize(): Promise\<number>
获取音频渲染器的最小缓冲区大小。使用Promise方式异步返回结果。 获取音频渲染器的最小缓冲区大小。使用Promise方式异步返回结果。
**系统能力**: SystemCapability.Multimedia.Audio.Renderer **系统能力:** SystemCapability.Multimedia.Audio.Renderer
**返回值:** **返回值:**
...@@ -2488,13 +3060,13 @@ import fileio from '@ohos.fileio'; ...@@ -2488,13 +3060,13 @@ import fileio from '@ohos.fileio';
var audioStreamInfo = { var audioStreamInfo = {
samplingRate:audio.AudioSamplingRate.SAMPLE_RATE_48000, samplingRate:audio.AudioSamplingRate.SAMPLE_RATE_48000,
channels:audio.AudioChannel.CHANNEL_2, channels:audio.AudioChannel.CHANNEL_2,
sampleFormat.audio.AudioSampleFormat.SAMPLE_FORMAT_S32LE, sampleFormat:audio.AudioSampleFormat.SAMPLE_FORMAT_S32LE,
encodingType.audio.AudioEncodingType.ENCODING_TYPE_RAW encodingType:audio.AudioEncodingType.ENCODING_TYPE_RAW
} }
var audioRendererInfo = { var audioRendererInfo = {
content: audio.ContentType.CONTENT_TYPE_SPEECH, content: audio.ContentType.CONTENT_TYPE_SPEECH,
usage: audio.streamUsage.STREAM_USAGE_VOICE_COMMUNICATION, usage: audio.StreamUsage.STREAM_USAGE_VOICE_COMMUNICATION,
rendererFlags: 1 rendererFlags: 1
} }
...@@ -2524,7 +3096,7 @@ setRenderRate(rate: AudioRendererRate, callback: AsyncCallback\<void>): void ...@@ -2524,7 +3096,7 @@ setRenderRate(rate: AudioRendererRate, callback: AsyncCallback\<void>): void
设置音频渲染速率。使用callback方式异步返回结果。 设置音频渲染速率。使用callback方式异步返回结果。
**系统能力**: SystemCapability.Multimedia.Audio.Renderer **系统能力:** SystemCapability.Multimedia.Audio.Renderer
**参数:** **参数:**
...@@ -2551,7 +3123,7 @@ setRenderRate(rate: AudioRendererRate): Promise\<void> ...@@ -2551,7 +3123,7 @@ setRenderRate(rate: AudioRendererRate): Promise\<void>
设置音频渲染速率。使用Promise方式异步返回结果。 设置音频渲染速率。使用Promise方式异步返回结果。
**系统能力**: SystemCapability.Multimedia.Audio.Renderer **系统能力:** SystemCapability.Multimedia.Audio.Renderer
**参数:** **参数:**
...@@ -2581,7 +3153,7 @@ getRenderRate(callback: AsyncCallback\<AudioRendererRate>): void ...@@ -2581,7 +3153,7 @@ getRenderRate(callback: AsyncCallback\<AudioRendererRate>): void
获取当前渲染速率。使用callback方式异步返回结果。 获取当前渲染速率。使用callback方式异步返回结果。
**系统能力**: SystemCapability.Multimedia.Audio.Renderer **系统能力:** SystemCapability.Multimedia.Audio.Renderer
**参数:** **参数:**
...@@ -2603,7 +3175,7 @@ getRenderRate(): Promise\<AudioRendererRate> ...@@ -2603,7 +3175,7 @@ getRenderRate(): Promise\<AudioRendererRate>
获取当前渲染速率。使用Promise方式异步返回结果。 获取当前渲染速率。使用Promise方式异步返回结果。
**系统能力**: SystemCapability.Multimedia.Audio.Renderer **系统能力:** SystemCapability.Multimedia.Audio.Renderer
**返回值:** **返回值:**
...@@ -2622,7 +3194,7 @@ audioRenderer.getRenderRate().then((renderRate) => { ...@@ -2622,7 +3194,7 @@ audioRenderer.getRenderRate().then((renderRate) => {
``` ```
### setInterruptMode<sup>9+</sup> ### setInterruptMode<sup>9+</sup>
setInterruptMode(interruptMode: InterruptMode): Promise&lt;void&gt; setInterruptMode(mode: InterruptMode): Promise&lt;void&gt;
设置应用的焦点模型。使用Promise异步回调。 设置应用的焦点模型。使用Promise异步回调。
...@@ -2630,9 +3202,9 @@ setInterruptMode(interruptMode: InterruptMode): Promise&lt;void&gt; ...@@ -2630,9 +3202,9 @@ setInterruptMode(interruptMode: InterruptMode): Promise&lt;void&gt;
**参数:** **参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| ---------- | ----------------------------------- | ---- | -------------------------------------------------------- | | ---------- | ---------------------------------- | ------ | ---------- |
| interruptMode | [InterruptMode](#InterruptMode) | 是 | 焦点模型。 | | mode | [InterruptMode](#InterruptMode) | 是 | 焦点模型。 |
**返回值:** **返回值:**
...@@ -2643,14 +3215,32 @@ setInterruptMode(interruptMode: InterruptMode): Promise&lt;void&gt; ...@@ -2643,14 +3215,32 @@ setInterruptMode(interruptMode: InterruptMode): Promise&lt;void&gt;
**示例:** **示例:**
``` ```
const audioManager = audio.getAudioManager(); var audioStreamInfo = {
audioManager.setInterruptMode(audio.InterruptMode.SHARE_MODE).then(() => { samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_48000,
console.log('Promise returned to indicate a successful volume setting.'); channels: audio.AudioChannel.CHANNEL_1,
sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE,
encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW
}
var audioRendererInfo = {
content: audio.ContentType.CONTENT_TYPE_MUSIC,
usage: audio.StreamUsage.STREAM_USAGE_MEDIA,
rendererFlags: 0
}
var audioRendererOptions = {
streamInfo: audioStreamInfo,
rendererInfo: audioRendererInfo
}
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);
}); });
``` ```
### setInterruptMode<sup>9+</sup> ### setInterruptMode<sup>9+</sup>
setInterruptMode(interruptMode: InterruptMode, callback: Callback\<void>): void setInterruptMode(mode: InterruptMode, callback: Callback\<void>): void
设置应用的焦点模型。使用Callback回调返回执行结果。 设置应用的焦点模型。使用Callback回调返回执行结果。
...@@ -2658,17 +3248,36 @@ setInterruptMode(interruptMode: InterruptMode, callback: Callback\<void>): void ...@@ -2658,17 +3248,36 @@ setInterruptMode(interruptMode: InterruptMode, callback: Callback\<void>): void
**参数:** **参数:**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| ---------- | ----------------------------------- | ---- | -------------------------------------------------------- | | ------- | ----------------------------------- | ------ | -------------- |
|interruptMode | [InterruptMode](#InterruptMode) | 是 | 焦点模型。| |mode | [InterruptMode](#InterruptMode) | 是 | 焦点模型。|
|callback | Callback\<void> | 是 |回调返回执行结果。| |callback | Callback\<void> | 是 |回调返回执行结果。|
**示例:** **示例:**
``` ```
const audioManager = audio.getAudioManager(); var audioStreamInfo = {
audioManager.setInterruptMode(audio.InterruptMode.SHARE_MODE,()=>{ samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_48000,
console.log('Callback returned to indicate a successful volume setting.'); channels: audio.AudioChannel.CHANNEL_1,
sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE,
encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW
}
var audioRendererInfo = {
content: audio.ContentType.CONTENT_TYPE_MUSIC,
usage: audio.StreamUsage.STREAM_USAGE_MEDIA,
rendererFlags: 0
}
var audioRendererOptions = {
streamInfo: audioStreamInfo,
rendererInfo: audioRendererInfo
}
let audioRenderer = await audio.createAudioRenderer(audioRendererOptions);
let mode = 1;
audioRenderer.setInterruptMode(mode,(err,data)=>{
if(err){
console.log("setInterruptMode Fail:" + err.message);
}
console.log("setInterruptMode Success!");
}); });
``` ```
### on('interrupt')<sup>9+</sup> ### on('interrupt')<sup>9+</sup>
...@@ -2677,7 +3286,7 @@ on(type: 'interrupt', callback: Callback\<InterruptEvent>): void ...@@ -2677,7 +3286,7 @@ on(type: 'interrupt', callback: Callback\<InterruptEvent>): void
监听音频中断事件。使用callback获取中断事件。 监听音频中断事件。使用callback获取中断事件。
**系统能力**: SystemCapability.Multimedia.Audio.Renderer **系统能力:** SystemCapability.Multimedia.Audio.Renderer
**参数:** **参数:**
...@@ -2858,6 +3467,35 @@ audioRenderer.on('stateChange', (state) => { ...@@ -2858,6 +3467,35 @@ audioRenderer.on('stateChange', (state) => {
}); });
``` ```
### on('dataRequest') <sup>9+</sup>
on(type: "dataRequest", callback: Callback<AudioRendererDataInfo>): void;
订阅音频数据requeset事件回调。
**系统能力:** SystemCapability.Multimedia.Audio.Renderer
**参数:**
| 名称 | 类型 | 必填 | 说明 |
| -------- | ------- | --------- | ------------------------------------------------------------------- |
| type | string | 是 | 事件类型。值**dataRequest**表示数据请求事件。 |
| callback | [AudioRendererDataInfo](#audiorendererdatainfo9) | 是 | 需要音频数据时调用回调。|
**示例:**
```
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);
})
```
## AudioCapturer<sup>8+</sup> ## AudioCapturer<sup>8+</sup>
提供音频采集的相关接口。在调用AudioCapturer的接口前,需要先通过[createAudioCapturer](#audiocreateaudiocapturer8)创建实例。 提供音频采集的相关接口。在调用AudioCapturer的接口前,需要先通过[createAudioCapturer](#audiocreateaudiocapturer8)创建实例。
...@@ -3002,7 +3640,7 @@ start(callback: AsyncCallback<void\>): void ...@@ -3002,7 +3640,7 @@ start(callback: AsyncCallback<void\>): void
**系统能力:** SystemCapability.Multimedia.Audio.Capturer **系统能力:** SystemCapability.Multimedia.Audio.Capturer
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| :------- | :------------------- | :--- | :----------------------------- | | :------- | :------------------- | :--- | :----------------------------- |
...@@ -3050,10 +3688,11 @@ var audioStreamInfo = { ...@@ -3050,10 +3688,11 @@ var audioStreamInfo = {
var audioCapturerInfo = { var audioCapturerInfo = {
source: audio.SourceType.SOURCE_TYPE_MIC, source: audio.SourceType.SOURCE_TYPE_MIC,
capturerFlags = 1 capturerFlags: 1
} }
var audioCapturer; var audioCapturer;
var stateFlag;
audio.createAudioCapturer(audioCapturerOptions).then((data) => { audio.createAudioCapturer(audioCapturerOptions).then((data) => {
audioCapturer = data; audioCapturer = data;
console.info('AudioFrameworkRecLog: AudioCapturer Created: SUCCESS'); console.info('AudioFrameworkRecLog: AudioCapturer Created: SUCCESS');
...@@ -3173,6 +3812,7 @@ release(): Promise<void\> ...@@ -3173,6 +3812,7 @@ release(): Promise<void\>
**示例:** **示例:**
``` ```
var stateFlag;
audioCapturer.release().then(() => { audioCapturer.release().then(() => {
console.info('AudioFrameworkRecLog: ---------RELEASE RECORD---------'); console.info('AudioFrameworkRecLog: ---------RELEASE RECORD---------');
console.info('AudioFrameworkRecLog: Capturer release : SUCCESS'); console.info('AudioFrameworkRecLog: Capturer release : SUCCESS');
...@@ -3192,7 +3832,7 @@ read(size: number, isBlockingRead: boolean, callback: AsyncCallback<ArrayBuffer\ ...@@ -3192,7 +3832,7 @@ read(size: number, isBlockingRead: boolean, callback: AsyncCallback<ArrayBuffer\
**系统能力:** SystemCapability.Multimedia.Audio.Capturer **系统能力:** SystemCapability.Multimedia.Audio.Capturer
**参数** **参数**
| 参数名 | 类型 | 必填 | 说明 | | 参数名 | 类型 | 必填 | 说明 |
| :------------- | :-------------------------- | :--- | :------------------------------- | | :------------- | :-------------------------- | :--- | :------------------------------- |
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册