HarmonyOS audio.AudioCapturer的on('readData')与off('readData')问题

​由于APP功能需要,我们使用到audio.AudioCapturer功能,早先我们使用capture.getBufferSize()与capture.read(bufferSize, true),因read提示已deprecated,于是我们更新至on('readData')与off('readData')实现同样功能。

然后我们遇到了预期外的结果,API文档显示这两个函数功能如下:

on(type: 'readData', callback: Callback<ArrayBuffer>): void

订阅监听音频数据读入回调,使用callback方式返回结果。

off(type: 'readData', callback?: Callback<ArrayBuffer>): void

取消订阅监听音频数据读入回调,使用callback方式返回结果。

起初,我们的理解是这两个是成对使用的,然而使用上发现与理解有偏差的地方:

  1. on('readData')写在capture.start()后面无效,写在start()前面有效,原来担心start之前订阅readData,会过早调用readData过程的问题,似乎也不存在。即违反逻辑顺序,但不会发生预期错误。
  2. on('readData')不需要与off('readData')成对存在,我们试过在audio.createAudioCapturer之后star之t前调用on('readData')且仅调用一次,后面多次off('readData')-stop-start-readData过程-off('readData')-stop-start-readData过程的循环中,on('readData')虽然不再被调用,但readData过程依旧会被调用。

因为我们无法得知这些是否是API设计如此我们理解有偏差,还是功能未完善所致,如果是后者,一旦该功能在后续得到完善,可能会使我们已测试无误的功能发生预期外的情况。因此提出问题,希望能得到开发指导意见。​

HarmonyOS
2024-11-12 09:00:25
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
superinsect

​对于第一个问题,监听肯定是要先注册,再start,比如监听状态变化的,创建了对象处于空闲状态,如果调用start了再去注册,那状态都已经变化了,就不能监听到这个事件了,也就是说,on(‘readData’)在capture.start()前面是正确的。

关于第二个问题,on和off不需要成对存在,应该先stop,再使用off停止监听。​

分享
微博
QQ
微信
回复
2024-11-12 15:25:24
相关问题
系统监听注册on和off用法问题
1846浏览 • 1回复 待解决
OH _Audio播放音频问题
2125浏览 • 1回复 待解决
HarmonyOS native audio 录制编译报错
222浏览 • 1回复 待解决
HarmonyOS OH_Audio 需要提供 mute 方法
425浏览 • 1回复 待解决
HarmonyOS @Export@Style导出问题
389浏览 • 1回复 待解决
AudioCapturer录音+AudioRenderer播放音频
1300浏览 • 1回复 待解决
hilog -p off 在IDE中怎么关
362浏览 • 1回复 待解决
HarmonyOS react native兼容问题
240浏览 • 1回复 待解决
使用AudioCapturer开发音频录制功能
1272浏览 • 1回复 待解决
CustomDialog软键盘问题
425浏览 • 1回复 待解决
HarmonyOS 通讯录数据库问题
222浏览 • 1回复 待解决