HarmonyOS鸿蒙Next flutter中录音openRecorder无法调通

HarmonyOS鸿蒙Next flutter中录音openRecorder无法调通

  1. 问题描述

flutter项目的FlutterSoundRecorder的openRecorder()调不通

注:已参考flutter的鸿蒙录音官方文档配置GitCode - 全球开发者的开源社区,开源代码托管平台

  1. 问题详情

官方openRecorder的逻辑如下,代码能执行到FS:—> openAudioSession,但执行不到FS:<— openAudioSession

Future<FlutterSoundRecorder?> openRecorder() async {
  if (_isInited != Initialized.notInitialized) {
    return this;
  }

  FlutterSoundRecorder? r;
  _logger.d('FS:---> openAudioSession ');
  await _lock.synchronized(() async {
    r = await _openAudioSession();
  });
  _logger.d('FS:<--- openAudioSession ');
  return r;
}

更多关于HarmonyOS鸿蒙Next flutter中录音openRecorder无法调通的实战教程也可以访问 https://www.itying.com/category-92-b0.html

2 回复

在HarmonyOS Next中,Flutter的录音功能需使用鸿蒙原生API实现。openRecorder无法调通是因为Flutter插件尚未适配鸿蒙Next架构。当前需通过FFI调用鸿蒙音频服务接口,使用AudioCapturer类进行音频采集。具体需配置音频参数并申请ohos.permission.MICROPHONE权限,通过AudioStreamInfo构建采集实例。注意鸿蒙Next的API与安卓有差异,需参考鸿蒙Audio开发文档重新实现录音模块。

更多关于HarmonyOS鸿蒙Next flutter中录音openRecorder无法调通的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


根据问题描述,openRecorder() 方法卡在 _openAudioSession() 调用阶段,说明录音会话初始化失败。可能的原因包括:

  1. 权限配置问题:确保在 module.json5 中正确声明音频录制权限(ohos.permission.MICROPHONE),并在应用首次使用时动态申请用户授权。

  2. 依赖版本兼容性:检查 flutter_sound 插件是否适配 HarmonyOS Next,确认 pubspec.yaml 中使用的版本与鸿蒙文档推荐一致,避免因版本不匹配导致 native 层接口调用异常。

  3. 音频资源冲突:若设备当前被其他应用占用音频输入资源(如通话中),openAudioSession 会阻塞。可尝试在调用前检测音频状态,或增加超时机制避免无限等待。

  4. 日志分析:开启 Flutter 端及 HarmonyOS 系统日志,捕获 _openAudioSession 内更详细的错误信息(如 native 层返回的异常码),以定位具体失败环节。

建议优先排查权限与依赖版本,这两者是鸿蒙环境下录音功能调通的常见阻塞点。

回到顶部