Android条码扫描器与网页集成

问题描述 投票:20回答:3

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

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

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

android webpage barcode
3个回答
1
投票

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

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

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

谷歌上有很多例子。


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


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

© www.soinside.com 2019 - 2024. All rights reserved.