よく寄せられる質問

DataWedge 15.0

一般的なガイダンスおよび推奨事項

Q: アプリに DataWedge または EMDK を使用する必要がありますか?

A: バーコード スキャンを必要とするアプリの場合、特にアプリ開発のアプローチが簡単なため、Zebra では DataWedge を強くお勧めします。DataWedge は、既存のアプリにデータ キャプチャ機能を迅速かつ簡単に追加できるようにするものであり、すべての Zebra デバイスにプリインストールされています。DataWedge は、コーディングを必要とせずに UI を構成することによって使用できます。また、Android のインテントを介してすべての関数をプログラムで制御することもできます。詳細については、DataWedge 対 EMDK の機能比較チャートおよび「ご使用の前に」ガイドを参照してください。

Q: エミュレータでスキャン アプリをテストできますか?

A: 実際のハードウェアでアプリをテストすることをお勧めします。これが不可能な場合は、adb シェル コマンドを使用して、バーコードのスキャン時にデバイスに送信される、DataWedge によるキャプチャ データをシミュレートできます。詳細については、関連するブログ記事を参照してください。

機能と互換性

Q: デバイスの特定の DataWedge バージョンでサポートされている機能を確認するにはどうすればよいですか?

A: メインの [TechDocs] ページから [DataWedge] タイルのバージョン セレクタ ドロップダウンでバージョンを選択すると、関連する DataWedge ページに移動し、そのバージョンに固有の情報が表示されます。 "DataWedge バージョン セレクタ"
選択したバージョンが URL にも反映されます。デバイスで実行されている DataWedge のバージョンを確認するには、「どのバージョンがインストールされていますか?」を参照してください。

Q: 一部の機能が期待どおりに動作しません。なぜでしょうか?

機能マトリックスをチェックして、適切なコンポーネント バージョンが使用されていることを確認します。

Q: DataWedge は NFC をサポートしていますか?

A: いいえ。NFC は、セキュア NFC または Android の NFC API を搭載した EMDK for Android でサポートされています。

構成とセットアップ

Q: コーディングせずにアプリでデータをキャプチャするには、DataWedge をどのように構成すればよいですか?

A: DataWedge は、UI を介して構成すれば、データのキャプチャ、特定の要件に基づくデータの処理、およびプロファイルを使用して関連付けられたアプリまたはアクティビティへのデータ出力が可能になります。データをスキャンして取得するために DataWedge が呼び出されると、プロファイルによりアプリが形式に関連付けられるか、指定されたデータが追加された後、そのデータが、関連付けられているフォアグラウンド アプリに渡されます。手順に従って、新しいプロファイルを作成します。詳細については、プロファイルのセクションおよび「ご使用の前に」ガイドを参照してください。

Q: DataWedge の設定と構成を一括展開するにはどうすればよいですか?

A: DataWedge をセットアップし、デバイスで要求どおりに構成したら、設定をファイルに保存し、手動またはモバイル デバイス管理 (MDM) システムを使用して他のデバイスに配布できます。エクスポートできるファイルは 2 つあります。

  1. 構成 – すべてのプロファイルおよび関連する構成をはじめとする DataWedge 設定が含まれます。その設定は、「atawbache.db」に保存されます。
  2. プロファイル – 取得したデータのキャプチャ、処理、出力の方法など、個々のプロファイル設定が含まれます。その設定は、「dwprofile_[profileName].db」に保存されます。[profileName] は、プロファイルの名前です。詳細については、「一括展開」を参照してください。

DataWedge API の使用例

Q: アプリにスキャンをどのように組み込めばよいですか?

A: スキャナには、次の 2 つのインテント ベースのインタフェースがあります。

  1. スキャンしたデータを取得するためにAndroid の汎用インテントを使用する - これにより、DataWedge API を使用してデータをキャプチャする必要がなくなります。スキャンしたバーコード データをアプリで受信する方法については、チュートリアルを参照してください。
  2. スキャナを制御するために DataWedge API を使用する - Android インテントを使用して、DataWedge の構成設定と操作をプログラムで制御、変更、照会する機能を提供します。これにより、新規または既存の Android アプリを簡単に変更して、基盤となるハードウェアに関係なく Zebra デバイスを使用してデータを取得できるようになります。「ご使用の前に」ガイドおよびサンプル デモ アプリを参照してください。

DataWedge を使用してスキャナをインタフェースする方法に関する当社のブログ記事を参照してください。

Q: DataWedge アプリで一時的にスキャンを中断するには、どうしたらよいですか?

A: スキャナ入力プラグインを使用して、アプリのバーコード スキャナを一時的に無効にするには、次の 2 つの方法があります。

  1. 有効化/無効化- いつでも呼び出せます
  2. サスペンド/再開 - 非常に高速ですが、スキャナが SCANNING または WAITING 状態のときにのみ呼び出せます。スキャナの状態は、スキャナ ステータスの取得または通知の登録によって取得できます。

詳細およびサンプルコードについては、DataWedge を使用してアプリでスキャンをすばやくサスペンドする方法に関する当社のブログ記事を参照してください。

Q: DataWedge API は、データ キャプチャをリアルタイムで制御できますか?

A: はい。DataWedge API は、スキャナ、磁気ストライプ リーダー、RFID、シリアル/USB ポート、SimulScan、または音声を介して、データ キャプチャを動的に制御できます。

Q: 再起動後にアプリケーションから DataWedge インテント API 呼び出しを使用する方法を教えてください。

デバイスの再起動後、DataWedge がインテント要求を受け入れる準備ができるまでに、数秒の初期化時間が必要になる場合があります。正常な動作を確保するため、DataWedge ステータスの取得 API を使用して DataWedge が有効になっているかどうかを確認してから、構成を設定するか、スキャナ パラメータを変更することをお勧めします。

Q: ビジネス ユースケースに基づいて、スキャナの構成を動的に変更する方法を教えてください。

スキャナ構成を動的に変更するには、スキャナ パラメータの切り替え API を使用します。これにより、既存の DataWedge プロファイルを変更せずにスキャナ パラメータを一時的に調整できます。この API は、スキャン要件を満たしながら、変化する状況に迅速に適応する必要があるアプリケーションに特に役立ちます。

スキャナ構成を動的に変更する手順:

  1. 通知の登録 - 通知を登録することで、アプリケーションは、データ キャプチャ操作中にスキャナの状態 (アイドル、待機中、スキャン中、無効など) の更新をリアルタイムで受信できます。これには、スキャンの成功または失敗に関する更新情報、およびスキャナの有効または無効に関する更新情報が含まれます。

  2. スキャナ ステータス通知の登録 - スキャナは、スキャナ パラメータの切り替え API を呼び出す前に IDLE 状態である必要があります。これは、通知を登録することで確認できます。スキャナのステータスが対象のプロファイルと一致していることを確認するために、PROFILE_NAME エクストラをチェックすることも重要です。以下はサンプル コードの抜粋です。

    case NOTIFICATION_TYPE_SCANNER_STATUS: Log.d(TAG, "SCANNER_STATUS: status: " + b.getString("STATUS") + ", profileName: " + b.getString("PROFILE_NAME")); 
    if (b.getString("STATUS").equals("IDLE") && b.getString("PROFILE_NAME").equals("myprofile")) { //Scanner is enabled for the profile. Do something here. } else { //Ignore the status event }

    詳細については、通知登録に関するコード例を参照してください。

  3. スキャナ パラメータの切り替え - スキャナが IDLE 状態であることが確認されたら、 スキャナ パラメータの切り替え APIを使用 してスキャナパラメータを変更します。

Q: マルチスレッド アプリケーションで DataWedge インテント API を効果的に使用するにはどうすればよいですか。

DataWedge インテント API を操作するアプリケーションを開発する場合、インテントの非同期の性質により、同期が重要になります。このガイドでは、同期されていない API 呼び出しによって生じる可能性のある問題、それを防止するための戦略、および同期されたインテント処理を実装するためのベスト プラクティスを取り上げます。

問題の説明: 適切な同期を行わない場合、DataWedge インテント API を使用すると重大な問題が発生する可能性があります。複数のスレッドまたはプロセスが同時に API 呼び出しを行うと、次のような問題が発生する可能性があります。

  • 実行順序が保証されないため、同時に API を呼び出すと予測できない結果が生じる。
  • リクエストが順不同で処理され、アプリケーションの状態に不整合が生じる。
  • アプリケーション内のデータ状態に不整合が生じ、エラーや予期しない動作につながる。

ソリューション - DataWedge インテント API の同期のためのベスト プラクティス: インテントの非同期の性質を考慮すると、開発者は、DataWedge インテント API を呼び出すときに同期を確保する必要があります。

  • 複数のアクティビティまたはフラグメントを含むアプリケーションの場合:
    • アプリケーションのグローバル コンテキストでブロードキャスト レシーバを登録し、DataWedge ステータスに関連するインテント (API 結果通知、プロファイル切り替え、スキャナ ステータス、DataWedge ステータスなど) を処理します。
    • インテント API 呼び出しを管理するために、グローバル コンテキストで専用のスレッドまたはコルーチンを生成します。
    • この専用スレッドを使用してインテント API 呼び出しを実行します。
      注: アプリケーションは、後続の API 呼び出しを決定するために、インテントの結果とアプリケーションの状態を処理する必要があります。
  • 単一アクティビティ アプリケーションでは、メイン スレッドを介してインテントを送信することができます。呼び出したインテント API からの結果を受信し、アプリケーションの状態を更新して、次に呼び出す API を決定してください。

トラブルシューティング

Q: スキャンが DWDemo では動作しますが、自分のアプリでは動作しません。なぜでしょうか?

A: デフォルトでは DWDemo プロファイルが組み込まれており、スキャンしたデータをインテントを介して DWDemo アプリに送信します。スキャンしたデータを受信するには、アプリのプロファイルを構成する必要があります。プロファイルが適切な入力 (バーコード入力など) と出力 (インテント出力、キーストローク出力など) で構成されていることを確認してください。これを行う方法については、「プロファイルの管理」を参照してください。

Q: バーコードをスキャンできますが、アプリに送信されません。なぜでしょうか?

A: プロファイルがアプリに関連付けられていないか、プロファイルの入出力が正しく構成されていない可能性があります。DataWedge では、デフォルト プロファイル (Profile0) を使用してスキャンを実行しており、これによりスキャン ビームが照射されます。ただし、正しく構成されていない場合、キャプチャしたデータの出力方法がわかりません。プロファイルを作成し、適切な構成でそれをアプリに関連付けるか、適切な入出力でデフォルト プロファイル (Profile0) を構成して、スキャンされたデータをキャプチャします。


関連ガイド: