在Android浏览器上检测到对getUserMedia的支持失败

detecting support for getUserMedia on Android browser fails

本文关键字:getUserMedia 支持 失败 Android 浏览器 检测      更新时间:2023-09-26

我在检测对getUserMedia的支持时遇到问题。我使用的是Android 4.2.2。

问题是,android浏览器的行为就好像它支持getUserMedia,但在使用它时,我既没有调用成功函数,也没有调用失败函数。以下代码:

    function onCameraFail(e){
        alert("Failed getting media");
    }
    if (navigator.webkitGetUserMedia) {
            alert("getMedia supported");
            navigator.webkitGetUserMedia({video:true}, function (stream) {
                alert("Got media");
            }, onCameraFail);
            alert("after getMedia");
    }else{  
        //Old device, no support for providing a photo
        alert("No support for getUserMedia");           
    }

在Android浏览器上,此代码显示弹出窗口"getUserMedia supported",但我从未收到任何弹出窗口,上面写着"Got media"或"Failed geting media"。当在Android上的Chrome中运行相同的代码时,它会说"不支持getUserMedia"

为什么会有这种行为?我认为这是检查功能支持的常见方法。

GetUseMedia在Android浏览器中不受支持。

http://caniuse.com/stream

getUserMedia(constraints,successCallBack,errorCallBack)

在errorCallBack中,检查您得到的错误。你每次都应该弄清楚确切的原因。

WebRTC功能在Android上可用。这取决于应用程序是否具有:

  1. 正确的用户权限
  2. 用户已单击"是"以弹出所述权限
  3. ChromeWebView是在上述操作之后实例化的
  4. ChromeWebView onPermissionRequest已被否决,允许摄像头访问

您应该在JavaScript中获得适当的错误消息(当调用getUserMedia时),以了解失败的位置,例如NotReadableError突出显示启动视频源的权限/无法启动视频源。始终使用适配器处理一致的错误消息:https://webrtc.github.io/adapter/adapter-latest.js

有关详细信息,请参阅以下内容:NotReadableError:无法启动源