【发布时间】:2012-10-14 19:48:36
【问题描述】:
我正在使用 html5/javascript getUserMedia api 编写一个 js 应用程序,该应用程序将使用设备的摄像头(如果可用)。我正在使用 Modernizr 来检测(浏览器的)功能,如下所示:
if (Modernizr.getusermedia) {
在真正的区块内:
navigator.getUserMedia(
{ // we would like to use video but not audio
// This object is browser API specific! - some implementations require boolean properties, others require strings!
video: true,
audio: false
},
function(videoStream) {
// 'success' callback - user has given permission to use the camera
// my code to use the camera here ...
},
function() {
// 'no permission' call back
console.log("user did not give access to the camera");
}
);
这很好用。但我发现 Modernizer.getUserMedia 调用根据支持 api 的浏览器返回 true,而不是设备是否真的有摄像头。
IE。在我的带有 iSight 摄像头和当前版本 Chrome 的 MacBook 上,Modernizr.getUserMedia 返回 true,然后 navigator.getUserMedia(...) 提示允许使用摄像头。很棒
但是,在另一台没有摄像头但使用当前版本的 Chrome 的机器上,Modernizr.getUserMedia 返回 true,这意味着 navigator.getUserMedia(...) 提示允许使用设备没有的摄像头.不太好!
有谁知道是否可以检测到相机的存在?理想情况下,如果用户没有摄像头,我不想提示他们访问摄像头的权限!
干杯
内森
【问题讨论】:
-
当您允许在没有摄像头的设备上调用哪个回调(使用哪些参数)?
-
调用了成功回调,但我没有检查 arg(我上面的代码中的 videoStream)是否为空。这是一个好点,我应该检查一下。很快就会这样做,并让您知道...
标签: javascript camera getusermedia modernizr mediadevices