Android条码扫描器与网页集成

时间:2012-11-12 16:07:55

标签: android webpage barcode

我整个上午一直在研究将android条形码扫描仪应用程序集成到网页中,但还没有找到我需要知道的内容。我希望有一个网页,用户可以使用Android条形码扫描仪填写文本字段。因此,用户将在网页上,并在文本字段内单击或单击文本字段旁边的按钮,该按钮将启动Android条形码扫描程序。然后他们将扫描条形码并填写文本字段。

我找到了如何执行此操作的解决方案,然后转到其他页面,但用户必须停留在同一页面上。我已经看过zxing项目,并认为可以使用,但我不确定它是否允许页面保持不变。

我很确定这是可能的,并且想知道是否有人可以给我一个关于他们如何做的高级概述。我认为可以通过点击按钮提交的ajax请求来完成。 ajax请求将被发送到我的服务器,服务器会向Android设备发送一些内容,启动扫描程序并返回数据,然后在ajax响应中返回。有没有办法切断服务器,只是让Android浏览器启动条码扫描器?感谢您的时间,我感谢您的任何讨论。

3 个答案:

答案 0 :(得分:21)

ZXing(斑马线)提供了通过网页通过按钮点击事件,锚标记或其他可以在移动设备上调用URL的操作启动条形码扫描程序的功能。

当条形码扫描仪应用程序安装在Android设备上时,URL调用:

zxing://scan/?ret=http://foo.com/products/{CODE}/description&SCAN_FORMATS=UPC_A,EAN_13

将调出设备条形码阅读器,用户扫描代码,并通过zxing URL中提供的回调URL参数返回代码。

您可以在此处查看示例(适用于Android):http://zxing.appspot.com/scan

答案 1 :(得分:6)

您可以尝试使用Android:

  

您可以使用Zxing库进行网页条形码扫描

 <!DOCTYPE html>
    <script type="text/javascript">
    //This entire block of script should be in a separate file, and included in each doc in which you want scanner capabilities
        function zxinglistener(e){
            localStorage["zxingbarcode"] = "";
            if(e.url.split("\#")[0] == window.location.href){
                window.focus();
                processBarcode(decodeURIComponent(e.newValue));
            }
            window.removeEventListener("storage", zxinglistener, false);
        }
        if(window.location.hash != ""){
            localStorage["zxingbarcode"] = window.location.hash.substr(1);
            self.close();
            window.location.href="about:blank";//In case self.close is disabled
        }else{
            window.addEventListener("hashchange", function(e){
                window.removeEventListener("storage", zxinglistener, false);
                var hash = window.location.hash.substr(1);
                if (hash != "") {
                    window.location.hash = "";
                    processBarcode(decodeURIComponent(hash));
                }
            }, false);
        }
        function getScan(){
            var href = window.location.href.split("\#")[0];
            window.addEventListener("storage", zxinglistener, false);
            zxingWindow = window.open("zxing://scan/?ret=" + encodeURIComponent(href + "#{CODE}"),'_self');
        }

    </script>

    <html>
        <head>
            <script type="text/javascript">
                function processBarcode(b){
                    var d = document.createElement("div");
                    d.innerHTML = b;
                    document.body.appendChild(d);
                }
            </script>
        </head>
        <body>
            <button onclick="getScan()">get Scan</button>
        </body>
    </html>

供参考:Read link

答案 2 :(得分:1)

使用javascript界面​​和loadurl(javascript ...),您可以通过Android与您的网页进行通信

public void loadScript(String script){      
    webview.loadUrl("javascript:(function() { " + script + "})()");             
}

private class JavaScriptInterface {     
    public void startQRScan() {
        ...
    }
}

google上有很多例子。