RecordWav
RecordWav copied to clipboard
stop() called on an uninitialized AudioRecord.
线上挺多这个报错..
这个大多是没有权限导致的,你在使用之前有做权限检查么 后续我将在类库中完善权限检查和异常回调
有得,所以我才好奇怪,用户是反馈之前好好的,突然不行,重启下手机部分用户又好了,会跟音轨焦点有关系吗

报错点 是 AudioRecord.stop() 中判断 mState != STATE_INITIALIZED,而 mState 会在初始化完成的时候 置为 STATE_INITIALIZED。所以 最终原因还是 AudioRecord 没有成功初始化。 至于初始化失败的原因: 一个是没有 RECORD_AUDIO 权限, 还有 一些配置项 (百度:使用 MediaRecorder.AudioSource.REMOTE_SUBMIX 等 不开放给非系统应用等参数)会导致初始化失败。 我把这块的异常完成的throw 出来,你到时候看下具体报错原因吧。
类库 在 stop 的时候才爆出这个问题,是因为 start 的时候把异常 吞掉了,这块处理的不好。 我稍后会更新类库~
我也是查到相关原因,暂时处理是都是把异常throw上报再定位,判断是有其他应用影响的感觉

com.maple.recorder.recording.WavRecorder.randomAccessFile(WavRecorder.java:52) 这个有发送,也给你看 发现系统:android9~android11 已使用XXPermissions:15.0获取了存储读写和录音权限
这个是文件or目录找不到呀,你看下错误机型的 /audio 目录存在么, 在 传 file 之前,先 file.mkdirs() 一下吧
有得..前面有做判断的,

这个报错是在AudioRecord的构造方法初始化,调用native_setup失败引起的。
只有系统初始化方法成功,才会将mState = STATE_INITIALIZED;
在类库的初始化过程中有是否成功的判定。如果 getState() != AudioRecord.STATE_INITIALIZED 就抛异常了,所以你应该捕获该初始化异常,并判断 是不是 有些初始化参数 在 特定设备上不支持。
这个报错是在AudioRecord的构造方法初始化,调用native_setup失败引起的。 只有系统初始化方法成功,才会将mState = STATE_INITIALIZED;
在类库的初始化过程中有是否成功的判定。如果 getState() != AudioRecord.STATE_INITIALIZED 就抛异常了,所以你应该捕获该初始化异常,并判断 是不是 有些初始化参数 在 特定设备上不支持。
这边用户反馈是,有时可以有时不行,不行时候重启下手机就好了,这个会不会跟音频焦点有关系
你可以收集汇总一下出现该问题的设备机型和系统版本。 AudioRecord 初始化失败的原因应该是 有个进程占用了音频通道。 lib库调用stop会 audioRecord.release() 释放资源,应该没啥问题。但不排除 录音过程中 或者 暂停时,app 被杀死导致没有释放。更可能的是 手机其他app 占用了音频通道,导致 我们app 无法使用。
所以打算出现这个异常可以尝试手动重新获取焦点,看看会不会好很多