HarmonyOS鸿蒙Next中模拟器总是卡在获取录音位置,这是为啥?

HarmonyOS鸿蒙Next中模拟器总是卡在获取录音位置,这是为啥?

async start(callback: (state: number, data?: ArrayBuffer) => void) {
  let stateGroup = [audio.AudioState.STATE_PREPARED, audio.AudioState.STATE_PAUSED, audio.AudioState.STATE_STOPPED]
  if (stateGroup.indexOf(this.audioCapturer.state) === -1) {
    console.error('启动录音失败')
    callback(audio.AudioState.STATE_INVALID)
    return
  }
  await this.audioCapturer.start()
  this.isRecording = true
  let bufferSize: number = await this.audioCapturer.getBufferSize();

  while (this.isRecording) {
    let buffer = await this.audioCapturer.read(bufferSize, true)
    console.info('录音大小:' + buffer.length)
    if (buffer === undefined) {
      console.error('读取录音数据失败')
    } else {
      callback(audio.AudioState.STATE_RUNNING, buffer)
    }
  }
  callback(audio.AudioState.STATE_STOPPED)
}
使用模拟器录音时,总是这行代码:

更多关于HarmonyOS鸿蒙Next中模拟器总是卡在获取录音位置,这是为啥?的实战教程也可以访问 https://www.itying.com/category-93-b0.html

12 回复

模拟器有问题用真机试试

更多关于HarmonyOS鸿蒙Next中模拟器总是卡在获取录音位置,这是为啥?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


真机也是一样,

有一点猜测。卡着是不是因为读取操作是放到最后执行的?即录音结束才执行的读取。推测是缓存区内容太多。

我的这样的操作也是卡死。参照指南文档 将记录操作改成录制过程中循环读取、保存。我这样成功了,不知道是不是这样

async start(callback: (state: number, data?: ArrayBuffer) => void) { // 当且仅当状态为STATE_PREPARED、STATE_PAUSED和STATE_STOPPED之一时才能启动采集 let stateGroup = [audio.AudioState.STATE_PREPARED, audio.AudioState.STATE_PAUSED, audio.AudioState.STATE_STOPPED] if (stateGroup.indexOf(this.audioCapturer.state) === -1) { console.error(‘启动录音失败’) callback(audio.AudioState.STATE_INVALID) return } // 启动采集 await this.audioCapturer.start() this.isRecording = true let bufferSize: number = await this.audioCapturer.getBufferSize();

while (this.isRecording) { let buffer = await this.audioCapturer.read(bufferSize, true) console.info(‘录音大小:’ + buffer.length()) if (buffer === undefined) { console.error(‘读取录音数据失败’) } else { callback(audio.AudioState.STATE_RUNNING, buffer) } } callback(audio.AudioState.STATE_STOPPED) }

我在启动采集器后去读取一直是正常的。我最开始想在停止采集后去读取数据。那会就一直卡死在读取的那一步。

会不会有可能读不到你指定的大小,然后就卡在那等待呢?

是什么问题呀?找到原因了吗

有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html

还没有,你也是这个问题吗?

不知道怎么搞就搞好了,好想哪里都没有改,我的代码在这里:https://blog.csdn.net/qq_33200967/article/details/137060766

在HarmonyOS鸿蒙Next中,模拟器卡在获取录音位置的问题可能与以下几个因素有关:

  1. 权限问题:模拟器可能未正确获取录音权限,导致无法访问录音设备。检查模拟器的权限设置,确保录音权限已开启。

  2. 设备模拟问题:模拟器在模拟录音设备时可能存在兼容性问题。确保模拟器的版本与HarmonyOS鸿蒙Next的版本匹配,并尝试更新模拟器到最新版本。

  3. 资源占用:模拟器在运行过程中可能因资源不足而卡顿。检查模拟器的资源占用情况,关闭不必要的后台进程,释放更多资源给模拟器使用。

  4. 系统配置:模拟器的系统配置可能不足以支持录音功能。检查模拟器的硬件配置,如CPU、内存等,确保其满足录音功能的最低要求。

  5. 软件冲突:模拟器与其他软件可能存在冲突,导致录音功能无法正常使用。尝试在干净的系统中运行模拟器,排除其他软件的干扰。

  6. 日志分析:查看模拟器的运行日志,分析卡在获取录音位置的具体原因。日志中可能包含有关录音设备初始化失败或权限问题的详细信息。

  7. API调用:检查应用程序中调用录音API的方式,确保API调用正确无误。错误的API调用可能导致模拟器无法正常获取录音位置。

通过以上步骤,可以逐步排查并解决模拟器卡在获取录音位置的问题。

在HarmonyOS鸿蒙Next中,模拟器卡在获取录音位置,通常是由于以下原因:

  1. 权限问题:模拟器可能未正确获取录音权限。检查并确保在设置中授予了录音权限。
  2. 资源冲突:模拟器可能与其他应用程序或服务冲突。尝试关闭其他可能占用录音设备的程序。
  3. 模拟器配置:模拟器的音频设置可能不正确。检查模拟器的音频输入设置,确保其配置正确。
  4. 硬件支持:模拟器可能不支持某些硬件功能,导致无法正确获取录音位置。
  5. 系统更新:确保模拟器和操作系统均为最新版本,以兼容最新功能。

建议逐一排查上述问题,通常可以解决卡顿现象。

回到顶部