harmony 鸿蒙Interface (AudioStreamManager)
Interface (AudioStreamManager)
说明: 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。
管理音频流。
在使用AudioStreamManager的接口之前,需先通过getStreamManager获取AudioStreamManager实例。
getCurrentAudioRendererInfoArray9+
getCurrentAudioRendererInfoArray(callback: AsyncCallback<AudioRendererChangeInfoArray>): void
获取当前音频渲染器的信息。使用callback异步回调。
系统能力: SystemCapability.Multimedia.Audio.Renderer
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
callback | AsyncCallback<AudioRendererChangeInfoArray> | 是 | 回调函数。当获取当前音频渲染器的信息成功,err为undefined,data为获取到的当前音频渲染器的信息;否则为错误对象。 |
示例:
import { BusinessError } from '@kit.BasicServicesKit';
audioStreamManager.getCurrentAudioRendererInfoArray(async (err: BusinessError, AudioRendererChangeInfoArray: audio.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: audio.AudioRendererChangeInfo = AudioRendererChangeInfoArray[i];
console.info(`StreamId for ${i} is: ${AudioRendererChangeInfo.streamId}`);
console.info(`Content ${i} is: ${AudioRendererChangeInfo.rendererInfo.content}`);
console.info(`Stream ${i} is: ${AudioRendererChangeInfo.rendererInfo.usage}`);
console.info(`Flag ${i} is: ${AudioRendererChangeInfo.rendererInfo.rendererFlags}`);
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(`SampleRate: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].sampleRates[0]}`);
console.info(`ChannelCount: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].channelCounts[0]}`);
console.info(`ChannelMask: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].channelMasks[0]}`);
}
}
}
}
});
getCurrentAudioRendererInfoArray9+
getCurrentAudioRendererInfoArray(): Promise<AudioRendererChangeInfoArray>
获取当前音频渲染器的信息。使用Promise异步回调。
系统能力: SystemCapability.Multimedia.Audio.Renderer
返回值:
类型 | 说明 |
---|---|
Promise<AudioRendererChangeInfoArray> | Promise对象,返回当前音频渲染器信息。 |
示例:
import { BusinessError } from '@kit.BasicServicesKit';
async function getCurrentAudioRendererInfoArray(){
await audioStreamManager.getCurrentAudioRendererInfoArray().then((AudioRendererChangeInfoArray: audio.AudioRendererChangeInfoArray) => {
console.info(`getCurrentAudioRendererInfoArray ######### Get Promise is called ##########`);
if (AudioRendererChangeInfoArray != null) {
for (let i = 0; i < AudioRendererChangeInfoArray.length; i++) {
let AudioRendererChangeInfo: audio.AudioRendererChangeInfo = AudioRendererChangeInfoArray[i];
console.info(`StreamId for ${i} is: ${AudioRendererChangeInfo.streamId}`);
console.info(`Content ${i} is: ${AudioRendererChangeInfo.rendererInfo.content}`);
console.info(`Stream ${i} is: ${AudioRendererChangeInfo.rendererInfo.usage}`);
console.info(`Flag ${i} is: ${AudioRendererChangeInfo.rendererInfo.rendererFlags}`);
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(`SampleRate: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].sampleRates[0]}`);
console.info(`ChannelCount: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].channelCounts[0]}`);
console.info(`ChannelMask: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].channelMasks[0]}`);
}
}
}
}).catch((err: BusinessError) => {
console.error(`getCurrentAudioRendererInfoArray :ERROR: ${err}`);
});
}
getCurrentAudioRendererInfoArraySync10+
getCurrentAudioRendererInfoArraySync(): AudioRendererChangeInfoArray
获取当前音频渲染器的信息。同步返回结果。
系统能力: SystemCapability.Multimedia.Audio.Renderer
返回值:
类型 | 说明 |
---|---|
AudioRendererChangeInfoArray | 返回当前音频渲染器信息。 |
示例:
import { BusinessError } from '@kit.BasicServicesKit';
try {
let audioRendererChangeInfoArray: audio.AudioRendererChangeInfoArray = audioStreamManager.getCurrentAudioRendererInfoArraySync();
console.info(`getCurrentAudioRendererInfoArraySync success.`);
if (audioRendererChangeInfoArray != null) {
for (let i = 0; i < audioRendererChangeInfoArray.length; i++) {
let AudioRendererChangeInfo: audio.AudioRendererChangeInfo = audioRendererChangeInfoArray[i];
console.info(`StreamId for ${i} is: ${AudioRendererChangeInfo.streamId}`);
console.info(`Content ${i} is: ${AudioRendererChangeInfo.rendererInfo.content}`);
console.info(`Stream ${i} is: ${AudioRendererChangeInfo.rendererInfo.usage}`);
console.info(`Flag ${i} is: ${AudioRendererChangeInfo.rendererInfo.rendererFlags}`);
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(`SampleRate: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].sampleRates[0]}`);
console.info(`ChannelCount: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].channelCounts[0]}`);
console.info(`ChannelMask: ${i} : ${AudioRendererChangeInfo.deviceDescriptors[j].channelMasks[0]}`);
}
}
}
} catch (err) {
let error = err as BusinessError;
console.error(`getCurrentAudioRendererInfoArraySync :ERROR: ${error}`);
}
getCurrentAudioCapturerInfoArray9+
getCurrentAudioCapturerInfoArray(callback: AsyncCallback<AudioCapturerChangeInfoArray>): void
获取当前音频采集器的信息。使用callback异步回调。
系统能力: SystemCapability.Multimedia.Audio.Renderer
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
callback | AsyncCallback<AudioCapturerChangeInfoArray> | 是 | 回调函数。当获取当前音频采集器的信息成功,err为undefined,data为获取到的当前音频采集器的信息;否则为错误对象。 |
示例:
import { BusinessError } from '@kit.BasicServicesKit';
audioStreamManager.getCurrentAudioCapturerInfoArray(async (err: BusinessError, AudioCapturerChangeInfoArray: audio.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(`Source for ${i} is: ${AudioCapturerChangeInfoArray[i].capturerInfo.source}`);
console.info(`Flag ${i} is: ${AudioCapturerChangeInfoArray[i].capturerInfo.capturerFlags}`);
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(`SampleRate: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].sampleRates[0]}`);
console.info(`ChannelCount: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].channelCounts[0]}`);
console.info(`ChannelMask: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].channelMasks[0]}`);
}
}
}
}
});
getCurrentAudioCapturerInfoArray9+
getCurrentAudioCapturerInfoArray(): Promise<AudioCapturerChangeInfoArray>
获取当前音频采集器的信息。使用Promise异步回调。
系统能力: SystemCapability.Multimedia.Audio.Renderer
返回值:
类型 | 说明 |
---|---|
Promise<AudioCapturerChangeInfoArray> | Promise对象,返回当前音频采集器信息。 |
示例:
import { BusinessError } from '@kit.BasicServicesKit';
async function getCurrentAudioCapturerInfoArray(){
await audioStreamManager.getCurrentAudioCapturerInfoArray().then((AudioCapturerChangeInfoArray: audio.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(`Source for ${i} is: ${AudioCapturerChangeInfoArray[i].capturerInfo.source}`);
console.info(`Flag ${i} is: ${AudioCapturerChangeInfoArray[i].capturerInfo.capturerFlags}`);
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(`SampleRate: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].sampleRates[0]}`);
console.info(`ChannelCount: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].channelCounts[0]}`);
console.info(`ChannelMask: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].channelMasks[0]}`);
}
}
}
}).catch((err: BusinessError) => {
console.error(`getCurrentAudioCapturerInfoArray :ERROR: ${err}`);
});
}
getCurrentAudioCapturerInfoArraySync10+
getCurrentAudioCapturerInfoArraySync(): AudioCapturerChangeInfoArray
获取当前音频采集器的信息。同步返回结果。
系统能力: SystemCapability.Multimedia.Audio.Capturer
返回值:
类型 | 说明 |
---|---|
AudioCapturerChangeInfoArray | 返回当前音频采集器信息。 |
示例:
import { BusinessError } from '@kit.BasicServicesKit';
try {
let audioCapturerChangeInfoArray: audio.AudioCapturerChangeInfoArray = audioStreamManager.getCurrentAudioCapturerInfoArraySync();
console.info('getCurrentAudioCapturerInfoArraySync success.');
if (audioCapturerChangeInfoArray != null) {
for (let i = 0; i < audioCapturerChangeInfoArray.length; i++) {
console.info(`StreamId for ${i} is: ${audioCapturerChangeInfoArray[i].streamId}`);
console.info(`Source for ${i} is: ${audioCapturerChangeInfoArray[i].capturerInfo.source}`);
console.info(`Flag ${i} is: ${audioCapturerChangeInfoArray[i].capturerInfo.capturerFlags}`);
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(`SampleRate: ${i} : ${audioCapturerChangeInfoArray[i].deviceDescriptors[j].sampleRates[0]}`);
console.info(`ChannelCount: ${i} : ${audioCapturerChangeInfoArray[i].deviceDescriptors[j].channelCounts[0]}`);
console.info(`ChannelMask: ${i} : ${audioCapturerChangeInfoArray[i].deviceDescriptors[j].channelMasks[0]}`);
}
}
}
} catch (err) {
let error = err as BusinessError;
console.error(`getCurrentAudioCapturerInfoArraySync ERROR: ${error}`);
}
on(‘audioRendererChange’)9+
on(type: ‘audioRendererChange’, callback: Callback<AudioRendererChangeInfoArray>): void
监听音频渲染器更改事件(当音频播放流状态变化或设备变化时触发)。使用callback异步回调。
系统能力: SystemCapability.Multimedia.Audio.Renderer
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
type | string | 是 | 事件回调类型,支持的事件为’audioRendererChange’,当音频播放流状态变化或设备变化时,触发该事件。 |
callback | Callback<AudioRendererChangeInfoArray> | 是 | 回调函数,返回当前音频渲染器信息。 |
错误码:
以下错误码的详细介绍请参见通用错误码说明文档和Audio错误码。
错误码ID | 错误信息 |
---|---|
401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. |
6800101 | Parameter verification failed. |
示例:
audioStreamManager.on('audioRendererChange', (audioRendererChangeInfoArray: audio.AudioRendererChangeInfoArray) => {
for (let i = 0; i < audioRendererChangeInfoArray.length; i++) {
let audioRendererChangeInfo: audio.AudioRendererChangeInfo = audioRendererChangeInfoArray[i];
console.info(`## RendererChange on is called for ${i} ##`);
console.info(`StreamId for ${i} is: ${audioRendererChangeInfo.streamId}`);
console.info(`Content ${i} is: ${audioRendererChangeInfo.rendererInfo.content}`);
console.info(`Stream ${i} is: ${audioRendererChangeInfo.rendererInfo.usage}`);
console.info(`Flag ${i} is: ${audioRendererChangeInfo.rendererInfo.rendererFlags}`);
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(`SampleRate: ${i} : ${audioRendererChangeInfo.deviceDescriptors[j].sampleRates[0]}`);
console.info(`ChannelCount: ${i} : ${audioRendererChangeInfo.deviceDescriptors[j].channelCounts[0]}`);
console.info(`ChannelMask: ${i} : ${audioRendererChangeInfo.deviceDescriptors[j].channelMasks[0]}`);
}
}
});
off(‘audioRendererChange’)9+
off(type: ‘audioRendererChange’, callback?: Callback<AudioRendererChangeInfoArray>): void
取消监听音频渲染器更改事件。使用callback异步回调。
系统能力: SystemCapability.Multimedia.Audio.Renderer
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
type | string | 是 | 事件回调类型,支持的事件为’audioRendererChange’,当取消监听音频渲染器更改事件时,触发该事件。 |
callback18+ | Callback<AudioRendererChangeInfoArray> | 否 | 回调函数,返回当前音频渲染器信息。 |
错误码:
以下错误码的详细介绍请参见Audio错误码。
错误码ID | 错误信息 |
---|---|
6800101 | Parameter verification failed. |
示例:
// 取消该事件的所有监听。
audioStreamManager.off('audioRendererChange');
// 同一监听事件中,on方法和off方法传入callback参数一致,off方法取消对应on方法订阅的监听。
let audioRendererChangeCallback = (audioRendererChangeInfoArray: audio.AudioRendererChangeInfoArray) => {
for (let i = 0; i < audioRendererChangeInfoArray.length; i++) {
let audioRendererChangeInfo: audio.AudioRendererChangeInfo = audioRendererChangeInfoArray[i];
console.info(`## RendererChange on is called for ${i} ##`);
console.info(`StreamId for ${i} is: ${audioRendererChangeInfo.streamId}`);
console.info(`Content ${i} is: ${audioRendererChangeInfo.rendererInfo.content}`);
console.info(`Stream ${i} is: ${audioRendererChangeInfo.rendererInfo.usage}`);
console.info(`Flag ${i} is: ${audioRendererChangeInfo.rendererInfo.rendererFlags}`);
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(`SampleRate: ${i} : ${audioRendererChangeInfo.deviceDescriptors[j].sampleRates[0]}`);
console.info(`ChannelCount: ${i} : ${audioRendererChangeInfo.deviceDescriptors[j].channelCounts[0]}`);
console.info(`ChannelMask: ${i} : ${audioRendererChangeInfo.deviceDescriptors[j].channelMasks[0]}`);
}
}
};
audioStreamManager.on('audioRendererChange', audioRendererChangeCallback);
audioStreamManager.off('audioRendererChange', audioRendererChangeCallback);
on(‘audioCapturerChange’)9+
on(type: ‘audioCapturerChange’, callback: Callback<AudioCapturerChangeInfoArray>): void
监听音频采集器更改事件(当音频录制流状态变化或设备变化时触发)。使用callback异步回调。
系统能力: SystemCapability.Multimedia.Audio.Capturer
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
type | string | 是 | 事件回调类型,支持的事件为’audioCapturerChange’,当音频录制流状态变化或设备变化时,触发该事件。 |
callback | Callback<AudioCapturerChangeInfoArray> | 是 | 回调函数,返回当前音频采集器信息。 |
错误码:
以下错误码的详细介绍请参见通用错误码说明文档和Audio错误码。
错误码ID | 错误信息 |
---|---|
401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. |
6800101 | Parameter verification failed. |
示例:
audioStreamManager.on('audioCapturerChange', (AudioCapturerChangeInfoArray: audio.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(`Source for ${i} is: ${AudioCapturerChangeInfoArray[i].capturerInfo.source}`);
console.info(`Flag ${i} is: ${AudioCapturerChangeInfoArray[i].capturerInfo.capturerFlags}`);
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(`SampleRate: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].sampleRates[0]}`);
console.info(`ChannelCount: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].channelCounts[0]}`);
console.info(`ChannelMask: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].channelMasks[0]}`);
}
}
});
off(‘audioCapturerChange’)9+
off(type: ‘audioCapturerChange’, callback?: Callback<AudioCapturerChangeInfoArray>): void
取消监听音频采集器更改事件。使用callback异步回调。
系统能力: SystemCapability.Multimedia.Audio.Capturer
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
type | string | 是 | 事件回调类型,支持的事件为’audioCapturerChange’,当取消监听音频采集器更改事件时,触发该事件。 |
callback18+ | Callback<AudioCapturerChangeInfoArray> | 否 | 回调函数,返回当前音频采集器信息。 |
错误码:
以下错误码的详细介绍请参见Audio错误码。
错误码ID | 错误信息 |
---|---|
6800101 | Parameter verification failed. |
示例:
audioStreamManager.off('audioCapturerChange');
// 取消该事件的所有监听。
audioStreamManager.off('audioCapturerChange');
// 同一监听事件中,on方法和off方法传入callback参数一致,off方法取消对应on方法订阅的监听。
let audioCapturerChangeCallback = (AudioCapturerChangeInfoArray: audio.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(`Source for ${i} is: ${AudioCapturerChangeInfoArray[i].capturerInfo.source}`);
console.info(`Flag ${i} is: ${AudioCapturerChangeInfoArray[i].capturerInfo.capturerFlags}`);
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(`SampleRate: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].sampleRates[0]}`);
console.info(`ChannelCount: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].channelCounts[0]}`);
console.info(`ChannelMask: ${i} : ${AudioCapturerChangeInfoArray[i].deviceDescriptors[j].channelMasks[0]}`);
}
}
};
audioStreamManager.on('audioCapturerChange', audioCapturerChangeCallback);
audioStreamManager.off('audioCapturerChange', audioCapturerChangeCallback);
isActive9+
isActive(volumeType: AudioVolumeType, callback: AsyncCallback<boolean>): void
获取指定音频流活跃状态。使用callback异步回调。
系统能力: SystemCapability.Multimedia.Audio.Renderer
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
volumeType | AudioVolumeType | 是 | 音频流类型。 |
callback | AsyncCallback<boolean> | 是 | 回调函数。当获取指定音频流活跃状态成功,err为undefined,data为true表示活跃,false表示不活跃;否则为错误对象。 |
示例:
import { BusinessError } from '@kit.BasicServicesKit';
audioStreamManager.isActive(audio.AudioVolumeType.MEDIA, (err: BusinessError, value: boolean) => {
if (err) {
console.error(`Failed to obtain the active status of the stream. ${err}`);
return;
}
console.info(`Callback invoked to indicate that the active status of the stream is obtained ${value}.`);
});
isActive9+
isActive(volumeType: AudioVolumeType): Promise<boolean>
获取指定音频流是否为活跃状态。使用Promise异步回调。
系统能力: SystemCapability.Multimedia.Audio.Renderer
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
volumeType | AudioVolumeType | 是 | 音频流类型。 |
返回值:
类型 | 说明 |
---|---|
Promise<boolean> | Promise对象。返回true表示流状态为活跃;返回false表示流状态不活跃。 |
示例:
audioStreamManager.isActive(audio.AudioVolumeType.MEDIA).then((value: boolean) => {
console.info(`Promise returned to indicate that the active status of the stream is obtained ${value}.`);
});
isActiveSync10+
isActiveSync(volumeType: AudioVolumeType): boolean
获取指定音频流是否为活跃状态。同步返回结果。
系统能力: SystemCapability.Multimedia.Audio.Renderer
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
volumeType | AudioVolumeType | 是 | 音频流类型。 |
返回值:
类型 | 说明 |
---|---|
boolean | 流的活跃状态。返回true表示活跃,返回false表示不活跃。 |
错误码:
以下错误码的详细介绍请参见通用错误码说明文档和Audio错误码。
错误码ID | 错误信息 |
---|---|
401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. |
6800101 | Parameter verification failed. |
示例:
import { BusinessError } from '@kit.BasicServicesKit';
try {
let value: boolean = audioStreamManager.isActiveSync(audio.AudioVolumeType.MEDIA);
console.info(`Indicate that the active status of the stream is obtained ${value}.`);
} catch (err) {
let error = err as BusinessError;
console.error(`Failed to obtain the active status of the stream ${error}.`);
}
getAudioEffectInfoArray10+
getAudioEffectInfoArray(usage: StreamUsage, callback: AsyncCallback<AudioEffectInfoArray>): void
获取当前音效模式的信息。使用callback异步回调。
系统能力: SystemCapability.Multimedia.Audio.Renderer
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
usage | StreamUsage | 是 | 音频流使用类型。 |
callback | AsyncCallback<AudioEffectInfoArray> | 是 | 回调函数。当获取当前音效模式的信息成功,err为undefined,data为获取到的当前音效模式的信息;否则为错误对象。 |
错误码:
以下错误码的详细介绍请参见通用错误码说明文档和Audio错误码。
错误码ID | 错误信息 |
---|---|
401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. |
6800101 | Parameter verification failed. Return by callback. |
示例:
import { BusinessError } from '@kit.BasicServicesKit';
audioStreamManager.getAudioEffectInfoArray(audio.StreamUsage.STREAM_USAGE_MUSIC, async (err: BusinessError, audioEffectInfoArray: audio.AudioEffectInfoArray) => {
console.info('getAudioEffectInfoArray **** Get Callback Called ****');
if (err) {
console.error(`getAudioEffectInfoArray :ERROR: ${err}`);
return;
} else {
console.info(`The effect modes are: ${audioEffectInfoArray}`);
}
});
getAudioEffectInfoArray10+
getAudioEffectInfoArray(usage: StreamUsage): Promise<AudioEffectInfoArray>
获取当前音效模式的信息。使用Promise异步回调。
系统能力: SystemCapability.Multimedia.Audio.Renderer
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
usage | StreamUsage | 是 | 音频流使用类型。 |
返回值:
类型 | 说明 |
---|---|
Promise<AudioEffectInfoArray> | Promise对象,返回当前音效模式的信息。 |
错误码:
以下错误码的详细介绍请参见通用错误码说明文档和Audio错误码。
错误码ID | 错误信息 |
---|---|
401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. |
6800101 | Parameter verification failed. Return by promise. |
示例:
import { BusinessError } from '@kit.BasicServicesKit';
audioStreamManager.getAudioEffectInfoArray(audio.StreamUsage.STREAM_USAGE_MUSIC).then((audioEffectInfoArray: audio.AudioEffectInfoArray) => {
console.info('getAudioEffectInfoArray ######### Get Promise is called ##########');
console.info(`The effect modes are: ${audioEffectInfoArray}`);
}).catch((err: BusinessError) => {
console.error(`getAudioEffectInfoArray :ERROR: ${err}`);
});
getAudioEffectInfoArraySync10+
getAudioEffectInfoArraySync(usage: StreamUsage): AudioEffectInfoArray
获取当前音效模式的信息。同步返回结果。
系统能力: SystemCapability.Multimedia.Audio.Renderer
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
usage | StreamUsage | 是 | 音频流使用类型。 |
返回值:
类型 | 说明 |
---|---|
AudioEffectInfoArray | 返回当前音效模式的信息。 |
错误码:
以下错误码的详细介绍请参见通用错误码说明文档和Audio错误码。
错误码ID | 错误信息 |
---|---|
401 | Parameter error. Possible causes: 1.Mandatory parameters are left unspecified; 2.Incorrect parameter types. |
6800101 | Parameter verification failed. |
示例:
import { BusinessError } from '@kit.BasicServicesKit';
try {
let audioEffectInfoArray: audio.AudioEffectInfoArray = audioStreamManager.getAudioEffectInfoArraySync(audio.StreamUsage.STREAM_USAGE_MUSIC);
console.info(`The effect modes are: ${audioEffectInfoArray}`);
} catch (err) {
let error = err as BusinessError;
console.error(`getAudioEffectInfoArraySync ERROR: ${error}`);
}
isAcousticEchoCancelerSupported20+
isAcousticEchoCancelerSupported(sourceType: SourceType): boolean
查询指定的source type是否支持回声消除。
系统能力: SystemCapability.Multimedia.Audio.Capturer
参数:
参数名 | 类型 | 必填 | 说明 |
---|---|---|---|
sourceType | SourceType | 是 | 音源类型。 |
返回值:
类型 | 说明 |
---|---|
boolean | 是否支持回声消除。true表示支持回声消除,false表示不支持回声消除。 |
错误码:
以下错误码的详细介绍请参见Audio错误码。
错误码ID | 错误信息 |
---|---|
6800101 | Parameter verification failed. |
示例:
import { BusinessError } from '@kit.BasicServicesKit';
try {
let isSupportAEC = audioStreamManager.isAcousticEchoCancelerSupported(audio.SourceType.SOURCE_TYPE_LIVE);
console.info(`[AEC Support] SourceType: ${audio.SourceType.SOURCE_TYPE_LIVE}, Status: ${isSupportAEC}`);
} catch (err) {
let error = err as BusinessError;
console.error(`isAcousticEchoCancelerSupported ERROR: ${error}`);
}
你可能感兴趣的鸿蒙文章
harmony 鸿蒙Interface (AudioCapturer)
harmony 鸿蒙Interface (AudioManager)
harmony 鸿蒙Interface (AudioRenderer)
harmony 鸿蒙Interface (AudioRoutingManager)
harmony 鸿蒙Interface (AudioSessionManager)
harmony 鸿蒙Interface (AudioSpatializationManager)
harmony 鸿蒙Interface (AudioVolumeGroupManager)
- 所属分类: 后端技术
- 本文标签:
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦