SimulScan パラメータの切り替え

DataWedge 11.0

SWITCH_SIMULSCAN_PARAMS

DataWedge 6.8 で導入。

1 つ以上の SimulScan パラメータをバンドルとして渡し、アクティブ プロファイルの設定を一時的に更新するために使用します。この API を使用すると、条件の変更に応じて SimulScan 設定をいつでも変更できます。たとえば、開発者は、当日いつでも、または条件の変化に応じて、入力テンプレートや領域セパレータをアプリのプログラムで変更できるようにしたいと考えるかもしれません。

: この API によって構成された設定は、次にプロファイルを切り替えたときに破棄されます。

関数プロトタイプ

Intent i = new Intent();
i.setAction("com.symbol.datawedge.api.ACTION");
i.putExtra("com.symbol.datawedge.api.SWITCH_SIMULSCAN_PARAMS", [bundle]);

パラメータ

ACTION [String]: "com.symbol.datawedge.api.ACTION"

EXTRA_DATA [String]: "com.symbol.datawedge.api.SWITCH_SIMULSCAN_PARAMS"

EXTRA_DATA [bundle]: "<名前, 値>" - 次の SimulScan パラメータを名前と値のペアとして受け入れます。

  • simulscan_input_source [string] - データ キャプチャ用の入力デバイス。指定可能な値:
    • 「Default」 - システムで選択されたデフォルトのスキャン デバイスを受け入れます
    • 「Camera」 - メイン デバイスのカメラを選択します
    • 「Imager」 - デバイスの内部イメージャを選択します
  • simulscan_trigger_mode [string] - SimulScan のハードウェア トリガの有効化/無効化。指定可能な値:
    • 「0」 - ハードウェア トリガを無効にします
    • 「1」 - ハードウェア トリガを有効にします (デフォルト)
  • simulscan_template [string] - 使用する XML テンプレートのファイル名 (「BankCheck.xml」など)。ファイルは、デバイス上の /enterprise/device/settings/datawedge/templates フォルダに存在する必要があります。
  • simulscan_region_separator [string] - データ領域間のセパレータとして挿入される文字。指定可能な値:
    • 「NONE」 (デフォルト)
    • 「TAB」 - タブ文字
    • 「LF」 - ライン フィード
    • 「CR」 = キャリッジ リターン
  • simulscan_log_dir [string] - SimulScan ログをデバイスに保存するためのデフォルトのフォルダ パス (/storage/emulated/0/simulscan/logs) を変更します。: SimulScan ログ機能は、使用中の SimulScan テンプレートによって有効/無効にされ、DataWedge では制御されていません。
  • simulscan_enable_timestamp [string] - 取得したデータとともにタイムスタンプ yyyy-mm-dd hh:mm:ss の自動挿入を有効/無効にします。指定可能な値:
    • true
    • false (デフォルト)
  • simulscan_template_params [bundle] - 選択したテンプレートに基づくユーザー定義のカスタム パラメータのバンドル。指定可能な値:
    • dymanic_quantity - 1 回のスキャンでデコードするバーコードの数 (1 ~ 99、デフォルト = 5)

SimulScan パラメータについての詳細を参照してください。

結果コード

DataWedge は、アプリにインテント エクストラ (SEND_RESULT および COMMAND_IDENTIFIER) が含まれている場合、次のエラー コードを返し、DataWedge の結果インテント メカニズムを使用してアプリで結果を取得できるようにします。以下のを参照してください。

  • VALUE_ALREADY_SET - パラメータが設定されていません。同じ値が以前に存在しています
  • PARAMETER_INVALID - 指定された SimulScan パラメータが無効か、認識されていません
  • VALUE_INVALID - SimulScan パラメータに指定された値が無効です

詳細については、結果コード ガイドを参照してください。


コード例

以下のコードでは、アクティブ プロファイル内の現在のスキャナ用の SimulScan パラメータを切り替えるインテントを渡す方法を示しています。切り替えの結果を検証する (またはエラーが予想される場合) には、インテント エクストラの SEND_RESULT および COMMAND_IDENTIFIER を包含して、結果を取得します (これも示されています)。

//Create param bundle
Bundle paramBundle = new Bundle();
paramBundle.putString("simulscan_input_source", ”Camera”);
paramBundle.putString("simulscan_template", ”BankCheck.xml”);

//add dynamic parameters bundle
Bundle templateParamsBundle = new Bundle();
templateParamsBundle.putString("dynamic_quantity",”3”);
paramBundle.putBundle("simulscan_template_params",templateParamsBundle);
paramBundle.putString("simulscan_region_separator", “TAB”);
paramBundle.putString("simulscan_log_dir",”/storage/emulated/0/simulscan/logs”);
paramBundle.putString("simulscan_enable_timestamp", “true”);

Intent i = new Intent();
i.setAction("com.symbol.datawedge.api.ACTION");
i.putExtra("com.symbol.datawedge.api.SWITCH_SIMULSCAN_PARAMS", paramBundle);

//request and identify the result code
i.putExtra("SEND_RESULT","true");
i.putExtra("COMMAND_IDENTIFIER","123456789");//user specified unique id
this.sendBroadcast(i);

結果の受信

//get the results
BroadcastReceiver resultReceiver =  new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String command = intent.getStringExtra("COMMAND");
        String commandIdentifier = intent.getStringExtra("COMMAND_IDENTIFIER");
        String result = intent.getStringExtra("RESULT");

    Bundle bundle;
    String resultInfo = "";
    if(intent.hasExtra("RESULT_INFO")){
        bundle = intent.getBundleExtra("RESULT_INFO");
        Set<String> keys = bundle.keySet();
        for (String key: keys) {
            Object object = bundle.get(key);
            if(object instanceof String){
                resultInfo += key + ": "+object+ "\n";
            }
            else if(object instanceof String[]){
                String[] codes = (String[])object;
                for(String code : codes){
                    resultInfo += key + ": "+code+ "\n";
                }
            }
        }
    }

    String text = "Command: "+command+"\n" +
            "Result: " +result+"\n" +
            "Result Info: " +resultInfo + "\n" +
            "CID:"+commandIdentifier;

        Log.d("TAG",text);

    }
};

注意事項

前提条件と仮定:

  • DataWedge とそれぞれのプロファイルは、有効になっている必要があります
  • アクティブ プロファイルで SimulScan 入力を有効にする必要があります
  • インテントに、無効な、またはサポートされていないスキャナ パラメータや値が含まれている場合は、結果コードが送信されます

関連項目:

SimulScan パラメータ | DataWedge の SimulScan 入力パラメータのガイド

SimulScan ユーザー ガイド | SimulScan の完全なドキュメントおよびユーザー ガイド

Zebra Support Central | インテグレータ ガイド、製品マニュアル、ソフトウェア ダウンロードおよびサポート

LaunchPad | Zebra 開発者コミュニティ

インテント | Android 開発者

インテントおよびインテント フィルタ | Android 開発者

Android インテント | チュートリアル