0%

Flutter android webview 页面使用麦克风问题

使用的 flutter inappwebview 以及 asw 的 chime 完成视频会议需求后
近期遇到了一个奇怪的问题
android 使用视频会议,然后麦克风没有声音;但是 iOS 却没有问题。

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