2012-11-12 60 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