概要
このセクションでは、DataWedge インテント API を使用して、データをキャプチャ、処理、アプリケーションに配信する方法について説明します。アプリケーションは、構成を照会または変更するインテントを送信することによって、DataWedge API にアクセスします。API でサポートされている場合、変更は実行時に行えます。インテントのアクションとデータで、実行する DataWedge API 関数を指定します。1 回のインテント アクションで、複数の API 呼び出しを追加として送信できます。関数プロトタイプ:
Intent i = new Intent();
i.setAction("com.symbol.datawedge.api.ACTION");
i.putExtra(EXTRA_DATA, "<parameter>");
ブロードキャスト インテントを送信することにより DataWedge API への照会が実行され、ブロードキャスト インテントを介して応答が受信されます。
DataWedge API の基本
基本的な DataWedge API の使用方法:
- プロファイルの作成/既存のプロファイルの更新/単一のインテント アクションによる複数のプラグインの構成: 構成の設定 API を使用する DataWedge プロファイルによりデータ キャプチャをカスタマイズし、プロファイルの作成、プロファイルの更新、または単一インテントでの複数プラグイン (入力、処理、出力、ユーティリティ) の構成を行います。使用例:
- アプリケーション ワークフローの特定の画面内で特定のデコーダのみを有効にするようにアクティブ プロファイルを変更し、スキャン性能を向上させます。
- アプリケーションがフォアグラウンドで実行されているときに、ユーザーの優先選択に基づいてプロファイルを更新します。
- 事前構成されたプロファイルを使用し、フォアグラウンドで実行されているアプリに応じてデータをキャプチャします。
- スキャナ パラメータを変更し、トリガを 1 回押すだけでスキャン ビームを連続照射するなどの、特定のアクションを実行します。
- データ キャプチャの有効化/無効化: DataWedge の有効化 API を使用して、DataWedge スキャナとフォアグラウンド アクティビティの監視を有効/無効にします。これにより、エンタープライズ ブラウザなどの他のアプリケーションにデバイス スキャナしか使用させないようにすることができます。
- さまざまな Zebra デバイスにおける複数のスキャナ タイプのサポート: デバイスで使用可能なスキャナ タイプ (内部イメージャ、内部カメラ、接続された Bluetooth など) を取得するには、スキャナの列挙 API を使用します。これは、異なるタイプのスキャナ ハードウェアをサポートするさまざまな Zebra デバイスでアプリケーションを使用する場合に便利です。
- アプリ UI でのバーコード スキャンの開始: ソフト スキャン トリガ API を使用することにより、アプリ内のボタン タップでバーコード スキャンをトリガします。バーコード サンプル アプリを参照してください。
- 機能サポートを確認するためのバージョン情報のチェック: バージョン情報の取得 API によりデバイスの DataWedge バージョンを取得します。これにより、提供中の特定機能がデバイスでサポートされているかどうかを識別し、可用性に基づいてその機能を有効/無効にすることで、アクションを実行できます。
- 実行時のバーコード スキャナ パラメータの変更: 実行時にバーコード スキャナ パラメータを動的に変更する必要があっても、プロファイル内に保持しない場合は、スキャナ パラメータの切り替え API を使用します。たとえば、ユーザーが要求に応じてトリガを連続モードに設定できるようにするボタンをアプリケーションに用意し、デフォルトの動作として設定する必要はないため、プロファイルにこのような設定は用意しないようにすることができます。これは一時的な更新であり、「切り替え」が発生すると、プロファイルが変更されても、設定は保持されません。
- 実行時におけるバーコード スキャンの有効化/無効化または一時的なサスペンド/再開: スキャナ入力プラグインを使用して、統合バーコード スキャナ (レーザー、イメージャ、内部カメラ) を動的に制御し、アプリケーション ワークフローの特定の領域でトリガを有効/無効にするか、またはスキャンをサスペンド/再開して、スキャナを一時的にアクティブ/非アクティブにします。ステータス変更通知には、アクティブ プロファイル名が含まれます。これにより、ステータス変更が関連プロファイルに影響を与えるときにのみ、スキャナの有効化/無効化呼び出しをアプリで使用できるようになります。これは、立て続けにスキャナの状態を変更する場合に便利です。たとえば、複数のテキスト フィールドがあり、特定のテキスト フィールドがフォーカスされているときに、スキャンのサスペンドが望まれる場合などです。特定のテキスト フィールドでスキャナをサスペンドするには、スキャナ入力プラグインを使用します。
- 構成、スキャナ、およびプロファイル切り替えの変更の監視: 通知の登録/登録解除 API を使用して、構成、スキャナ、およびプロファイル切り替えに関連する変更の通知を受信するように登録/登録解除します。これらの変更は、DataWedge API 呼び出し (構成のインポート、プロファイルの切り替え、スキャナ入力プラグインなど) または DataWedge プロファイルの変更 (プロファイル自動インポートなど) によって発生する可能性があります。
- プロファイルまたは構成のインポート: 複数のプロファイルを含めることができるプロファイルまたは構成ファイルをエクスポートして、デバイスに配置した後、構成のインポート API によりプログラムで、または手動で設定をインポートできます。
- プロファイルの削除: 不要になったプロファイルは、プロファイルの削除 API で削除できます。これは、1 回限りのタスクでプロファイルを使用するアプリがある場合や、アプリを終了するときにプロファイルを削除する必要がある場合に便利です。
- 既存のプロファイルの複製: プロファイルの複製 API を使用して、既存のプロファイルのコピーを作成します。これは、アプリに必要な複数のプロファイルに共通の構成パラメータがある場合に便利ですが、各プロファイルは、わずかに異なっている可能性があります。複製後に、複製したプロファイルを構成の設定に渡して、異なる構成を設定できます。
- プロファイル リストの取得: プロファイル リストの取得 API を使用して、すべての DataWedge プロファイルを取得します。これは、アプリでプロファイル リストを照会して特定のプロファイルを検索する必要がある場合や、プロファイルを選択するためにユーザーにリストを提示する必要がある場合に便利です。アプリ起動時に DataWedge プロファイルを作成する場合、性能を向上させ、不要なファイル入出力操作を回避するために、プロファイル リストを取得し、そのプロファイルが存在するかどうかの確認を含めることができます。
- アプリケーション ワークフローに基づいたさまざまなプロファイルの使用: 別のアプリケーションに関連付けられていないプロファイルを柔軟に使用できるように、実行中にプロファイルを切り替え、アプリのアクティビティを 1 つのプロファイルにしか関連付けられない制約を克服するには、プロファイルの切り替え API を使用して、別のアプリケーションにまだ関連付けられていないプロファイルをアクティブにします。これは、たとえば、あるアクティビティ領域で PDF417 バーコードをスキャンする必要があり、別のアクティビティ領域で MSR カード データを読み取る必要がある場合など、同じアプリのアクティビティにおいて異なるプロファイルを使用する場合に役立ちます。PDF417 バーコードのスキャンに焦点を当てている場合は、SWITCH_TO_PROFILE を使用して、そのバーコード構成を含むプロファイルをアクティブにします。同様に、MSR データの読み取りに焦点を当てている場合は、SWITCH_TO_PROFILE を使用して、その MSR 構成を含むプロファイルをアクティブにします。どちらのプロファイルも、まだアプリケーションが関連付けられていない必要があります。
ベスト プラクティス
ここでは、DataWedge アプリケーション開発のガイダンスおよびベスト プラクティスについて説明します。
全般
- スキャン性能の最適化: スキャン性能を向上させるために、特定のプロファイルに関連付けられているアプリに必要のないすべてのデコーダを無効にすることをお勧めします。
- 複数のアプリ間でのプロファイル構成: DataWedge はグローバル サービスであり、デバイス上の任意のアプリケーションがこのサービスとやり取りして、任意のプロファイルを構成します。したがって、複数のアプリケーションが同じプロファイル セットを変更しようとする場合は注意が必要です。
データ キャプチャ
- アプリでのスキャンの一時的なサスペンドまたは非アクティブ化: SUSPEND_PLUGIN/RESUME_PLUGIN パラメータを指定して、スキャナ入力プラグイン API を使用します。
- サスペンド/再開ステータスの急速な変化を必要とする場合は、スキャナ入力プラグインを使用して、SCANNER_STATUS 通知を登録します。スキャナを (たとえば、プロファイル構成から、あるいは RESUME _PLUGIN または ENABLE_PLUGIN インテント API から) アクティブにすると、SCANNER_STATUS は、スキャンが実行されているかどうかに応じて、WAITING 状態と SCANNING 状態を交互にブロードキャストします。アプリでスキャンをサスペンドする動作は、SCANNING 状態および WAITING 状態のときにのみ実現できます。これらの状態をブロードキャストするときは、SUSPEND_PLUGIN パラメータを使用し、サスペンド状態のままにして、スキャナが使用できない状態を維持します。スキャンがサスペンドされると、SCANNER_STATUS は IDLE 状態をブロードキャストします。スキャナを再度アクティブにするには、RESUME_PLUGIN を使用します。
- 単一のアプリでのデータと写真のキャプチャ: 同じアプリケーションで画像の撮影とバーコード データのキャプチャができるようにするには、それを念頭にアプリケーションが設計されている必要があります。
- アプリで別個のアクティビティを追加します。1 つはバーコード スキャン用で、もう 1 つは画像撮影用です。
- 次の設定により DataWedge プロファイルを作成します。
- プロファイルを画像撮影アクティビティに関連付けます
- プロファイルのスキャンを無効にします
- 標準の Android SDK API を使用して、カメラを制御します
- アプリケーションを使用してスキャンするときは、デフォルトの DataWedge プロファイルが有効になります。
- 特定のデコーダ、処理ルール、またはその他の特殊なスキャン ニーズにアクセスする場合は、2 番目の DataWedge プロファイルを作成し、アプリのバーコード スキャン アクティビティに関連付けることができます。
- 早すぎるデータ ディスパッチ: ターミナル エミュレーション アプリを使用しているときなど、データのディスパッチが早すぎてアプリケーションで受け入れられない場合は、構成の設定の
keystroke_character_delay
を使用して、アプリに送信される各文字間に遅延を追加することで対処できます。「キーストローク出力パラメータ」セクション、および「文字間遅延の構成」セクションのコード例を参照してください。このパラメータは、アプリケーションの性能を低下させるおそれがあるため、注意して使用してください。 - DataWedge Intent API を使用して (アクティブ プロファイルの取得などの) 情報を DataWedge に照会する場合、結果インテントのアクションとカテゴリを識別するフィルタを使用して結果を受信するように、アプリを登録する必要があります。
プロファイル
- プロファイル インポート時の重複する関連アプリの存在: 現在のプロファイルとインポートされるプロファイルの間で、関連付けられたアプリが重複している場合、インポートされるプロファイルは有効になりません。たとえば、現在のプロファイル A が、関連付けられたアプリで構成されており、その同じアプリが、プロファイル B に関連付けられている場合、プロファイル B をインポートしても重複するため、そのインポートは有効になりません。同様に、あるアプリが無効アプリ リストにリストされており、その同じアプリが、インポートされるプロファイルにおいて関連付けられたアプリである場合にも、これが当てはまります。つまり、インポートは有効にならず、そのアプリは無効アプリ リストに残ります。
- プロファイルへのアクティビティ/アプリの関連付け: 1 つのプロファイルを 1 つ以上のアクティビティまたはアプリに関連付けることができます。ただし、1 つのアクティビティまたはアプリは、1 つのプロファイルにしか関連付けることはできません。アクティビティまたはアプリを 1 つ以上のプロファイルに関連付ける必要がある場合は、関連付けられるアプリを指定しない SWITCH_TO_PROFILE で対応できます。
次の例では、SWITCH_TO_PROFILE を使用する際に、SCANNER_INPUT_PLUGIN で 2 つのアクティビティを指定する方法について説明します。アクティビティ A が開始され、プロファイルの切り替え API を使用して ProfileA に切り替えます。ProfileA では SCANNER_INPUT_PLUGIN が有効になっています。その後ある時点でスキャナ プラグインが無効になり、アクティビティ B が開始され、ProfileB に関連付けられます。DataWedge が ProfileB に切り替わります。アクティビティ A は、onResume メソッドでフォアグラウンドに戻ったときに、プロファイルの切り替えを使用して再度 ProfileA に切り替え、同じ API インテントを再度使用してスキャナ プラグインを無効にして、以前の状態に戻す必要があります。確認: この API を使用すると、スキャナの実行時ステータスのみが変更されます。プロファイルが永続的に変更されることはありません。上記では、ProfileA がどのアプリケーション/アクティビティにも関連付けられていないことを前提としています。そのため、フォーカスがアクティビティ A に戻っても、自動的に ProfileA に切り替わることはありません。したがって、アクティビティ A は、onResume メソッドで再度 ProfileA に切り替える必要があります。アクティビティが一時停止すると自動的にプロファイルが切り替わるため、この API 関数をアクティビティの onResume メソッドから呼び出すことが推奨されます。
関連ガイド: