4.1 KiB
4.1 KiB
按住说话功能调试指南
问题现象
按住说话按钮后,日志显示"开始说话"和"停止说话",但没有音频数据发送。
已添加的调试日志
1. 按住按钮时
startTalking 被调用, micEnabled: true, isRecording: false
开始说话, isTalking 设置为: true
录音未启动,开始启动录音
2. 录音启动时
=== startRecording 被调用 ===
isRecording: false
isApp: true/false
socketTask 状态: 1 (1表示已连接)
3. App 端原生录音
=== startRecord (App原生) 被调用 ===
请求录音权限
权限请求结果: {...}
录音权限已授予
开始启动原生录音器
原生录音器已启动
收到原生音频帧, isTalking: true, buffer size: xxx
✅ 发送原生音频数据到服务器
4. 小程序/H5 端录音
小程序/H5 端:设置录音监听器
启动 recorderManager
recorderManager.start 已调用
✅ 录音已开始
收到音频帧, isTalking: true, frameBuffer size: xxx
✅ 发送音频数据到服务器
音频数据发送成功
检查清单
1. WebSocket 连接状态
查看日志中的 socketTask 状态:
0= CONNECTING (连接中)1= OPEN (已连接) ✅2= CLOSING (关闭中)3= CLOSED (已关闭)
如果不是 1,说明 WebSocket 未连接成功。
2. 录音权限
App 端查看:
权限请求结果: { granted: [...], deniedAlways: [], deniedPresent: [] }
granted数组应该包含android.permission.RECORD_AUDIO- 如果在
deniedAlways或deniedPresent中,需要手动授权
3. 录音是否真正启动
查看是否有:
- App 端:
原生录音器已启动 - 小程序端:
✅ 录音已开始
如果没有,可能是:
- 权限被拒绝
- recorderManager 初始化失败
- 录音参数不支持
4. 音频帧是否产生
查看是否有:
收到音频帧或收到原生音频帧
如果没有,说明录音器没有产生音频数据。
5. isTalking 状态
查看日志中的 isTalking 值:
- 按住时应该是
true - 松开时应该是
false
如果一直是 false,说明状态没有正确更新。
常见问题及解决方案
问题1:录音权限被拒绝
现象:日志显示 录音权限被拒绝
解决:
- 进入手机设置 → 应用管理 → 找到你的应用
- 权限管理 → 麦克风 → 允许
问题2:recorderManager 未初始化
现象:日志显示 recorderManager 未初始化
解决:
- 确认 manifest.json 中
Record模块已启用 - 重新编译项目
- 检查是否在 App 端(App 端不使用 recorderManager)
问题3:WebSocket 未连接
现象:socketTask 状态: null 或不是 1
解决:
- 检查后端服务是否启动
- 检查 WebSocket URL 是否正确
- 检查 token 是否有效
问题4:音频帧不发送
现象:有 收到音频帧 但没有 发送音频数据
解决:
- 检查
isTalking是否为true - 检查
socketTask.readyState是否为1 - 确认按住按钮时没有松开
问题5:录音格式不支持
现象:录音启动失败或报错
解决: 尝试修改录音参数:
recorderManager.start({
format: 'mp3', // 改为 mp3 试试
sampleRate: 16000,
numberOfChannels: 1,
frameSize: 1 // 改小一点
});
测试步骤
-
清空控制台
-
进入语音通话页面
- 查看 WebSocket 是否连接成功
- 查看是否有
WebSocket onOpen日志
-
按住"按住说话"按钮
- 应该看到
startTalking 被调用 - 应该看到
isTalking 设置为: true - 应该看到
=== startRecording 被调用 === - 应该看到录音启动成功的日志
- 应该看到
-
保持按住 2-3 秒
- 应该看到多个
收到音频帧日志 - 应该看到多个
✅ 发送音频数据到服务器日志
- 应该看到多个
-
松开按钮
- 应该看到
停止说话, isTalking 设置为: false - 之后的音频帧应该显示
⏸️ 不发送音频数据
- 应该看到
下一步
如果按照上述步骤仍然无法工作,请:
- 截图完整的控制台日志
- 说明是在什么平台测试(App/小程序/H5)
- 说明具体卡在哪一步