摄像头调用,h5调用摄像头进行扫一扫插件备份

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8" />
        <title></title>
        <meta name="viewport" content="width=device-width, initial-scale=1">

    </head>

    <body>
        <video id="video" width="640" height="480" autoplay></video>
    </body>
    <script type="text/javascript">
        var promisifiedOldGUM = function(constraints) {

            // 第一个拿到getUserMedia,如果存在
            var getUserMedia = (navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia);

            // 有些浏览器只是不实现它-返回一个不被拒绝的承诺与一个错误保持一致的接口
            if (!getUserMedia) {
                return Promise.reject(new Error('getUserMedia is not implemented in this browser-getUserMedia是不是在这个浏览器实现'));
            }

            // 否则,调用包在一个旧navigator.getusermedia承诺
            return new Promise(function(resolve, reject) {
                getUserMedia.call(navigator, constraints, resolve, reject);
            });

        }

        // 旧的浏览器可能无法实现mediadevices可言,所以我们设置一个空的对象第一
        if (navigator.mediaDevices === undefined) {
            navigator.mediaDevices = {};
        }

        // 一些浏览器部分实现mediadevices。我们不能只指定一个对象
        // 随着它将覆盖现有的性能getUserMedia。.
        // 在这里,我们就要错过添加getUserMedia财产。.     
        if (navigator.mediaDevices.getUserMedia === undefined) {
            navigator.mediaDevices.getUserMedia = promisifiedOldGUM;
        }

        // Prefer camera resolution nearest to 1280x720.
        var constraints = {
            audio: true,
            video: {
                width: 1280,
                height: 720
            }
        };

        navigator.mediaDevices.getUserMedia(constraints)
            .then(function(stream) {
                var video = document.querySelector('video');
                video.src = window.URL.createObjectURL(stream);
                video.onloadedmetadata = function(e) {
                    video.play();
                };
            }).catch(function(err) {
                console.log(err.name + ": " + err.message);
            });
    </script>

</html>

可用调用摄像头

通过

catch(function(err) {
      console.log(err.name + ": " + err.message);
});可用判断是否有可使用的摄像头但是错误信息有限无法详细判断
NavigatorUserMediaError {name: "DevicesNotFoundError", message: "", constraintName: ""}
constraintName:""
message:""
name:"DevicesNotFoundError"

目前没时间详细查看先记录下来以后看

参考:http://blog.csdn.net/qq_16559905/article/details/51743588

https://developer.mozilla.org/zh-CN/docs/Web/API/MediaDevices/getUserMedia



下面是H5调用摄像头进行扫一扫的功能,https://github.com/zhiqiang21/WebComponent(开发者所有的插件)
https://github.com/zhiqiang21/WebComponent/tree/master/html5-Qrcode(扫一扫功能)
http://www.cnblogs.com/yisuowushinian/p/5145262.html
亲测有效,但是兼容性不是很好

实现是调用拍照或者调用相册获取到二维码图片,用jsqrcode进行二维码分析 地址
然后
获取到实际的二维码内写的字符串
后续实现自行可以处理

posted @ 2016-12-26 16:42  me春天  阅读(2943)  评论(0编辑  收藏  举报