21

Android バーコード スキャナー アプリを Web ページに統合する方法について午前中ずっと調べていましたが、正確に知る必要がある情報が見つかりませんでした。ユーザーが Android バーコード スキャナーを使用してテキスト フィールドに入力できる Web ページが必要です。したがって、ユーザーは Web ページにいて、テキスト フィールド内をクリックするか、テキスト フィールドの横にあるボタンをクリックして Android バーコード スキャナーを起動します。次に、バーコードをスキャンすると、テキスト フィールドに入力されます。

これを行ってから別のページに移動する方法に関する解決策を見つけましたが、ユーザーが同じページにとどまることが重要です。私は zxing プロジェクトを見て、それを使用できるかもしれないと考えましたが、ページを同じままにできるかどうかはわかりません。

私はこれが可能であると確信しており、誰かがそれをどのように行うかについての高レベルの概要を教えてくれるかどうか疑問に思っています. ボタンのクリックで送信される ajax リクエストで実行できるのではないかと考えていました。ajax リクエストは私のサーバーに送信され、サーバーは Android デバイスに何かを送信し、スキャナーを起動してデータを返し、それが ajax レスポンスで返されます。ただし、サーバーを切り離して、Android ブラウザーでバーコード スキャナーを起動する方法はありますか? お時間をいただきありがとうございます。

4

3 に答える 3

27

ZXing (ゼブラ クロッシング) は、ボタン クリック イベント、アンカー タグ、またはモバイル デバイスで URL を呼び出すことができるその他のアクションを通じて Web ページを介してバーコード スキャナーを開始する機能を提供します。

バーコード スキャナー アプリケーションが 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

于 2012-11-25T21:18:47.037 に答える
7

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>

参考:リンク先を読む

于 2016-06-15T11:55:23.540 に答える
1

javascript インターフェイスと loadurl(javascript...) を使用すると、Android から Web ページと通信できます。

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

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

グーグルにはたくさんの例があります。

于 2012-11-12T16:22:50.970 に答える