前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >harmony OS NEXT-音频录制与播放模块

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

原创
作者头像
骑老奶奶过马路
发布2025-03-30 16:15:03
发布2025-03-30 16:15:03
1510
举报

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
img

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • HarmonyOS 音频录制与播放模块
    • 1.模块功能概览
    • 2.权限检测流程
      • 1.代码实现
      • 2.2. 权限状态处理
    • 3. 录音功能核心实现
      • 2.录音操作控制
      • 3.音频播放实现
      • 4.效果展示
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档