使用AVRecorder可以实现音频录制功能,本开发指导将以“开始录制-暂停录制-恢复录制-停止录制”的一次流程为示例,向开发者讲解AVRecorder音频录制相关功能。
在进行应用开发的过程中,开发者可以通过AVRecorder的state属性,主动获取当前状态或使用on(‘stateChange’)方法监听状态变化。开发过程中应该严格遵循状态机要求,例如只能在started状态下调用pause()接口,只能在paused状态下调用resume()接口。
图1 录制状态变化示意图
状态的详细说明请参考AVRecorderState。
开发步骤及注意事项
详细的API说明请参考AVRecorder API参考。
1.创建AVRecorder实例,实例创建完成进入idle状态。
说明:
需要在avRecorder完成赋值(即“avRecorder = recorder; ”运行完成)后,再进行剩余操作。
import media from '@ohos.multimedia.media';
import {
BusinessError } from '@ohos.base';
let avRecorder: media.AVRecorder;
media.createAVRecorder().then((recorder: media.AVRecorder) => {
avRecorder = recorder;
}, (error: BusinessError) => {
console.error(`createAVRecorder failed`);
})
2.设置业务需要的监听事件,监听状态变化及错误上报。
import {
BusinessError } from '@ohos.base';
// 状态上报回调函数
avRecorder.on('stateChange', (state: media.AVRecorderState, reason: media.StateChangeReason) => {
console.log(`current state is ${
state}`);
// 用户可以在此补充状态发生切换后想要进行的动作
})
// 错误上报回调函数
avRecorder.on('error', (err: BusinessError) => {
console.error(`avRecorder failed, code is ${
err.code}, message is ${
err.message}`);
})
3.配置音频录制参数,调用prepare()接口,此时进入prepared状态。
说明: 配置参数需要注意:
- prepare接口的入参avConfig中仅设置音频相关的配置参数,如示例代码所示。
- 如果只需要录制音频,请不要设置视频相关配置参数;如果需要录制视频,可以参考视频录制开发指导进行开发。直接设置视频相关参数会导致后续步骤报错。
- 需要使用支持的录制规