Java での基本インテント

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

ソースのダウンロード

製品

DataWedge - 15.0

デバイス

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

概要

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

  1. DataWedge を構成します。入力 (バーコード スキャナ)と出力 (インテント) を設定します。
  2. プロファイルを作成し、アプリをプロファイルに関連付けます。
  3. アプリを実行し、バーコードをスキャンします。次の情報が表示されます。
    • スキャン ソース
    • スキャン データ
    • デコーダ タイプ

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

使用している API

DataWedge API アプリの機能
なし なし

要件

  • DataWedge (すべての Zebra デバイスに組み込み済み) がデバイスで実行されていること。
  • DataWedge プロファイルが作成されており、このサンプル アプリに関連付けられていること。以下の手順を参照してください。

構成

インテントを介してスキャンを出力するように DataWedge を構成します。

  1. 「アプリ」 > 「DataWedge」 から DataWedge を起動します。

  2. プロファイル (プロファイルが明示的に割り当てられていないアプリで使用される Profile0 など) を選択するか、新しいプロファイルを作成します。

  3. このサンプル アプリにプロファイルを関連付ける方法は以下の通りです。
         a. [関連アプリ] をタップします。
         b. 右上のメニューから [新規アプリとアクティビティ] を選択します。
         c. [com.zebra.basicintent1]を選択します。
         d. [*]を選択します。

  4. 以下の設定を確認します。

    • プロファイルが有効になっている
    • バーコード入力が有効になっている
    • インテント出力が有効になっている
  5. インテント出力を以下のように構成します。

    • インテント アクション: com.dwbasicintent1.ACTION (strings.xml ファイルで定義された値と一致する必要があります。これは DataWedge によって送信される暗黙的なインテントです。このインテントを受信するために、アプリケーションで、特定のアクションにブロードキャスト レシーバを登録する必要があります。)
    • インテント カテゴリ: (空白のまま)
    • インテント配信: ブロードキャスト インテント

    これらの設定に関する詳細は、DataWedge の「インテント出力」ガイドを参照してください。

このサンプルの使用

このアプリの利用方法:

  1. BasicIntent1 サンプル アプリをダウンロードしてビルドし、起動します。img

  2. バーコードをスキャンします。データ フィールドが入力されます。img

サンプル コードの説明

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 } } } 
    };
  4. スキャンしたデータを抽出し、画面に表示します。これは、サンプル アプリの 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 が存在することを前提としています。


関連ガイド: