xiangyuecn/Recorder

android自带浏览器没有提示,也不成功

cmsly opened this issue · 8 comments

cmsly commented

android自带浏览器环境显示支持,但是为什么录制不了呢?
是没有权限吗?点击打开录音,也不提示权限允许

啥手机,UserAgent发来瞄瞄

cmsly commented

啥手机,UserAgent发来瞄瞄

1、vivo X6Plus D
AudioContext:true
webkitAudioContext:false
mediaDevices:true
mediaDevices.getUserMedia:true
navigator.getUserMedia:true
navigator.webkitGetUserMedia:true

UA:Mozilla/5.0 (Linux; Android 5.1; vivo X6Plus D Build/LMY47I; wv) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36 VivoBrowser/6.4.1.3

2、Redmi Note 5A
AudioContext:true webkitAudioContext:false mediaDevices:true mediaDevices.getUserMedia:true navigator.getUserMedia:true navigator.webkitGetUserMedia:true UA:Mozilla/5.0 (Linux; U; Android 7.1.2; zh-cn; Redmi Note 5A Build/N2G47H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/61.0.3163.128 Mobile Safari/537.36 XiaoMi/MiuiBrowser/10.8.1

cmsly commented

@xiangyuecn 麻烦看看 多谢哈

cmsly commented

@xiangyuecn 两个手机都是点击打开录音没有反应 看浏览器的环境貌似也支持getUserMedia 在手机上用Chrome浏览器是可以的
还有手机自带浏览话筒可以录音

试了一下,只找到近似的测试机型,确实是点击打开录音没有反应。我自己的红米6pro系统更新后也是这个样子,去年写这个代码的时候测试还没有问题,我还以为是哪里哪里安全设置坏了🤦‍♂️。

根据这个表现看起来,目测是浏览器本身的问题,浏览器并未对getUserMedia权限请求做任何处理,可能的浏览器app实现代码如下(几个厂商自己造轮子并且相互"学习借鉴"):

public void onPermissionRequest(final PermissionRequest request) {
   //request.grant(授予的权限列表); 程序员注:处理起来有点废代码,还是注释掉吧,反正估计没什么人用

    //导致结果,啥也不处理,也不回调
}

😂😂 针对这种浏览器,没有发现处理的办法,检测起来又支持录音,调用起来,浏览器死活不给回调。如果浏览器给个拒绝权限的回调也不至于到这步田地。😂😂


测试详情

这个vivo X6Plus测试机自带浏览器点击始终没有回调,浏览器自己抓取音频确可以

这个红米5plus的测试机自带浏览器就算了,直接就检测到不支持:

cmsly commented

@xiangyuecn 非常感谢,这样说要做移动端浏览器录音基本上不可能全覆盖了吧?除了getUserMedia还有别的方法推荐吗?

纯粹的普通浏览器里面,好像除了getUserMedia并没有其他途径了吧😂 只能在用户提示方面做好文章。对应不支持的、长时间不能获取录音对象的,给个友好的提示比写一堆代码强很多啦。

比如:
“正在准备录音,请授予录音权限(如果一直显示此提示可能是您的浏览器不支持录音)”
"您的浏览器不支持录音,可尝试更换其他浏览器进行此操作"

我现在用到的基本上在微信和自己app里面可用性强很多,其他浏览器五花八门只能靠给点用户提示。

cmsly commented