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方式返回结果。
起初,我们的理解是这两个是成对使用的,然而使用上发现与理解有偏差的地方:
- on('readData')写在capture.start()后面无效,写在start()前面有效,原来担心start之前订阅readData,会过早调用readData过程的问题,似乎也不存在。即违反逻辑顺序,但不会发生预期错误。
- 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
赞
收藏 0
回答 1
待解决
相关问题
系统监听注册的on和off的用法问题
1846浏览 • 1回复 待解决
OH_Audio在使用接口OH_AudioCapturer_Start采集的时候,不走采集的回调
1955浏览 • 2回复 待解决
OH _Audio播放音频问题
2125浏览 • 1回复 待解决
HarmonyOS emitter.off 不执行会不会有问题
394浏览 • 1回复 待解决
HarmonyOS MultiHap项目运行,点击audio按钮、跳转不到audio页面,报错16000001
471浏览 • 1回复 待解决
HarmonyOS native audio 录制编译报错
222浏览 • 1回复 待解决
HarmonyOS调用 gattClient.off('BLECharacteristicChange') 项目闪退
353浏览 • 0回复 待解决
HarmonyOS 录制音频选择AudioCapturer还是AVRecorder
706浏览 • 1回复 待解决
HarmonyOS OH_Audio 需要提供 mute 方法
425浏览 • 1回复 待解决
HarmonyOS UIAbility与UIExtensionAbility的使用问题
530浏览 • 1回复 待解决
HarmonyOS AudioCapturer音频采集添加音量采集需求
231浏览 • 1回复 待解决
HarmonyOS AudioRenderer和AudioCapturer支持amr格式吗
409浏览 • 1回复 待解决
HarmonyOS @Export与@Style的导出问题
389浏览 • 1回复 待解决
鸿蒙的Audio Kit(音频服务)有什么优势?
399浏览 • 1回复 待解决
HarmonyOS 使用AudioCapturer录音过程中闪退
207浏览 • 1回复 待解决
AudioCapturer录音+AudioRenderer播放音频
1300浏览 • 1回复 待解决
hilog -p off 在IDE中怎么关
362浏览 • 1回复 待解决
HarmonyOS 与react native兼容问题
240浏览 • 1回复 待解决
使用AudioCapturer开发音频录制功能
1272浏览 • 1回复 待解决
CustomDialog与软键盘的问题
425浏览 • 1回复 待解决
HarmonyOS 触摸滑动与滚动组件冲突问题
11浏览 • 1回复 待解决
HarmonyOS web组件与js交互问题(前端使用的vue)
252浏览 • 1回复 待解决
HarmonyOS 通讯录与数据库问题
222浏览 • 1回复 待解决
对于第一个问题,监听肯定是要先注册,再start,比如监听状态变化的,创建了对象处于空闲状态,如果调用start了再去注册,那状态都已经变化了,就不能监听到这个事件了,也就是说,on(‘readData’)在capture.start()前面是正确的。
关于第二个问题,on和off不需要成对存在,应该先stop,再使用off停止监听。