## 1.模塊功能概覽
- **麥克風(fēng)權(quán)限動(dòng)態(tài)檢測(cè)與申請(qǐng)**
- **音頻錄制功能**(支持參數(shù)配置)
- **音頻波形實(shí)時(shí)可視化**(暫時(shí)未完善,先湊合看,后續(xù)會(huì)完善)
- **錄音文件播放功能**
## 2.權(quán)限檢測(cè)流程
### 1.代碼實(shí)現(xiàn)
```typescript
async checkPermission() {
const manager = abilityAccessCtrl.createAtManager();
// 首次權(quán)限申請(qǐng)
const result = await manager.requestPermissionsFromUser(
getContext(), ["ohos.permission.MICROPHONE"]
);
// 檢查所有權(quán)限是否通過
const isPass = result.authResults.every(
res => res === abilityAccessCtrl.GrantStatus.PERMISSION_GRANTED
);
if (!isPass) {
// 二次彈窗引導(dǎo)設(shè)置
const confirm = await promptAction.showDialog({...});
if (confirm.index === 1) {
// 跳轉(zhuǎn)系統(tǒng)設(shè)置
const finalResult = await manager.requestPermissionOnSetting(
getContext(), ["ohos.permission.MICROPHONE"]
);
}
}
}
```
### 2.2. 權(quán)限狀態(tài)處理
| 狀態(tài) | 處理方式 |
| -------------------- | -------------------- |
| 第一次授權(quán)成功 | 直接啟用錄音功能 |
| 第一次授權(quán)失敗 | 彈窗提示前往系統(tǒng)設(shè)置 |
| 系統(tǒng)設(shè)置二次授權(quán)失敗 | 返回上級(jí)頁面 |
## 3. 錄音功能核心實(shí)現(xiàn)
#### 1.錄音機(jī)配置
```ts
// 創(chuàng)建文件描述符
const file = fileIo.openSync(filePath,
fileIo.OpenMode.CREATE | fileIo.OpenMode.READ_WRITE);
// AVRecorder 參數(shù)配置
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() | 創(chuàng)建文件句柄/配置參數(shù)/啟動(dòng)錄音 |
| stopRecord() | 停止錄音/釋放資源/關(guān)閉文件 |
### 3.音頻播放實(shí)現(xiàn)
```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(); // 自動(dòng)播放
}
});
}
```
### 4.效果展示

審核編輯 黃宇
-
音頻錄制
+關(guān)注
關(guān)注
0文章
2瀏覽量
6801 -
Harmony
+關(guān)注
關(guān)注
0文章
64瀏覽量
2896
發(fā)布評(píng)論請(qǐng)先 登錄
harmony OS NEXT-雙向數(shù)據(jù)綁定MVVM以及$$語法糖介紹
harmony OS NEXT-通過用戶首選項(xiàng)實(shí)現(xiàn)數(shù)據(jù)持久化
harmony OS NEXT-Navagation基本用法
harmony OS NEXT-評(píng)論功能小demo
新品 | Module Audio,ES8388音頻交互模塊

藍(lán)牙音頻模組中模擬音頻和數(shù)字音頻如何選擇?

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

如何在音頻播放時(shí)插播音頻

《DNK210使用指南 -CanMV版 V1.0》第三十一章 視頻播放實(shí)驗(yàn)
《DNK210使用指南 -CanMV版 V1.0》第二十九章 音頻錄制實(shí)驗(yàn)
《DNK210使用指南 -CanMV版 V1.0》第二十八章 音頻播放實(shí)驗(yàn)
dm368錄制音視頻后用vlc播放不同步是怎么回事?
使用adau1961 codec進(jìn)行錄音,發(fā)現(xiàn)錄制的音頻文件噪聲非常大,請(qǐng)問有什么辦法可以優(yōu)化嗎?
如何使用音頻接口播放音頻文件

HDC2024華為發(fā)布鴻蒙原生智能:AI與OS深度融合,開啟全新的AI時(shí)代

評(píng)論