## 1.模块功能概览
- **麦克风权限动态检测与申请**
- **音频录制功能**(支持参数配置)
- **音频波形实时可视化**(暂时未完善,先凑合看,后续会完善)
- **录音文件播放功能**
## 2.权限检测流程
### 1.代码实现
```typescript
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.录音机配置
```ts
// 创建文件描述符
const file = fileIo.openSync(filePath,
fileIo.OpenMode.CREATE | fileIo.OpenMode.READ_WRITE);
// AVRecorder 参数配置
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.音频播放实现
```ts
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.效果展示

审核编辑 黄宇
-
音频录制
+关注
关注
0文章
2浏览量
6808 -
Harmony
+关注
关注
0文章
108浏览量
3102
发布评论请先 登录
蜻蜓FM开源“SmartXPlayer”音频播放组件,打造鸿蒙多端音频播放新引擎

新品|Unit AudioPlayer,支持 MP3/WAV 播放的音频播放单元

harmony OS NEXT-双向数据绑定MVVM以及$$语法糖介绍
harmony OS NEXT-通过用户首选项实现数据持久化
harmony OS NEXT-Navagation基本用法
harmony OS NEXT-评论功能小demo
新品 | Module Audio,ES8388音频交互模块

harmony OS NEXT-基本介绍及DevcoStudiop基本使用

如何在音频播放时插播音频

评论