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

时间:2013-08-21 12:55:49

标签: javascript webrtc getusermedia

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

问题是android浏览器就好像它支持getUserMedia,但是在使用它时,我既没有调用success函数也没有调用fail函数。 代码如下:

    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支持”,但我从未收到任何显示“已获取媒体”或“无法获取媒体”的弹出窗口。 在Android上的Chrome中运行相同的代码时,它会显示“不支持getUserMedia”

为什么会这样?我认为这是检查功能支持的常用方法。

2 个答案:

答案 0 :(得分:0)

Android浏览器不支持GetUseMedia。

http://caniuse.com/stream

getUserMedia(constraints,successCallBack,errorCallBack)

在errorCallBack中,检查您获得的错误。你应该每次都得到确切的理由。

答案 1 :(得分:0)

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

  1. 正确的用户权限
  2. 用户单击“是”以显示权限弹出窗口
  3. 上述之后实例化了ChromeWebView
  4. ChromeWebView onPermissionRequest已被覆盖,以允许访问摄像头

您应该在JavaScript中收到相应的错误消息(调用getUserMedia时),以了解失败的地方,例如NotReadableError突出显示权限/无法启动视频源。始终将适配器用于一致的错误消息:https://webrtc.github.io/adapter/adapter-latest.js

有关更多信息,请参见以下内容: NotReadableError: Could not start source