我在检测对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上可用。这取决于应用程序是否具有:
- 正确的用户权限
- 用户已单击"是"以弹出所述权限
- ChromeWebView是在上述操作之后实例化的
- ChromeWebView onPermissionRequest已被否决,允许摄像头访问
您应该在JavaScript中获得适当的错误消息(当调用getUserMedia时),以了解失败的位置,例如NotReadableError突出显示启动视频源的权限/无法启动视频源。始终使用适配器处理一致的错误消息:https://webrtc.github.io/adapter/adapter-latest.js
有关详细信息,请参阅以下内容:NotReadableError:无法启动源