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的用法问题
1835浏览 • 1回复 待解决
OH_Audio在使用接口OH_AudioCapturer_Start采集的时候,不走采集的回调
1928浏览 • 2回复 待解决
OH _Audio播放音频问题
2102浏览 • 1回复 待解决
HarmonyOS emitter.off 不执行会不会有问题
364浏览 • 1回复 待解决
HarmonyOS MultiHap项目运行,点击audio按钮、跳转不到audio页面,报错16000001
456浏览 • 1回复 待解决
HarmonyOS native audio 录制编译报错
187浏览 • 1回复 待解决
HarmonyOS调用 gattClient.off('BLECharacteristicChange') 项目闪退
337浏览 • 0回复 待解决
HarmonyOS 录制音频选择AudioCapturer还是AVRecorder
685浏览 • 1回复 待解决
HarmonyOS UIAbility与UIExtensionAbility的使用问题
443浏览 • 1回复 待解决
HarmonyOS AudioCapturer音频采集添加音量采集需求
213浏览 • 1回复 待解决
HarmonyOS OH_Audio 需要提供 mute 方法
404浏览 • 1回复 待解决
HarmonyOS @Export与@Style的导出问题
374浏览 • 1回复 待解决
HarmonyOS AudioRenderer和AudioCapturer支持amr格式吗
373浏览 • 1回复 待解决
HarmonyOS 使用AudioCapturer录音过程中闪退
180浏览 • 1回复 待解决
鸿蒙的Audio Kit(音频服务)有什么优势?
379浏览 • 1回复 待解决
hilog -p off 在IDE中怎么关
332浏览 • 1回复 待解决
AudioCapturer录音+AudioRenderer播放音频
1277浏览 • 1回复 待解决
HarmonyOS 与react native兼容问题
197浏览 • 1回复 待解决
CustomDialog与软键盘的问题
412浏览 • 1回复 待解决
使用AudioCapturer开发音频录制功能
1238浏览 • 1回复 待解决
安卓与鸿蒙的API映射问题
662浏览 • 1回复 待解决
HarmonyOS web组件与js交互问题(前端使用的vue)
232浏览 • 1回复 待解决
HarmonyOS 通讯录与数据库问题
197浏览 • 1回复 待解决
对于第一个问题,监听肯定是要先注册,再start,比如监听状态变化的,创建了对象处于空闲状态,如果调用start了再去注册,那状态都已经变化了,就不能监听到这个事件了,也就是说,on(‘readData’)在capture.start()前面是正确的。
关于第二个问题,on和off不需要成对存在,应该先stop,再使用off停止监听。