HarmonyOS 音频录制与播放模块

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

相关推荐
小彭努力中2 小时前
199.Vue3 + OpenLayers 实现:点击 / 拖动地图播放音频
前端·vue.js·音视频·openlayers·animate
lxysbly4 小时前
鸿蒙NDS模拟器app下载
华为·harmonyos
里欧跑得慢5 小时前
Flutter 组件 tavily_dart 的适配 鸿蒙Harmony 实战 - 驾驭 AI 搜索引擎集成、实现鸿蒙端互联网知识精密获取与语义增强方案
flutter·harmonyos·鸿蒙·openharmony·tavily_dart
wei_shuo6 小时前
最佳实践 - 鸿蒙应用架构设计进阶:基于「百得知识库」ArkTS 的声明式 UI 与响应式状态管理实现路径
arkts·鸿蒙
国医中兴6 小时前
Flutter 三方库 pickled_cucumber 的鸿蒙化适配指南 - 玩转 BDD 行为驱动开发、Gherkin 自动化测试实战、鸿蒙级质量守护神
驱动开发·flutter·harmonyos
里欧跑得慢6 小时前
Flutter 三方库 config 的鸿蒙化适配指南 - 在鸿蒙系统上构建极致、透明、多源叠加的命令行参数解析与环境配置文件加载引擎
flutter·harmonyos·鸿蒙·openharmony
爱学习的小齐哥哥6 小时前
HarmonyOS 5.0元服务深度解析:下一代应用形态的开发与实践指南
华为·harmonyos·harmony pc·harmonyos app
左手厨刀右手茼蒿6 小时前
Flutter 三方库 flutter_azure_tts 深度链接鸿蒙全场景智慧语音中枢适配实录:强势加载云端高拟真情感发音合成系统实现零延迟超自然多端协同-适配鸿蒙 HarmonyOS ohos
flutter·harmonyos·azure
雷帝木木6 小时前
Flutter 三方库 image_compare_2 的鸿蒙化适配指南 - 实现像素级的图像分块对比、支持感知哈希(pHash)与端侧视觉差异检测实战
flutter·harmonyos·鸿蒙·openharmony·image_compare_2
王码码20356 小时前
Flutter 三方库 sum_types 的鸿蒙化适配指南 - 引入函数式编程思维,让鸿蒙应用的状态处理更严谨
flutter·harmonyos·鸿蒙·openharmony·sum_types