diff --git a/zh-cn/application-dev/reference/apis/js-apis-audio.md b/zh-cn/application-dev/reference/apis/js-apis-audio.md index 60c07497fce954d417b4100e0b00d71c0dcb6016..d21009a4fd40f5f598d864edb1bcc7e14182c876 100644 --- a/zh-cn/application-dev/reference/apis/js-apis-audio.md +++ b/zh-cn/application-dev/reference/apis/js-apis-audio.md @@ -6,7 +6,8 @@ 该模块提供以下音频相关的常用功能: - [AudioManager](#audiomanager):音频管理。 -- [AudioRenderer](#audiorenderer8):音频播放,用于播放PCM(Pulse Code Modulation)音频数据。 +- [AudioRenderer](#audiorenderer8):音频渲染,用于播放PCM(Pulse Code Modulation)音频数据。 +- [AudioCapturer](#audiocapturer8):音频采集,用于录制PCM(Pulse Code Modulation)音频数据。 ## 导入模块 @@ -37,21 +38,73 @@ var audioManager = audio.getAudioManager(); createAudioRenderer(options: AudioRendererOptions): AudioRenderer -获取音频播放器。 +获取音频渲染器。 **系统能力:** SystemCapability.Multimedia.Audio.Renderer **参数**: -| 参数名 | 类型 | 必填 | 说明 | -| ------- | ---------------------------------------------- | ---- | ----------- | -| options | [AudioRendererOptions](#audiorendereroptions8) | 是 | 配置播放器. | +| 参数名 | 类型 | 必填 | 说明 | +| ------- | ---------------------------------------------- | ---- | ------------ | +| options | [AudioRendererOptions](#audiorendereroptions8) | 是 | 配置渲染器。 | **返回值**: | 类型 | 说明 | | -------------------------------- | ---------------- | -| [AudioRenderer](#audiorenderer8) | 音频播放器对象。 | +| [AudioRenderer](#audiorenderer8) | 音频渲染器对象。 | + +**示例:** + +``` +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 audioRendererInfo = { + content: audio.ContentType.CONTENT_TYPE_SPEECH, + usage: audio.StreamUsage.STREAM_USAGE_VOICE_COMMUNICATION, + rendererFlags: 1 +} + +var audioRendererOptions = { + streamInfo: audioStreamInfo, + rendererInfo: audioRendererInfo +} + +audio.createAudioRenderer(audioRendererOptions,(err, data) => { + if (err) { + console.error(`AudioRender Created : Error: ${err.message}`); + } + else { + console.info('AudioRender Created : Success : SUCCESS'); + audioRenderer = data; + } +}); +``` + +## audio.createAudioRenderer8+ + +createAudioRenderer(options: AudioRendererOptions): Promise + +获取音频渲染器。使用Promise方式异步返回结果。 + +**系统能力:** SystemCapability.Multimedia.Audio.Renderer + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| :------ | :--------------------------------------------- | :--- | :----------- | +| options | [AudioRendererOptions](#audiorendereroptions8) | 是 | 配置渲染器。 | + +**返回值:** + +| 类型 | 说明 | +| ----------------------------------------- | ---------------- | +| Promise<[AudioRenderer](#audiorenderer8)> | 音频播放器对象。 | **示例:** @@ -77,6 +130,95 @@ var audioRendererOptions = { let audioRenderer = await audio.createAudioRenderer(audioRendererOptions); ``` +## audio.createAudioCapturer8+ + +createAudioCapturer(options: AudioCapturerOptions, callback: AsyncCallback): void + +获取音频采集器。使用callback方式异步返回结果。 + +**系统能力:** SystemCapability.Multimedia.Audio.Capturer + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| :------- | :--------------------------------------------- | :--- | :--------------- | +| options | [AudioCapturerOptions](#AudioCapturerOptions) | 是 | 配置音频采集器。 | +| callback | AsyncCallback<[AudioCapturer](#AudioCapturer)> | 是 | 音频采集器对象。 | + +**示例:** + +``` +var audioStreamInfo = { + samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_44100, + channels: audio.AudioChannel.CHANNEL_2, + sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE, + encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW +} + +var audioCapturerInfo = { + source: audio.SourceType.SOURCE_TYPE_MIC, + capturerFlags: 1 +} + +var audioCapturerOptions = { + streamInfo: audioStreamInfo, + capturerInfo: audioCapturerInfo +} + +audio.createAudioCapturer(audioCapturerOptions,(err, data) => { + if (err) { + console.error(`AudioCapturer Created : Error: ${err.message}`); + } + else { + console.info('AudioCapturer Created : Success : SUCCESS'); + audioCapturer = data; + } +}); +``` + +## audio.createAudioCapturer8+ + +createAudioCapturer(options: AudioCapturerOptions): Promise + +获取音频采集器。使用promise 方式异步返回结果。 + +**系统能力:** SystemCapability.Multimedia.Audio.Capturer + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| :------ | :------------------- | :--- | :--------------- | +| options | AudioCapturerOptions | 是 | 配置音频采集器。 | + +**返回值:** + +| 类型 | 说明 | +| ----------------------------------------- | -------------- | +| Promise<[AudioCapturer](#AudioCapturer8)> | 音频采集器对象 | + +**示例:** + +``` +var audioStreamInfo = { + samplingRate: audio.AudioSamplingRate.SAMPLE_RATE_44100, + channels: audio.AudioChannel.CHANNEL_2, + sampleFormat: audio.AudioSampleFormat.SAMPLE_FORMAT_S16LE, + encodingType: audio.AudioEncodingType.ENCODING_TYPE_RAW +} + +var audioCapturerInfo = { + source: audio.SourceType.SOURCE_TYPE_MIC, + capturerFlags: 1 +} + +var audioCapturerOptions = { + streamInfo: AudioStreamInfo, + capturerInfo: AudioCapturerInfo +} + +let audioCapturer = await audio.createAudioCapturer(audioCapturerOptions); +``` + ## AudioVolumeType 枚举,音频流类型。 @@ -122,17 +264,17 @@ let audioRenderer = await audio.createAudioRenderer(audioRendererOptions); **系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Device -| 名称 | 默认值 | 描述 | -| -------------- | ------ | --------------------------------------------------------- | -| INVALID | 0 | 无效设备。 | -| EARPIECE | 1 | 听筒。 | -| SPEAKER | 2 | 扬声器。 | -| WIRED_HEADSET | 3 | 有线耳机,带麦克风。 | -| WIRED_HEADPHONE| 4 | 有线耳机,无麦克风。 | -| BLUETOOTH_SCO | 7 | 蓝牙设备SCO(Synchronous Connection Oriented)连接。 | -| BLUETOOTH_A2DP | 8 | 蓝牙设备A2DP(Advanced Audio Distribution Profile)连接。 | -| MIC | 15 | 麦克风。 | -| USB_HEADSET | 22 | USB耳机,带麦克风。 | +| 名称 | 默认值 | 描述 | +| --------------- | ------ | --------------------------------------------------------- | +| INVALID | 0 | 无效设备。 | +| EARPIECE | 1 | 听筒。 | +| SPEAKER | 2 | 扬声器。 | +| WIRED_HEADSET | 3 | 有线耳机,带麦克风。 | +| WIRED_HEADPHONE | 4 | 有线耳机,无麦克风。 | +| BLUETOOTH_SCO | 7 | 蓝牙设备SCO(Synchronous Connection Oriented)连接。 | +| BLUETOOTH_A2DP | 8 | 蓝牙设备A2DP(Advanced Audio Distribution Profile)连接。 | +| MIC | 15 | 麦克风。 | +| USB_HEADSET | 22 | USB耳机,带麦克风。 | ## ActiveDeviceType @@ -213,22 +355,22 @@ let audioRenderer = await audio.createAudioRenderer(audioRendererOptions); | ENCODING_TYPE_INVALID | -1 | 无效。 | | ENCODING_TYPE_RAW | 0 | PCM编码。 | -## ContentType8+ +## ContentType 枚举,音频内容类型。 **系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Core -| 名称 | 默认值 | 描述 | -| ------------------------- | ------ | ---------- | -| CONTENT_TYPE_UNKNOWN | 0 | 未知类型。 | -| CONTENT_TYPE_SPEECH | 1 | 语音。 | -| CONTENT_TYPE_MUSIC | 2 | 音乐。 | -| CONTENT_TYPE_MOVIE | 3 | 电影。 | -| CONTENT_TYPE_SONIFICATION | 4 | 加密类型。 | -| CONTENT_TYPE_RINGTONE | 5 | 铃声。 | +| 名称 | 默认值 | 描述 | +| ---------------------------------- | ------ | ---------- | +| CONTENT_TYPE_UNKNOWN | 0 | 未知类型。 | +| CONTENT_TYPE_SPEECH | 1 | 语音。 | +| CONTENT_TYPE_MUSIC | 2 | 音乐。 | +| CONTENT_TYPE_MOVIE | 3 | 电影。 | +| CONTENT_TYPE_SONIFICATION | 4 | 加密类型。 | +| CONTENT_TYPE_RINGTONE8+ | 5 | 铃声。 | -## StreamUsage8+ +## StreamUsage 枚举,音频流使用类型。 @@ -239,7 +381,7 @@ let audioRenderer = await audio.createAudioRenderer(audioRendererOptions); | STREAM_USAGE_UNKNOWN | 0 | 未知类型。 | | STREAM_USAGE_MEDIA | 1 | 音频。 | | STREAM_USAGE_VOICE_COMMUNICATION | 2 | 语音通信。 | -| STREAM_USAGE_NOTIFICATION_RINGTONE | 3 | 通知铃声。 | +| STREAM_USAGE_NOTIFICATION_RINGTONE | 6 | 通知铃声。 | ## AudioState8+ @@ -259,7 +401,7 @@ let audioRenderer = await audio.createAudioRenderer(audioRendererOptions); ## AudioRendererRate8+ -枚举,播放速度。 +枚举,音频渲染速度。 **系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Renderer @@ -269,7 +411,7 @@ let audioRenderer = await audio.createAudioRenderer(audioRendererOptions); | RENDER_RATE_DOUBLE | 1 | 2倍速。 | | RENDER_RATE_HALF | 2 | 0.5倍数。 | -## InterruptType8+ +## InterruptType 枚举,中断类型。 @@ -280,7 +422,7 @@ let audioRenderer = await audio.createAudioRenderer(audioRendererOptions); | INTERRUPT_TYPE_BEGIN | 1 | 音频播放中断事件开始。 | | INTERRUPT_TYPE_END | 2 | 音频播放中断事件结束。 | -## InterruptForceType8+ +## InterruptForceType9+ 枚举,强制打断类型。 @@ -291,20 +433,20 @@ let audioRenderer = await audio.createAudioRenderer(audioRendererOptions); | INTERRUPT_FORCE | 0 | 由系统进行操作,强制打断音频播放。 | | INTERRUPT_SHARE | 1 | 由应用进行操作,可以选择打断或忽略。 | -## InterruptHint8+ +## InterruptHint 枚举,中断提示。 **系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Renderer -| 名称 | 默认值 | 描述 | -| --------------------- | ------ | -------------------------------------------- | -| INTERRUPT_HINT_NONE | 0 | 无提示。 | -| INTERRUPT_HINT_RESUME | 1 | 提示音频恢复。 | -| INTERRUPT_HINT_PAUSE | 2 | 提示音频暂停。 | -| INTERRUPT_HINT_STOP | 3 | 提示音频停止。 | -| INTERRUPT_HINT_DUCK | 4 | 提示音频躲避。(躲避:音量减弱,而不会停止) | -| INTERRUPT_HINT_UNDUCK | 5 | 提示音量恢复。 | +| 名称 | 默认值 | 描述 | +| ---------------------------------- | ------ | -------------------------------------------- | +| INTERRUPT_HINT_NONE8+ | 0 | 无提示。 | +| INTERRUPT_HINT_RESUME | 1 | 提示音频恢复。 | +| INTERRUPT_HINT_PAUSE | 2 | 提示音频暂停。 | +| INTERRUPT_HINT_STOP | 3 | 提示音频停止。 | +| INTERRUPT_HINT_DUCK | 4 | 提示音频躲避。(躲避:音量减弱,而不会停止) | +| INTERRUPT_HINT_UNDUCK8+ | 5 | 提示音量恢复。 | ## InterruptActionType @@ -334,28 +476,28 @@ let audioRenderer = await audio.createAudioRenderer(audioRendererOptions); ## AudioRendererInfo8+ -音频播放器信息。 +音频渲染器信息。 **系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Core -| 名称 | 类型 | 必填 | 说明 | -| ------------- | ---------------------------- | ---- | ---------------- | -| contentType | [ContentType](#contenttype8) | 是 | 媒体类型。 | -| usage | [StreamUsage](#streamusage8) | 是 | 音频流使用类型。 | -| rendererFlags | number | 是 | 音频播放器标志。 | +| 名称 | 类型 | 必填 | 说明 | +| ------------- | --------------------------- | ---- | ---------------- | +| contentType | [ContentType](#contenttype) | 是 | 媒体类型。 | +| usage | [StreamUsage](#streamusage) | 是 | 音频流使用类型。 | +| rendererFlags | number | 是 | 音频渲染器标志。 | ## AudioRendererOptions8+ -音频播放器选项信息。 +音频渲染器选项信息。 **系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Renderer | 名称 | 类型 | 必填 | 说明 | | ------------ | ---------------------------------------- | ---- | ---------------- | | streamInfo | [AudioStreamInfo](#audiostreaminfo8) | 是 | 表示音频流信息。 | -| rendererInfo | [AudioRendererInfo](#audiorendererinfo8) | 是 | 表示播放器信息。 | +| rendererInfo | [AudioRendererInfo](#audiorendererinfo8) | 是 | 表示渲染器信息。 | -## InterruptEvent8+ +## InterruptEvent9+ 播放中断时,应用接收的中断事件。 @@ -363,9 +505,9 @@ let audioRenderer = await audio.createAudioRenderer(audioRendererOptions); | 名称 | 类型 | 必填 | 说明 | | --------- | ------------------------------------------ | ---- | ------------------------------------ | -| eventType | [InterruptType](#interrupttype8) | 是 | 中断事件类型,开始或是结束。 | -| forceType | [InterruptForceType](#interruptforcetype8) | 是 | 操作是由系统执行或是由应用程序执行。 | -| hintType | [InterruptHint](#interrupthint8) | 是 | 中断提示。 | +| eventType | [InterruptType](#interrupttype) | 是 | 中断事件类型,开始或是结束。 | +| forceType | [InterruptForceType](#interruptforcetype9) | 是 | 操作是由系统执行或是由应用程序执行。 | +| hintType | [InterruptHint](#interrupthint) | 是 | 中断提示。 | ## AudioInterrupt @@ -377,8 +519,8 @@ let audioRenderer = await audio.createAudioRenderer(audioRendererOptions); | 名称 | 类型 | 必填 | 说明 | | --------- | ------------------------------------------ | ---- | ------------------------------------ | -| streamUsage | [StreamUsage](#streamusage8) | 是 | 音频流使用类型。 | -| contentType | [ContentType](#contenttype8) | 是 | 音频打断媒体类型。 | +| streamUsage | [StreamUsage](#streamusage) | 是 | 音频流使用类型。 | +| contentType | [ContentType](#contenttype) | 是 | 音频打断媒体类型。 | | pauseWhenDucked | boolean | 是 | 音频打断时是否可以暂停音频播放(true表示音频播放可以在音频打断期间暂停,false表示相反)。 | ## InterruptAction @@ -392,14 +534,16 @@ let audioRenderer = await audio.createAudioRenderer(audioRendererOptions); | 名称 | 类型 | 必填 | 说明 | | --------- | ------------------------------------------ | ---- | ------------------------------------ | | actionType | [InterruptActionType](#interruptactiontype) | 是 | 事件返回类型。TYPE_ACTIVATED为焦点触发事件,TYPE_INTERRUPT为音频打断事件。 | -| type | [InterruptType](#interrupttype8) | 否 | 打断事件类型。 | -| hint | [InterruptHint](interrupthint8) | 否 | 打断事件提示。 | +| type | [InterruptType](#interrupttype) | 否 | 打断事件类型。 | +| hint | [InterruptHint](interrupthint) | 否 | 打断事件提示。 | | activated | boolean | 否 | 获得/释放焦点。true表示焦点获取/释放成功,false表示焦点获得/释放失败。 | ## VolumeEvent8+ 音量改变时,应用接收的事件。 +此接口为系统接口,三方应用不支持。 + **系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Volume | 名称 | 类型 | 必填 | 说明 | @@ -408,6 +552,65 @@ let audioRenderer = await audio.createAudioRenderer(audioRendererOptions); | volume | number | 是 | 音量等级,可设置范围通过getMinVolume和getMaxVolume获取。 | | updateUi | boolean | 是 | 在UI中显示音量变化。 | +## DeviceChangeAction + +描述设备连接状态变化和设备信息。 + +**系统能力:**SystemCapability.Multimedia.Audio.Device + +**参数:** + +| 名称 | 类型 | 必填 | 说明 | +| :---------------- | :------------------------------------------------ | :--- | :----------------- | +| type | [DeviceChangeType](#DeviceChangeType) | 是 | 设备连接状态变化。 | +| deviceDescriptors | [AudioDeviceDescriptors](#AudioDeviceDescriptors) | 是 | 设备信息。 | + +## DeviceChangeType + +枚举,设备连接状态变化。 + +**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Device + +| 名称 | 默认值 | 描述 | +| :--------- | :----- | :------------- | +| CONNECT | 0 | 设备连接。 | +| DISCONNECT | 1 | 断开设备连接。 | + +## AudioCapturerInfo8+ + +描述音频采集器信息。 + +**系统能力:** SystemCapability.Multimedia.Audio.Core + +| 名称 | 类型 | 必填 | 说明 | +| :------------ | :------------------------ | :--- | :--------------- | +| source | [SourceType](#sourcetype) | 是 | 音源类型。 | +| capturerFlags | number | 是 | 音频采集器标志。 | + +## SourceType8+ + +枚举,音源类型。 + +**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Core + +| 名称 | 默认值 | 描述 | +| :------------------ | :----- | :------------- | +| SOURCE_TYPE_INVALID | -1 | 无效的音频源。 | +| SOURCE_TYPE_MIC | 0 | Mic音频源。 | + +## AudioScene8+ + +枚举,音频场景。 + +**系统能力:** 以下各项对应的系统能力均为SystemCapability.Multimedia.Audio.Communication + +| 名称 | 默认值 | 描述 | +| :------------------------------------------------- | :----- | :------------- | +| AUDIO_SCENE_DEFAULT | 0 | 默认音频场景。 | +| AUDIO_SCENE_RINGING(系统接口,三方应用不支持) | 1 | 响铃模式。 | +| AUDIO_SCENE_PHONE_CALL(系统接口,三方应用不支持) | 2 | 电话模式。 | +| AUDIO_SCENE_VOICE_CHAT | 3 | 语音聊天模式。 | + ## AudioManager 管理音频音量和音频设备。在调用AudioManager的接口前,需要先通过[getAudioManager](#audiogetaudiomanager)创建实例。 @@ -1325,12 +1528,14 @@ audioManager.isMicrophoneMute().then((value) => { }) ``` -### on('volumeChange') +### on('volumeChange')8+ on(type: 'volumeChange', callback: Callback\): void 监听系统音量变化事件。 +此接口为系统接口,三方应用不支持。 + **系统能力:** SystemCapability.Multimedia.Audio.Volume **参数:** @@ -1350,12 +1555,14 @@ audioManager.on('volumeChange', (volumeEvent) => { }) ``` -### on('ringerModeChange') +### on('ringerModeChange')8+ on(type: 'ringerModeChange', callback: Callback\): void 监听铃声模式变化事件。 +此接口为系统接口,三方应用不支持。 + **系统能力:** SystemCapability.Multimedia.Audio.Communication **参数:** @@ -1365,6 +1572,57 @@ on(type: 'ringerModeChange', callback: Callback\): void | type | string | 是 | 事件回调类型,支持的事件为:'ringerModeChange'(铃声模式变化事件,检测到铃声模式改变时,触发该事件)。 | | callback | Callback<[AudioRingMode](#audioringmode)> | 是 | 回调方法。 | +### on('deviceChange') + +on(type: 'deviceChange', callback: Callback): void + +设备更改。音频设备连接状态变化。 + +**系统能力:** SystemCapability.Multimedia.Audio.Device + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| :------- | :--------------------------------------------------- | :--- | :----------------------------------------- | +| type | string | 是 | 订阅的事件的类型。支持事件:'deviceChange' | +| callback | Callback<[DeviceChangeAction](#DeviceChangeAction)\> | 是 | 获取设备更新详情。 | + +**示例:** + +``` +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); +}); +``` + +### off('deviceChange') + +off(type: 'deviceChange', callback?: Callback): void + +取消订阅音频设备连接变化事件。 + +本接口在OpenHarmony 3.1 Release版本仅为接口定义,暂不支持使用。接口将在OpenHarmony 3.1 MR版本中提供使用支持。 + +**系统能力:** SystemCapability.Multimedia.Audio.Device + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| -------- | --------------------------------------------------- | ---- | ------------------------------------------ | +| type | string | 是 | 订阅的事件的类型。支持事件:'deviceChange' | +| callback | Callback<[DeviceChangeAction](#DeviceChangeAction)> | 否 | 获取设备更新详情。 | + +**示例:** + +``` +audioManager.off('deviceChange', (deviceChanged) => { + console.log("Should be no callback."); +}); +``` + ### on('interrupt') on(type: 'interrupt', interrupt: AudioInterrupt, callback: Callback\): void @@ -1437,6 +1695,118 @@ this.audioManager.off('interrupt', interAudioInterrupt, (InterruptAction) => { }); ``` +### setAudioScene8+ + +setAudioScene\(scene: AudioScene, callback: AsyncCallback\): void + +设置音频场景模式,使用callback方式异步返回结果。 + +此接口为系统接口,三方应用不支持。 + +**系统能力:** SystemCapability.Multimedia.Audio.Communication + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| :------- | :----------------------------------- | :--- | :------------------- | +| scene | AudioScene | 是 | 音频场景模式。 | +| callback | AsyncCallback | 是 | 用于返回结果的回调。 | + +**示例:** + +``` +audioManager.setAudioScene(audio.AudioScene.AUDIO_SCENE_PHONE_CALL, (err) => { + if (err) { + console.error('Failed to set the audio scene mode.​ ${err.message}'); + return; + } + console.log('Callback invoked to indicate a successful setting of the audio scene mode.'); +}); +``` + +### setAudioScene8+ + +setAudioScene\(scene: AudioScene\): Promise + +设置音频场景模式,使用Promise方式返回异步结果。 + +此接口为系统接口,三方应用不支持。 + +**系统能力:**: SystemCapability.Multimedia.Audio.Communication + +**Parameters** + +| 参数名 | 类型 | 必填 | 说明 | +| :----- | :----------------------------------- | :--- | :------------- | +| scene | AudioScene | 是 | 音频场景模式。 | + +**返回值:** + +| 类型 | 说明 | +| :------------- | :------------------- | +| Promise | 用于返回结果的回调。 | + +**示例:** + +``` +audioManager.setAudioScene(audio.AudioSceneMode.AUDIO_SCENE_PHONE_CALL).then(() => { + console.log('Promise returned to indicate a successful setting of the audio scene mode.'); +}).catch ((err) => { + console.log('Failed to set the audio scene mode'); +}); +``` + +### getAudioScene8+ + +getAudioScene\(callback: AsyncCallback\): void + +获取音频场景模式,使用callback方式返回异步结果。 + +**系统能力:**SystemCapability.Multimedia.Audio.Communication + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| :------- | :-------------------------------------------------- | :--- | :--------------------------- | +| callback | AsyncCallback<AudioScene> | 是 | 用于返回音频场景模式的回调。 | + +**示例:** + +``` +audioManager.getAudioScene((err, value) => { + if (err) { + console.error('Failed to obtain the audio scene mode.​ ${err.message}'); + return; + } + console.log('Callback invoked to indicate that the audio scene mode is obtained.' + value); +}); +``` + + +### getAudioScene8+ + +getAudioScene\(\): Promise + +获取音频场景模式,使用Promise方式返回异步结果。 + +**系统能力:** SystemCapability.Multimedia.Audio.Communication + +**返回值:** + +| 类型 | 说明 | +| :-------------------------------------------- | :--------------------------- | +| Promise<AudioScene> | 用于返回音频场景模式的回调。 | + +**示例:** + +``` +audioManager.getAudioScene().then((value) => { + console.log('Promise returned to indicate that the audio scene mode is obtained.' + value); +}).catch ((err) => { + console.log('Failed to obtain the audio scene mode'); +}); +``` + ## AudioDeviceDescriptor 描述音频设备。 @@ -1486,13 +1856,21 @@ promise.then(async function (audioDeviceDescriptors) { ## AudioRenderer8+ -提供音频播放的相关接口。在调用AudioRenderer的接口前,需要先通过[createAudioRenderer](#audiocreateaudiorenderer8)创建实例。 +提供音频渲染的相关接口。在调用AudioRenderer的接口前,需要先通过[createAudioRenderer](#audiocreateaudiorenderer8)创建实例。 + +**系统能力:** SystemCapability.Multimedia.Audio.Renderer + +### state8+ + +只读 state: AudioState + +定义当前渲染器的状态。 -### 属性 +**参数:** -| 名称 | 类型 | 可读 | 可写 | 说明 | +| 名称 | 参数型 | 可读 | 可写 | 说明 | | ----- | -------------------------- | ---- | ---- | ------------------ | -| state | [AudioState](#audiostate8) | 是 | 否 | 当前播放器的状态。 | +| state | [AudioState](#audiostate8) | 是 | 否 | 音频渲染器的状态。 | **示例:** @@ -1504,15 +1882,15 @@ var state = audioRenderer.state; getRendererInfo(callback: AsyncCallback): void -获取当前被创建的音频播放器的信息,使用callback方式异步返回结果。 +获取当前被创建的音频渲染器的信息,使用callback方式异步返回结果。 **系统能力**: SystemCapability.Multimedia.Audio.Renderer **参数:** -| 参数名 | 类型 | 必填 | 说明 | -| :------- | :------------------------------------------------------- | :--- | :------------------------- | -| callback | AsyncCallback<[AudioRendererInfo](#audiorendererinfo8)\> | 是 | 回调返回音频播放器的信息。 | +| 参数名 | 类型 | 必填 | 说明 | +| :------- | :------------------------------------------------------- | :--- | :--------------------- | +| callback | AsyncCallback<[AudioRendererInfo](#audiorendererinfo8)\> | 是 | 返回音频渲染器的信息。 | **示例:** @@ -1529,7 +1907,7 @@ audioRenderer.getRendererInfo((err, rendererInfo)=>{ getRendererInfo(): Promise -获取当前被创建的音频播放器的信息,使用Promise方式异步返回结果。 +获取当前被创建的音频渲染器的信息,使用Promise方式异步返回结果。 **系统能力**: SystemCapability.Multimedia.Audio.Renderer @@ -1537,7 +1915,7 @@ getRendererInfo(): Promise | 类型 | 说明 | | -------------------------------------------------- | ------------------------------- | -| Promise<[AudioRendererInfo](#audiorendererinfo8)\> | Promise用于返回音频播放器信息。 | +| Promise<[AudioRendererInfo](#audiorendererinfo8)\> | Promise用于返回音频渲染器信息。 | **示例:** @@ -1545,9 +1923,9 @@ getRendererInfo(): Promise let streamInfo = await audioRenderer.getStreamInfo(); console.log('Renderer GetStreamInfo:'); console.log('Renderer sampling rate:' + streamInfo.samplingRate); -console.log('Renderer channel:' + streamInfo.AudioChannel); -console.log('Renderer format:' + streamInfo.AudioSampleFormat); -console.log('Renderer encoding type:' + streamInfo.AudioEncodingType); +console.log('Renderer channel:' + streamInfo.channels); +console.log('Renderer format:' + streamInfo.sampleFormat); +console.log('Renderer encoding type:' + streamInfo.encodingType); ``` ### getStreamInfo8+ @@ -1570,9 +1948,9 @@ getStreamInfo(callback: AsyncCallback): void audioRenderer.getStreamInfo((err, streamInfo)=>{ console.log('Renderer GetStreamInfo:'); console.log('Renderer sampling rate:' + streamInfo.samplingRate); - console.log('Renderer channel:' + streamInfo.AudioChannel); - console.log('Renderer format:' + streamInfo.AudioSampleFormat); - console.log('Renderer encoding type:' + streamInfo.AudioEncodingType); + console.log('Renderer channel:' + streamInfo.channels); + console.log('Renderer format:' + streamInfo.sampleFormat); + console.log('Renderer encoding type:' + streamInfo.encodingType); }) ``` @@ -1605,7 +1983,7 @@ console.log('Renderer encoding type:' + streamInfo.AudioEncodingType); start(callback: AsyncCallback): void -启动音频播放器。使用callback方式异步返回结果。 +启动音频渲染器。使用callback方式异步返回结果。 **系统能力**: SystemCapability.Multimedia.Audio.Renderer @@ -1631,7 +2009,7 @@ audioRenderer.start((err)=>{ start(): Promise -启动音频播放器。使用Promise方式异步返回结果。 +启动音频渲染器。使用Promise方式异步返回结果。 **系统能力**: SystemCapability.Multimedia.Audio.Renderer @@ -1651,7 +2029,7 @@ await audioRenderer.start(); pause(callback: AsyncCallback\): void -暂停音频播放器。使用callback方式异步返回结果。 +暂停渲染。使用callback方式异步返回结果。 **系统能力**: SystemCapability.Multimedia.Audio.Renderer @@ -1677,7 +2055,7 @@ audioRenderer.pause((err)=>{ pause(): Promise\ -暂停音频播放器。使用Promise方式异步返回结果。 +暂停渲染。使用Promise方式异步返回结果。 **系统能力**: SystemCapability.Multimedia.Audio.Renderer @@ -1697,7 +2075,7 @@ await audioRenderer.pause(); drain(callback: AsyncCallback\): void -检查播放缓冲区是否已被耗尽。使用callback方式异步返回结果。 +检查缓冲区是否已被耗尽。使用callback方式异步返回结果。 **系统能力**: SystemCapability.Multimedia.Audio.Renderer @@ -1723,7 +2101,7 @@ audioRenderer.drain((err)=>{ drain(): Promise\ -检查播放缓冲区是否已被耗尽。使用Promise方式异步返回结果。 +检查缓冲区是否已被耗尽。使用Promise方式异步返回结果。 **系统能力**: SystemCapability.Multimedia.Audio.Renderer @@ -1743,7 +2121,7 @@ await audioRenderer.drain(); stop(callback: AsyncCallback\): void -停止播放。使用callback方式异步返回结果。 +停止渲染。使用callback方式异步返回结果。 **系统能力**: SystemCapability.Multimedia.Audio.Renderer @@ -1769,7 +2147,7 @@ audioRenderer.stop((err)=>{ stop(): Promise\ -停止播放。使用Promise方式异步返回结果。 +停止渲染。使用Promise方式异步返回结果。 **系统能力**: SystemCapability.Multimedia.Audio.Renderer @@ -1789,7 +2167,7 @@ await audioRenderer.stop(); release(callback: AsyncCallback\): void -释放音频播放器。使用callback方式异步返回结果。 +释放音频渲染器。使用callback方式异步返回结果。 **系统能力**: SystemCapability.Multimedia.Audio.Renderer @@ -1893,7 +2271,7 @@ if (writtenbytes < 0) { getAudioTime(callback: AsyncCallback\): void -获取时间戳。使用callback方式异步返回结果。 +获取时间戳(从 1970 年 1 月 1 日开始)。使用callback方式异步返回结果。 **系统能力**: SystemCapability.Multimedia.Audio.Renderer @@ -1915,7 +2293,7 @@ audioRenderer.getAudioTime((err, timestamp)=>{ getAudioTime(): Promise\ -获取时间戳。使用Promise方式异步返回结果。 +获取时间戳(从 1970 年 1 月 1 日开始)。使用Promise方式异步返回结果。 **系统能力**: SystemCapability.Multimedia.Audio.Renderer @@ -1936,7 +2314,7 @@ console.log('Current timestamp: ' + timestamp); getBufferSize(callback: AsyncCallback\): void -获取音频播放器的最小缓冲区大小。使用callback方式异步返回结果。 +获取音频渲染器的最小缓冲区大小。使用callback方式异步返回结果。 **系统能力**: SystemCapability.Multimedia.Audio.Renderer @@ -1962,7 +2340,7 @@ ss.readSync(buf); getBufferSize(): Promise\ -获取音频播放器的最小缓冲区大小。使用Promise方式异步返回结果。 +获取音频渲染器的最小缓冲区大小。使用Promise方式异步返回结果。 **系统能力**: SystemCapability.Multimedia.Audio.Renderer @@ -1984,7 +2362,7 @@ ss.readSync(buf); setRenderRate(rate: AudioRendererRate, callback: AsyncCallback\): void -设置音频播放速率。使用callback方式异步返回结果。 +设置音频渲染速率。使用callback方式异步返回结果。 **系统能力**: SystemCapability.Multimedia.Audio.Renderer @@ -1992,7 +2370,7 @@ setRenderRate(rate: AudioRendererRate, callback: AsyncCallback\): void | 参数名 | 类型 | 必填 | 说明 | | -------- | ---------------------------------------- | ---- | ------------------------ | -| rate | [AudioRendererRate](#audiorendererrate8) | 是 | 播放的速率。 | +| rate | [AudioRendererRate](#audiorendererrate8) | 是 | 渲染的速率。 | | callback | AsyncCallback\ | 是 | 用于返回执行结果的回调。 | **示例:** @@ -2011,7 +2389,7 @@ audioRenderer.setRenderRate(audio.AudioRendererRate.RENDER_RATE_NORMAL, (err)=> setRenderRate(rate: AudioRendererRate): Promise\ -设置音频播放速率。使用Promise方式异步返回结果。 +设置音频渲染速率。使用Promise方式异步返回结果。 **系统能力**: SystemCapability.Multimedia.Audio.Renderer @@ -2019,7 +2397,7 @@ setRenderRate(rate: AudioRendererRate): Promise\ | 参数名 | 类型 | 必填 | 说明 | | ------ | ---------------------------------------- | ---- | ------------ | -| rate | [AudioRendererRate](#audiorendererrate8) | 是 | 播放的速率。 | +| rate | [AudioRendererRate](#audiorendererrate8) | 是 | 渲染的速率。 | **返回值:** @@ -2037,7 +2415,7 @@ await audioRenderer.setRenderRate(audio.AudioRendererRate.RENDER_RATE_NORMAL); getRenderRate(callback: AsyncCallback\): void -获取当前播放速率。使用callback方式异步返回结果。 +获取当前渲染速率。使用callback方式异步返回结果。 **系统能力**: SystemCapability.Multimedia.Audio.Renderer @@ -2045,7 +2423,7 @@ getRenderRate(callback: AsyncCallback\): void | 参数名 | 类型 | 必填 | 说明 | | -------- | ------------------------------------------------------- | ---- | ------------------ | -| callback | AsyncCallback<[AudioRendererRate](#audiorendererrate8)> | 是 | 回调返回播放速率。 | +| callback | AsyncCallback<[AudioRendererRate](#audiorendererrate8)> | 是 | 回调返回渲染速率。 | **示例:** @@ -2059,7 +2437,7 @@ audioRenderer.getRenderRate((err, renderrate)=>{ getRenderRate(): Promise\ -获取当前播放速率。使用Promise方式异步返回结果。 +获取当前渲染速率。使用Promise方式异步返回结果。 **系统能力**: SystemCapability.Multimedia.Audio.Renderer @@ -2067,7 +2445,7 @@ getRenderRate(): Promise\ | 类型 | 说明 | | ------------------------------------------------- | ------------------------- | -| Promise<[AudioRendererRate](#audiorendererrate8)> | Promise回调返回播放速率。 | +| Promise<[AudioRendererRate](#audiorendererrate8)> | Promise回调返回渲染速率。 | **示例:** @@ -2076,7 +2454,7 @@ let renderRate = await audioRenderer.getRenderRate(); console.log('getRenderRate: ' + renderrate); ``` -### on('interrupt')8+ +### on('interrupt')9+ on(type: 'interrupt', callback: Callback\): void @@ -2089,7 +2467,7 @@ on(type: 'interrupt', callback: Callback\): void | 参数名 | 类型 | 必填 | 说明 | | -------- | -------------------------------------------- | ---- | ------------------------------------------------------------ | | type | string | 是 | 事件回调类型,支持的事件为:'interrupt'(中断事件被触发,音频播放被中断。) | -| callback | Callback<[InterruptEvent](#interruptevent8)> | 是 | 被监听的中断事件的回调。 | +| callback | Callback<[InterruptEvent](#interruptevent9)> | 是 | 被监听的中断事件的回调。 | **示例:** @@ -2121,5 +2499,693 @@ audioRenderer.on('interrupt', (interruptEvent) => { }) ``` +### on('markReach')8+ + +on(type: 'markReach', frame: number, callback: (position: number) => {}): void + +订阅到达标记的事件。 当渲染的帧数达到 frame 参数的值时,回调被调用。 + +**系统能力:** SystemCapability.Multimedia.Audio.Renderer + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| :------- | :----------------------- | :--- | :---------------------------------------- | +| type | string | 是 | 事件回调类型,支持的事件为:'markReach'。 | +| frame | number | 是 | 触发事件的帧数。 该值必须大于 0。 | +| callback | (position: number) => {} | 是 | 触发事件时调用的回调。 | + +**示例:** + +``` +audioRenderer.on('markReach', 1000, (position) => { + if (position == "1000") { + console.log('ON Triggered successfully'); + } +}); +``` + + +### off('markReach') 8+ + +off(type: 'markReach'): void + +取消订阅标记事件。 + +**系统能力:** SystemCapability.Multimedia.Audio.Renderer + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| :----- | :----- | :--- | :------------------------------------------------ | +| type | string | 是 | 要取消订阅事件的类型。支持的事件为:'markReach'。 | + +**示例:** + +``` +audioRenderer.off('markReach'); +``` + +### on('periodReach') 8+ +on(type: "periodReach", frame: number, callback: (position: number) => {}): void +订阅到达标记的事件。 当渲染的帧数达到 frame 参数的值时,回调被循环调用。 + +**系统能力:** SystemCapability.Multimedia.Audio.Renderer + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| :------- | :----------------------- | :--- | :------------------------------------------ | +| type | string | 是 | 事件回调类型,支持的事件为:'periodReach'。 | +| frame | number | 是 | 触发事件的帧数。 该值必须大于 0。 | +| callback | (position: number) => {} | 是 | 触发事件时调用的回调。 | + +**示例:** + +``` +audioRenderer.on('periodReach', 1000, (position) => { + if (position == "1000") { + console.log('ON Triggered successfully'); + } +}); +``` + +### off('periodReach') 8+ + +off(type: 'periodReach'): void + +取消订阅标记事件。 + +**系统能力:** SystemCapability.Multimedia.Audio.Renderer + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| :----- | :----- | :--- | :-------------------------------------------------- | +| type | string | 是 | 要取消订阅事件的类型。支持的事件为:'periodReach'。 | + +**示例:** + +``` +audioRenderer.off('periodReach') +``` + +### on('stateChange') 8+ + +on(type: 'stateChange', callback: Callback): void + +订阅监听状态变化。 + +**系统能力:** SystemCapability.Multimedia.Audio.Renderer + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| :------- | :------------------------- | :--- | :------------------------------------------ | +| type | string | 是 | 事件回调类型,支持的事件为:'stateChange'。 | +| callback | [AudioState](#AudioState8) | 是 | 返回监听的状态。 | + +**示例:** + +``` +audioRenderer.on('stateChange', (state) => { + if (state == 1) { + console.log("audio renderer state is: STATE_PREPARED"); + } + if (state == 2) { + console.log("audio renderer state is: STATE_RUNNING"); + } +}); +``` + +## AudioCapturer8+ + +提供音频采集的相关接口。在调用AudioCapturer的接口前,需要先通过[createAudioCapturer](#audiocreateaudiocapturer8)创建实例。 + +### state8+ + +只读 state: AudioState + +定义当前采集器状态。 + +**系统能力:** SystemCapability.Multimedia.Audio.Capturer + +| 名称 | 参数型 | 可读 | 可写 | 说明 | +| :---- | :------------------------- | :--- | :--- | :--------------- | +| state | [AudioState](#audiostate8) | Yes | No | 音频采集器状态。 | + +**示例:** + +``` +var state = audioCapturer.state; +``` + +### getCapturerInfo8+ + +getCapturerInfo(callback: AsyncCallback): void + +获取采集器信息。使用callback方式异步返回结果。 + +**系统能力:** SystemCapability.Multimedia.Audio.Capturer + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| :------- | :-------------------------------- | :--- | :----------------------------------- | +| callback | AsyncCallback | 是 | 使用callback方式异步返回采集器信息。 | + +**示例:** + +``` +audioCapturer.getCapturerInfo((err, capturerInfo)=>{ + if (err) { + console.error('Failed to get capture info'); + } else { + console.log('Capturer getCapturerInfo:'); + console.log('Capturer source:' + capturerInfo.source); + console.log('Capturer flags:' + capturerInfo.capturerFlags); + } +}); +``` + + +### getCapturerInfo8+ + +getCapturerInfo(): Promise + +获取采集器信息。使用Promise方式异步返回结果。 + +**系统能力:** SystemCapability.Multimedia.Audio.Capturer + +**返回值:** + +| 类型 | 说明 | +| :------------------------------------------------ | :---------------------------------- | +| Promise<[AudioCapturerInfo](#audiocapturerinfo)\> | 使用Promise方式异步返回采集器信息。 | + +**示例:** + +``` +audioCapturer.getCapturerInfo().then((capturerInfo) => { + console.log('Capturer getCapturerInfo:'); + console.log('Capturer source:' + capturerInfo.source); + console.log('Capturer flags:' + capturerInfo.capturerFlags); +}).catch ((err) => { + console.log("Failed to get capturer info"); +}); +``` + +### getStreamInfo8+ + +getStreamInfo(callback: AsyncCallback): void + +获取采集器流信息。使用callback方式异步返回结果。 + +**系统能力:** SystemCapability.Multimedia.Audio.Capturer + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| :------- | :-------------------------------------------------------- | :--- | :------------------------------- | +| callback | AsyncCallback<[AudioStreamInfo](#AudioRendererOptions8)\> | 是 | 使用callback方式异步返回流信息。 | + +**示例:** + +``` +audioCapturer.start((err)=>{ + if (err) { + 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); + } +}); +``` + +### getStreamInfo8+ + +getStreamInfo(): Promise + +获取采集器流信息。使用Promise方式异步返回结果。 + +**系统能力:** SystemCapability.Multimedia.Audio.Capturer + +**返回值:** + +| 类型 | 说明 | +| :-------------------------------------------------- | :------------------------------ | +| Promise<[AudioStreamInfo](#AudioRendererOptions8)\> | 使用Promise方式异步返回流信息。 | + +**示例:** + +``` +audioCapturer.getStreamInfo().then((streamInfo) => { + 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); +}).catch ((err) => { + console.log("Failed to get stream info"); +}); +``` + +### start8+ + +start(callback: AsyncCallback): void + +启动音频采集器。使用callback方式异步返回结果。 + +**系统能力:** SystemCapability.Multimedia.Audio.Capturer + +**参数** + +| 参数名 | 类型 | 必填 | 说明 | +| :------- | :------------------- | :--- | :----------------------------- | +| callback | AsyncCallback | 是 | 使用callback方式异步返回结果。 | + +**示例:** + +``` +audioCapturer.start((err)=>{ + if (err) { + console.error('Capturer start failed.'); + } else { + console.info('Capturer start success.'); + } +}); +``` + + +### start8+ + +start(): Promise + +启动音频采集器。使用Promise方式异步返回结果。 + +**系统能力:** SystemCapability.Multimedia.Audio.Capturer + +**返回值:** + +| 类型 | 说明 | +| :------------- | :---------------------------- | +| Promise | 使用Promise方式异步返回结果。 | + +**示例:** + +``` +audioCapturer.start().then(() => { + console.log("capturer start success"); +}).catch ((err) => { + console.log("Failed to start capturer"); +}); +``` + +### stop8+ + +stop(callback: AsyncCallback): void + +停止采集。使用callback方式异步返回结果。 + +**系统能力:** SystemCapability.Multimedia.Audio.Capturer + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| :------- | :------------------- | :--- | :----------------------------- | +| callback | AsyncCallback | 是 | 使用callback方式异步返回结果。 | + +**示例:** + +``` +audioCapturer.stop((err)=>{ + if (err) { + console.error('Capturer stop failed'); + } else { + console.log('Capturer stopped.'); + } +}); +``` + + +### stop8+ + +stop(): Promise + +停止采集。使用Promise方式异步返回结果。 + +**系统能力:** SystemCapability.Multimedia.Audio.Capturer + +**返回值:** + +| 类型 | 说明 | +| :------------- | :---------------------------- | +| Promise | 使用Promise方式异步返回结果。 | + +**示例:** + +``` +audioCapturer.stop().then(() => { + console.log("capturer stop success"); +}).catch ((err) => { + console.log("Failed to stop capturer"); +}); +``` + +### release8+ + +release(callback: AsyncCallback): void + +释放采集器。使用callback方式异步返回结果。 + +**系统能力:** SystemCapability.Multimedia.Audio.Capturer + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| :------- | :------------------- | :--- | :---------------------------------- | +| callback | AsyncCallback | 是 | Callback used to return the result. | + +**示例:** + +``` +audioCapturer.release((err)=>{ + if (err) { + console.error('capturer release failed'); + } else { + console.log('capturer released.'); + } +}); +``` + + +### release8+ + +release(): Promise + +释放采集器。使用Promise方式异步返回结果。 + +**系统能力:** SystemCapability.Multimedia.Audio.Capturer + +**返回值:** + +| 类型 | 说明 | +| :------------- | :---------------------------- | +| Promise | 使用Promise方式异步返回结果。 | + +**示例:** + +``` +audioCapturer.release().then(() => { + console.log("capturer release success"); +}).catch ((err) => { + console.log("Failed to release capturer"); +}); +``` + + +### read8+ + +read(size: number, isBlockingRead: boolean, callback: AsyncCallback): void + +读入缓冲区。使用callback方式异步返回结果。 + +**系统能力:** SystemCapability.Multimedia.Audio.Capturer + +**参数** + +| 参数名 | 类型 | 必填 | 说明 | +| :------------- | :-------------------------- | :--- | :------------------------------- | +| size | number | 是 | 读入的字节数。 | +| isBlockingRead | boolean | 是 | 是否阻塞读操作。 | +| callback | AsyncCallback | 是 | 使用callback方式异步返回缓冲区。 | + +**示例:** + +``` +audioCapturer.read(bufferSize, true, async(err, buffer) => { + if (!err) { + console.log("Success in reading the buffer data"); + var number = fileio.writeSync(fd, buffer); + } +}; +``` + + +### read8+ + +read(size: number, isBlockingRead: boolean): Promise + +读入缓冲区。使用Promise方式异步返回结果。 + +**系统能力:** SystemCapability.Multimedia.Audio.Capturer + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| :------------- | :------ | :--- | :--------------- | +| size | number | 是 | 读入的字节数。 | +| isBlockingRead | boolean | 是 | 是否阻塞读操作。 | + +**返回值:** + +| 类型 | 说明 | +| :-------------------- | :----------------------------------------------------- | +| Promise | 如果操作成功,返回读取的缓冲区数据;否则返回错误代码。 | + +**示例:** + +``` +audioCapturer.read(size, true).then((buffer) => { + console.log("Success in reading the buffer data"); + var number = fileio.writeSync(fd, buffer); +}).catch ((err) => { + console.log("Failed to read data!"); +}); +``` + + +### getAudioTime8+ + +getAudioTime(callback: AsyncCallback): void + +获取时间戳(从1970年1月1日开始),单位为纳秒。使用callback方式异步返回结果。 + +**系统能力:** SystemCapability.Multimedia.Audio.Capturer + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| :------- | :--------------------- | :--- | :----------------------------- | +| callback | AsyncCallback | 是 | 使用callback方式异步返回结果。 | + +**示例:** + +``` +audioCapturer.getAudioTime((err, timestamp)=>{ + console.log('Current timestamp: ' + timestamp); +}); +``` + + +### getAudioTime8+ + +getAudioTime(): Promise + +获取时间戳(从1970年1月1日开始),单位为纳秒。使用Promise方式异步返回结果。 + +**系统能力:** SystemCapability.Multimedia.Audio.Capturer + +**返回值:** + +| 类型 | 说明 | +| :--------------- | :---------------------------- | +| Promise | 使用Promise方式异步返回结果。 | + +**示例:** + +``` +audioCapturer.getAudioTime().then((audioTime) => { + console.log("Success in getting the audio time"); +}).catch ((err) => { + console.log("Failed to get the audio time"); +}); +``` + + +### getBufferSize8+ + +getBufferSize(callback: AsyncCallback): void + +获取采集器合理的最小缓冲区大小。使用callback方式异步返回结果。 + +**系统能力:** SystemCapability.Multimedia.Audio.Capturer + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| :------- | :--------------------- | :--- | :----------------------------------- | +| callback | AsyncCallback | 是 | 使用callback方式异步返回缓冲区大小。 | + +**示例:** + +``` +audioCapturer.getBufferSize((err, bufferSize)=>{ + if (!err) { + console.log('BufferSize : ' + bufferSize); + var buffer = await audioCapturer.read(bufferSize, true); + } +}); +``` + + +### getBufferSize8+ + +getBufferSize(): Promise + +获取采集器合理的最小缓冲区大小。使用Promise方式异步返回结果。 + +**系统能力:** SystemCapability.Multimedia.Audio.Capturer + +**返回值:** + +| 类型 | 说明 | +| :--------------- | :---------------------------------- | +| Promise | 使用Promise方式异步返回缓冲区大小。 | + +**示例:** + +``` +audioCapturer.getBufferSize().then((bufferSize) => { + console.log("Success in getting the buffer size"); + var buffer = await audioCapturer.read(bufferSize, true); +}).catch ((err) => { + console.log("Failed to get the buffer size"); +}); +``` + + +### on('markReach')8+ + +on(type: 'markReach', frame: number, callback: (position: number) => {}): void + +订阅标记到达的事件。 当采集的帧数达到 frame 参数的值时,回调被触发。 + +**系统能力:** SystemCapability.Multimedia.Audio.Capturer + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| :------- | :---------------------- | :--- | :----------------------------------------- | +| type | string | 是 | 事件回调类型,支持的事件为:'markReach'。 | +| frame | number | 是 | 触发事件的帧数。 该值必须大于0。 | +| callback | position: number) => {} | 是 | 使用callback方式异步返回被触发事件的回调。 | + +**示例:** + +``` +audioCapturer.on('markReach', 1000, (position) => { + if (position == "1000") { + console.log('ON Triggered successfully'); + } +}); +``` + +### off('markReach')8+ + +off(type: 'markReach'): void + +取消订阅标记到达的事件。 + +**系统能力:** SystemCapability.Multimedia.Audio.Capturer + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| :----- | :----- | :--- | :-------------------------------------------- | +| type | string | 是 | 取消事件回调类型,支持的事件为:'markReach'。 | + +**示例:** + +``` +audioCapturer.off('markReach'); +``` + +### on('periodReach')8+ + +on(type: "periodReach", frame: number, callback: (position: number) => {}): void + +订阅到达标记的事件。 当采集的帧数达到 frame 参数的值时,回调被循环调用。 + +**系统能力:** SystemCapability.Multimedia.Audio.Capturer + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| :------- | :----------------------- | :--- | :------------------------------------------ | +| type | string | 是 | 事件回调类型,支持的事件为:'periodReach'。 | +| frame | number | 是 | 触发事件的帧数。 该值必须大于0。 | +| callback | (position: number) => {} | 是 | 使用callback方式异步返回被触发事件的回调 | + +**示例:** + +``` +audioCapturer.on('periodReach', 1000, (position) => { + if (position == "1000") { + console.log('ON Triggered successfully'); + } +}); +``` + +### off('periodReach')8+ + +off(type: 'periodReach'): void + +取消订阅标记到达的事件。 + +**系统能力:** SystemCapability.Multimedia.Audio.Capturer + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| :----- | :----- | :--- | :---------------------------------------------- | +| type | string | Yes | 取消事件回调类型,支持的事件为:'periodReach'。 | + +**示例:** + +``` +audioCapturer.off('periodReach') +``` + +### on('stateChange') 8+ + +on(type: 'stateChange', callback: Callback): void + +订阅监听状态变化。 + +**系统能力:** SystemCapability.Multimedia.Audio.Capturer + +**参数:** + +| 参数名 | 类型 | 必填 | 说明 | +| :------- | :------------------------- | :--- | :------------------------------------------ | +| type | string | 是 | 事件回调类型,支持的事件为:'stateChange'。 | +| callback | [AudioState](#AudioState8) | 是 | 返回监听的状态。 | + +**示例:** + +``` +audioCapturer.on('stateChange', (state) => { + if (state == 1) { + console.log("audio capturer state is: STATE_PREPARED"); + } + if (state == 2) { + console.log("audio capturer state is: STATE_RUNNING"); + } +}); +```