チュートリアル - スキャンしたバーコード データを Java で受信する方法

スキャンしたバーコード データを Android インテントを介して受信する方法について説明します。

ソースのダウンロード

製品

DataWedge - 11.0

デバイス

サポートされているすべての Zebra Android デバイス

概要

このチュートリアルでは、DataWedge を使用して、スキャンしたバーコード データをサンプル アプリケーション BasicIntent1 で Android インテントを介して受信する方法を示します。大まかな手順は、以下のとおりです。

  1. DataWedge を構成します。入力 (バーコード スキャナ)と出力 (インテント) を設定します。
  2. プロファイルを作成し、アプリをプロファイルに関連付けます。
  3. アプリを実行し、バーコードをスキャンします。

このサンプル アプリケーションは、DataWedge インテント API の使用方法のデモのための教育目的専用です。

以上は、DataWedge API ではなく、Android の汎用インテントを使用した最小限のコード アプローチです。DataWedge の設定とデータ キャプチャを詳細に制御するアプリを開発するには、「DataWedge API」ガイドおよび「ご使用の前に」ガイドのベスト プラクティスを参照してください。

手順

  1. DataWedge を起動します。アプリ メニューで [DataWedge] をタップします。
  2. 新しいプロファイルを作成し、アプリをプロファイルに関連付けます。「新しいプロファイルの作成」の手順に従います。または、Profile0 (プロファイルが明示的に割り当てられていないすべてのアプリで使用されるデフォルト プロファイル) を使用することもできます。サンプル アプリを使用して特定のプロファイルに関連付ける場合は、アプリ名 “com.zebra.basicintent1” を選択します。
  3. プロファイルで以下の設定が有効になっていることを確認します。
    • プロファイル
    • バーコード入力
    • インテント出力
  4. [インテント出力] を以下のように構成します。_ インテント アクション: com.basicintent1.ACTION
    これは、DataWedge によって送信される暗黙的なインテントです。このインテントを受信するために、アプリケーションで、特定のアクションにブロードキャスト レシーバを登録する必要があります。このチュートリアルで BasicIntent1 サンプルとともに使用するもの: com.basicintent1.ACTION _ インテント カテゴリ: (空白のまま) * インテント配信: ブロードキャスト インテント これらの設定の詳細については、DataWedge の「インテント出力」ガイドを参照してください。
  5. サンプル アプリ BasicIntent1 をダウンロードし、ビルドして起動します。
  6. バーコードをスキャンします。
  7. スキャンしたデータが表示されます。

サンプル コードの説明

BasicIntent1 サンプル アプリのソース コードを参照してください。

DataWedge から送信されたインテント データをアプリで確実に受信するための重要な手順がいくつかあります。

  1. スキャンしたデータを抽出するときに使いやすいように、アプリケーション プロジェクトでいくつかの文字列を事前に定義します。インテント アクションは、サンプル アプリで「activity_intent_filter_action」として定義されています。受信時に、インテントのアクションには、DataWedge の「インテント出力」ガイドで説明しているように、スキャン データのソース、タイプ、およびデータを指定したエクストラが含まれます。サンプル アプリの Strings.xml の内容を以下に示します。
        <resources>
            <string name="app_name">DW BasicIntent1</string>
            <string name="activity_intent_filter_action">com.dwbasicintent1.ACTION</string>
            <string name="datawedge_intent_key_source">com.symbol.datawedge.source</string>
            <string name="datawedge_intent_key_label_type">com.symbol.datawedge.label_type</string>
            <string name="datawedge_intent_key_data">com.symbol.datawedge.data_string</string>
        </resources>
    
  2. ブロードキャスト レシーバを登録します。DataWedge はブロードキャスト インテントを送信するように構成されているため、アプリケーションでブロードキャスト レシーバを登録する必要があります。これは、サンプル アプリの onCreate() メソッドで行います。 protected void onCreate(Bundle savedInstanceState) { IntentFilter filter = new IntentFilter(); filter.addCategory(Intent.CATEGORY_DEFAULT); filter.addAction(getResources().getString(R.string.activity_intent_filter_action)); registerReceiver(myBroadcastReceiver, filter); }

フィルタされるアクションは、DataWedge プロファイルに構成されたアクションと一致していることに注意してください。実稼働アプリケーションでは、効率化のために、登録/登録解除は onResume()/onPause() メソッドで実行される可能性があります。3.ブロードキャスト レシーバを定義します。これは、サンプル アプリの MainActivity.java で行われます。

    private BroadcastReceiver myBroadcastReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
            Bundle b = intent.getExtras();

            if (action.equals(getResources().getString(R.string.activity_intent_filter_action))) {
                //  Received a barcode scan
                try {
                    displayScanResult(intent, "via Broadcast");
                } catch (Exception e) {
                    //  Catch if the UI does not exist when we receive the broadcast
                }
            }
        }
    };
  1. スキャンしたデータを抽出し、画面に表示します。これは、サンプル アプリの displayScanResult() メソッドで行われます。
        private void displayScanResult(Intent initiatingIntent, String howDataReceived)
        {
            String decodedSource = initiatingIntent.getStringExtra(getResources().getString(R.string.datawedge_intent_key_source));
            String decodedData = initiatingIntent.getStringExtra(getResources().getString(R.string.datawedge_intent_key_data));
            String decodedLabelType = initiatingIntent.getStringExtra(getResources().getString(R.string.datawedge_intent_key_label_type));
    
        final TextView lblScanSource = (TextView) findViewById(R.id.lblScanSource);
        final TextView lblScanData = (TextView) findViewById(R.id.lblScanData);
        final TextView lblScanLabelType = (TextView) findViewById(R.id.lblScanDecoder);
    
        lblScanSource.setText(decodedSource + " " + howDataReceived);
        lblScanData.setText(decodedData);
        lblScanLabelType.setText(decodedLabelType);
    }
    

エクストラ キーは、strings.xml ファイルで以前に定義されていることに注意してください。このコードは、サンプル アプリで実行したように、データを配置する UI が存在することを前提としています。


関連ガイド: