使用的 flutter inappwebview 以及 asw 的 chime 完成视频会议需求后
近期遇到了一个奇怪的问题
android 使用视频会议,然后麦克风没有声音;但是 iOS 却没有问题。
- 因为前两天也查了 iOS15.5 视频画面背景虚化的问题(chime 不支持 iOS16 之前的背景虚化)。然后直接就想到了先用手机浏览器试试会议链接看看界面上的表现
- 竟然发现手机浏览器可以,但是 app 就是没有声音。
- 是不是 android 麦克风权限配置错误
- 找了半天资料也试了下,发现没用,配置貌似没有问题
- 第二天真机调试看页面,然后程序是不是会报错
- 也没发现有价值的 log
- 看到 inappwebview 里面配置参数有安卓权限部分,断点试试
- 看到首次进入页面的时候,权限已经获得了 android.webkit.video 以及 audio 的权限了
androidOnPermissionRequest: (InAppWebViewController controller, String origin, List<String> resources) async {
return PermissionRequestResponse(resources: resources, action: PermissionRequestResponseAction.GRANT);}
- 看到首次进入页面的时候,权限已经获得了 android.webkit.video 以及 audio 的权限了
- 感觉有点一筹莫展了,试过了所有的可能,问题感觉指向了 webview 页面使用 microphone 权限的问题
- 问了前端是不是能看到是否获得了麦克风权限
- 然后自己在断点时候偶然发现,点击页面上的视频开关,会每次都调用上面那个代码片段,意外的惊喜
- 赶紧试了下视频按钮边上的麦克风开关,感觉找到问题了,并没有请求上面的代码,然后告知前端
- 解决
- 应该是 chime 的代码里判断了如果前端浏览器是 chromium-webview 的话,不能使用麦克风,为什么
- 然后同事看到麦克风里 android 环境可以选择多种设备,之前默认的是 Microphone 1,然后改动到 Speakerphone 就可以了。