zoukankan      html  css  js  c++  java
  • 摄像头调用,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: {
                     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进行二维码分析 地址
    然后
    获取到实际的二维码内写的字符串
    后续实现自行可以处理

  • 相关阅读:
    bzoj千题计划202:bzoj3191: [JLOI2013]卡牌游戏
    bzoj千题计划201:bzoj1820: [JSOI2010]Express Service 快递服务
    bzoj千题计划200:bzoj3106: [cqoi2013]棋盘游戏
    bzoj千题计划199:bzoj1055: [HAOI2008]玩具取名
    NOIP2017 小凯的疑惑
    Codeforces 837E. Vasya's Function
    bzoj1084: [SCOI2005]最大子矩阵
    bzoj4247: 挂饰
    Codeforces Round #276 (Div. 1) A. Bits
    bzoj千题计划196:bzoj4826: [Hnoi2017]影魔
  • 原文地址:https://www.cnblogs.com/lichuntian/p/6222871.html
Copyright © 2011-2022 走看看