2012-11-12 28 views
18

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

我已经找到了解决方案,如何做到这一点,然后转到不同的页面,但重要的是用户停留在同一页面上。我已经看到了zxing项目,并认为可以使用,但我不确定它是否允许页面保持不变。

我很确定这是可能的,并想知道是否有人可以给我一个关于他们如何做的高层次概述。我在想这可能可以通过单击按钮提交的ajax请求来完成。 ajax请求会发送到我的服务器,服务器会发送一些东西给android设备,它会启动扫描器并返回数据,然后将数据发送回ajax响应。有没有办法切断服务器,只需要android浏览器启动条码扫描器?感谢您的时间,我感谢您的任何讨论。

+0

是你的网页中被查看设备浏览器?或者你是否创建了一个包含WebView的准系统应用程序来显示它? – FoamyGuy

+0

感谢您的回复。我的网页正在设备浏览器中查看。我有一个已经开发的网站。我可以改变用户界面,我可以添加JavaScript。虽然我不太熟悉网络视图。他们是否可以用来显示任何网站,并且网站是否需要进行任何更改? –

+0

我也可以控制Web应用程序的服务器端,也可以在那里添加/修改。我也想说,理想情况下,用户将使用设备浏览器。 –

回答

1

使用JavaScript界面​​和使用loadURL(JavaScript的......),你可以用你的网页在Android

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

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

有很多关于谷歌的例子沟通。

+0

感谢您的回复。不太确定你的意思。我不太熟悉android方面。该startQRScan方法是否可以从网页中调用?然后,加载视图将其发送回网页? –

+1

我用这个搜索一下,看看你的意思。问题是我希望通过Android浏览器从已经开发的网站上完成这项工作,并且我可以改变的最多的是UI和额外的JavaScript。你知道这是否可以在没有网页浏览的情况下完成? –

+0

对不起,我以为你在谈论android方面。 https://github.com/phonegap/phonegap-plugins/tree/master/Android/BarcodeScanner 我知道phonegap支持barcodescanner,但我不知道具体情况。 只需完成,yes startQRScan就可以从您的网页中调用。通过窗口。“名称javascriptinterface”.startQRScan,但这意味着你将不得不在Android中编码。 如果你想我可以发布完整的Android代码。 – ePeace

17

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

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

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

将弹出装置条形码阅读器,用户扫描代码,该代码通过返回在zxing网址中提供的回调网址参数。

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

+2

Google Play应用:https://play.google.com/store/apps/details?id = com.google.zxing.client.android 常见问题解答:https://github.com/zxing/zxing/wiki/Scanning -From-Web-Pages – nepda

+0

Thanks @ michael-jasper ..你的回答帮助我开始在示例网页中集成zxing - http://mvark.blogspot.in/2016/03/how-to-scan-barcode -with-android.html – mvark

+0

回调必须是urlencoded:zxing:// scan /?ret = http%3A%2F%2Ffoo.com%2Fproducts%2F%7BCODE%7D%2F描述&SCAN_FORMATS = UPC_A,EAN_13 – nvrandow

1

你可以使用这个Android应用程序。

https://play.google.com/store/apps/details?id=com.tecit.android.barcodekbd.full&hl=en

这是一个只是一个普通的键盘,带有一个额外的漂亮的小按钮随时随地弹开条形码扫描仪。通过条形码扫描器读取的字符串会填入通常键盘输入的文本字段中。

它非常易于使用。

+0

你有没有另一个申请?导致即时通讯应用程序出现问题,特别是在扫描部分,它不会给我准确的结果。 TIA。 – Dale

+0

你有类似IOS的东西吗? –

5

你可以试试这个为Android:

可以使用斑马线库的条形码扫描网页

<!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