harmony OS NEXT-音频录制与播放模块

电子说

1.4w人已加入

描述

# HarmonyOS 音频录制与播放模块

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

![img](https://i-blog.csdnimg.cn/img_convert/7e139091863136676343350ef5ca5dcb.gif)


审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分