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
模拟器有问题用真机试试
更多关于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中,模拟器卡在获取录音位置的问题可能与以下几个因素有关:
-
权限问题:模拟器可能未正确获取录音权限,导致无法访问录音设备。检查模拟器的权限设置,确保录音权限已开启。
-
设备模拟问题:模拟器在模拟录音设备时可能存在兼容性问题。确保模拟器的版本与HarmonyOS鸿蒙Next的版本匹配,并尝试更新模拟器到最新版本。
-
资源占用:模拟器在运行过程中可能因资源不足而卡顿。检查模拟器的资源占用情况,关闭不必要的后台进程,释放更多资源给模拟器使用。
-
系统配置:模拟器的系统配置可能不足以支持录音功能。检查模拟器的硬件配置,如CPU、内存等,确保其满足录音功能的最低要求。
-
软件冲突:模拟器与其他软件可能存在冲突,导致录音功能无法正常使用。尝试在干净的系统中运行模拟器,排除其他软件的干扰。
-
日志分析:查看模拟器的运行日志,分析卡在获取录音位置的具体原因。日志中可能包含有关录音设备初始化失败或权限问题的详细信息。
-
API调用:检查应用程序中调用录音API的方式,确保API调用正确无误。错误的API调用可能导致模拟器无法正常获取录音位置。
通过以上步骤,可以逐步排查并解决模拟器卡在获取录音位置的问题。
在HarmonyOS鸿蒙Next中,模拟器卡在获取录音位置,通常是由于以下原因:
- 权限问题:模拟器可能未正确获取录音权限。检查并确保在设置中授予了录音权限。
- 资源冲突:模拟器可能与其他应用程序或服务冲突。尝试关闭其他可能占用录音设备的程序。
- 模拟器配置:模拟器的音频设置可能不正确。检查模拟器的音频输入设置,确保其配置正确。
- 硬件支持:模拟器可能不支持某些硬件功能,导致无法正确获取录音位置。
- 系统更新:确保模拟器和操作系统均为最新版本,以兼容最新功能。
建议逐一排查上述问题,通常可以解决卡顿现象。