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.效果展示
 
