## 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瀏覽量
6801 -
Harmony
+關注
關注
0文章
75瀏覽量
2969
發布評論請先 登錄
新品|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基本使用

如何在音頻播放時插播音頻

《DNK210使用指南 -CanMV版 V1.0》第三十一章 視頻播放實驗
《DNK210使用指南 -CanMV版 V1.0》第二十九章 音頻錄制實驗
《DNK210使用指南 -CanMV版 V1.0》第二十八章 音頻播放實驗
使用adau1961 codec進行錄音,發現錄制的音頻文件噪聲非常大,請問有什么辦法可以優化嗎?
如何使用音頻接口播放音頻文件

評論