HarmonyOS 音频录制与播放模块
1.模块功能概览
- 麦克风权限动态检测与申请
- 音频录制功能(支持参数配置)
- 音频波形实时可视化(暂时未完善,先凑合看,后续会完善)
- 录音文件播放功能
2.权限检测流程
1.代码实现
async checkPermission() {const manager = abilityAccessCtrl.createAtManager();const result = await manager.requestPermissionsFromUser(getContext(), ["ohos.permission.MICROPHONE"]);const isPass = result.authResults.every(res => res === abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED);if (!isPass) {const confirm = await promptAction.showDialog({...});if (confirm.index === 1) {const finalResult = await manager.requestPermissionOnSetting(getContext(), ["ohos.permission.MICROPHONE"]);}}
}
2.2. 权限状态处理
状态 | 处理方式 |
---|
第一次授权成功 | 直接启用录音功能 |
第一次授权失败 | 弹窗提示前往系统设置 |
系统设置二次授权失败 | 返回上级页面 |
3. 录音功能核心实现
1.录音机配置
const file = fileIo.openSync(filePath, fileIo.OpenMode.CREATE | fileIo.OpenMode.READ_WRITE);
const config = {audioSourceType: media.AudioSourceType.AUDIO_SOURCE_TYPE_MIC,url: `fd://${file.fd}`,profile: {audioBitrate: 100000,audioChannels: 2,audioSampleRate: 48000,audioCodec: media.CodecMimeType.AUDIO_AAC,fileFormat: media.ContainerFormatType.CFT_MPEG_4A}
};
2.录音操作控制
方法 | 功能描述 |
---|
startRecord() | 创建文件句柄/配置参数/启动录音 |
stopRecord() | 停止录音/释放资源/关闭文件 |
3.音频播放实现
async playRecord() {const avPlayer = await media.createAVPlayer();avPlayer.url = `fd://${file.fd}`;avPlayer.on('stateChange', (state) => {if (state === 'initialized') {avPlayer.prepare();} else if (state === 'prepared') {avPlayer.play(); }});
}
4.效果展示
