REGISTER_FOR_NOTIFICATION
DataWedge 6.4 で導入。DataWedge 11.2 で導入された WORKFLOW_STATUS
アプリを登録または登録解除して、構成、スキャナ、プロファイルの切り替え、バーコード強調、およびワークフロー入力に関連するステータス変更の通知を、アプリで受信できるようにします。こうしたステータス変更は、DataWedge API 呼び出し (IMPORT_CONFIG、SWITCH TO_PROFILE、SCANNER_INPUT_PLUGIN など) または DataWedge プロファイルの変更 (プロファイル自動インポートなど) によって発生する可能性があります。
関数プロトタイプ
Bundle b = new Bundle();
b.putString("com.symbol.datawedge.api.APPLICATION_NAME","com.example.MyApp");
b.putString("com.symbol.datawedge.api.NOTIFICATION_TYPE","PROFILE_SWITCH");
Intent i = new Intent();
i.setAction("com.symbol.datawedge.api.ACTION");
i.putExtra("com.symbol.datawedge.api.REGISTER_FOR_NOTIFICATION", b);
this.sendBroadcast(i);
パラメータ
ACTION [String]: "com.symbol.datawedge.api.ACTION"
EXTRA_DATA [String]: "com.symbol.datawedge.api.REGISTER_FOR_NOTIFICATION"
BUNDLE:
APPLICATION_NAME
- 登録するアプリのパッケージ名NOTIFICATION_TYPE
- サポートされているタイプ:
戻り値
要求された DataWedge NOTIFICATION_TYPE のステータスを持つバンドルを返します NOTIFICATION_TYPE
EXTRA NAME: "com.symbol.datawedge.api.NOTIFICATION"
BUNDLE:
CONFIGURATION_UPDATE
[String]:- "PROFILE_IMPORTED" "FULL_DB_IMPORTED"
- "PROFILE_NAME": "<アプリケーション パッケージ名>"
PROFILE_SWITCH
:- "PROFILE_IMPORTED" "FULL_DB_IMPORTED"
- "PROFILE_NAME": "<使用中のプロファイル名>"
SCANNER_STATUS
:- WAITING – スキャナは有効になっており、物理的トリガまたは SOFT_SCAN_TRIGGER インテントを使用してスキャンする準備ができています。
- SCANNING – スキャナがスキャン ビームを照射し、スキャンが進行中です。この場合、アプリケーションでは必要に応じて他のコントロールを無効にすることができます。
- CONNECTED – Bluetooth スキャナがデバイスに接続され、アプリケーションで有効 (または無効) にすることができるようになりました。現在アクティブなプロファイルでは、スキャナの選択を [自動] に設定する必要があります。
- DISCONNECTED – Bluetooth スキャナがデバイスから切断されました。この状態でスキャナを有効または無効にするインテントを送信すると、現在のデフォルト スキャナが有効または無効になります。
- IDLE – スキャナは、「有効になっているが、まだ待機状態ではない」、「インテントにより中断状態になっている (SUSPEND_PLUGIN など)」、または「ハードウェア トリガのために無効になっている」のいずれかの状態にあります。
- DISABLED – スキャナは無効になっています。アクティブなプロファイルが手動で無効になった場合、またはスキャナがインテント (DISABLE_PLUGIN など) により無効になった場合、このステータスは、スキャナ プラグインによってブロードキャストされます。
WORKFLOW_STATUS
- 「ワークフロー」とは、ワークフロー入力(例えば、身分証明書のスキャン、ナンバー プレートの読み取り、など) またはバーコード強調に関連する使用法を指します。- PLUGIN_READY - ワークフロー入力プラグインまたはバーコード強調のスキャン準備ができています。この状態は、 DataWedge がワークフロー入力に関連するインテント API 呼び出しを受け入れる準備ができたことをユーザーに通知します。この状態の前にインテント API 呼び出しが DataWedge に送信されると、未定義の動作が発生します。デバイスを再起動すると、ワークフロー入力の初期化に数秒かかることがあります。
- DISABLED - 選択したワークフローは無効です。アクティブなプロファイルが手動で無効になった場合、またはスキャナがインテントにより無効になった場合に、このステータスはワークフロー入力プラグインによってブロードキャストされます。
- WORKFLOW_READY - ワークフロー入力プラグインまたはバーコード強調が有効で、選択したワークフローは有効化の処理中ですが、まだ完全に有効になっていません。
- WORKFLOW_ENABLED - ワークフロー入力プラグインまたはバーコード強調が有効で、選択したワークフローも有効で、セッションの開始を待機しています。
- SESSION_STARTED - ワークフローの準備が完了し、ユーザーがスキャンのトリガを押すのを待っています。
- CAPTURING_STARTED - ビューファインダが起動しました。ユーザーは、対象を視野に入れてデータを取得できます。
- CAPTURING_STOPPED - ビューファインダが停止し、ステータスは直ちに SESSION_STARTED 状態に戻ります。
スキャナ ステータス通知は、アクティブなプロファイル内のスキャナが有効になっている場合にのみ送信されます。
注: (現在アクティブなプロファイルの) PROFILE_NAME
は、開発者が必要なプロファイルのスキャナ イベントのみをフィルタリングできるように、SCANNER_STATUS
とともに返されます。
コード例
void registerUnregister() {
// TO REGISTER AN APP TO RECIEVE NOTIFICATIONS
// Register for notifications - PROFILE_SWITCH
Bundle b = new Bundle();
b.putString("com.symbol.datawedge.api.APPLICATION_NAME", "com.example.intenttest");
b.putString("com.symbol.datawedge.api.NOTIFICATION_TYPE", "PROFILE_SWITCH");
Intent i = new Intent();
i.setAction("com.symbol.datawedge.api.ACTION");
i.putExtra("com.symbol.datawedge.api.REGISTER_FOR_NOTIFICATION", b); // (1)
this.sendBroadcast(i);
// To unregister, change only the iPutExtra command
Bundle b = new Bundle();
b.putString("com.symbol.datawedge.api.APPLICATION_NAME", "com.example.intenttest");
b.putString("com.symbol.datawedge.api.NOTIFICATION_TYPE", "PROFILE_SWITCH");
Intent i = new Intent();
i.setAction("com.symbol.datawedge.api.ACTION");
i.putExtra("com.symbol.datawedge.api.UNREGISTER_FOR_NOTIFICATION", b);
this.sendBroadcast(i);
// Register for notifications - SCANNER_STATUS
Bundle b = new Bundle();
b.putString("com.symbol.datawedge.api.APPLICATION_NAME", "com.example.intenttest");
b.putString("com.symbol.datawedge.api.NOTIFICATION_TYPE", "SCANNER_STATUS");
Intent i = new Intent();
i.setAction("com.symbol.datawedge.api.ACTION");
i.putExtra("com.symbol.datawedge.api.REGISTER_FOR_NOTIFICATION", b);//(1)
this.sendBroadcast(i);
// To unregister, change only the iPutExtra command
Bundle b = new Bundle();
b.putString("com.symbol.datawedge.api.APPLICATION_NAME", "com.example.intenttest");
b.putString("com.symbol.datawedge.api.NOTIFICATION_TYPE", "SCANNER_STATUS");
Intent i = new Intent();
i.setAction("com.symbol.datawedge.api.ACTION");
i.putExtra("com.symbol.datawedge.api.UNREGISTER_FOR_NOTIFICATION", b);
this.sendBroadcast(i);
// Register for notifications - WORKFLOW_STATUS
Bundle b = new Bundle();
b.putString("com.symbol.datawedge.api.APPLICATION_NAME", "com.example.intenttest");
b.putString("com.symbol.datawedge.api.NOTIFICATION_TYPE", "WORKFLOW_STATUS");
Intent i = new Intent();
i.setAction("com.symbol.datawedge.api.ACTION");
i.putExtra("com.symbol.datawedge.api.REGISTER_FOR_NOTIFICATION", b);//(1)
this.sendBroadcast(i);
// Unregister for notifications - WORKFLOW_STATUS
Bundle b = new Bundle();
b.putString("com.symbol.datawedge.api.APPLICATION_NAME", "com.example.intenttest");
b.putString("com.symbol.datawedge.api.NOTIFICATION_TYPE", "WORKFLOW_STATUS");
Intent i = new Intent();
i.setAction("com.symbol.datawedge.api.ACTION");
i.putExtra("com.symbol.datawedge.api.UNREGISTER_FOR_NOTIFICATION", b);
this.sendBroadcast(i);
}
// TO RECIEVE NOTIFICATIONS
public static final String NOTIFICATION_ACTION = "com.symbol.datawedge.api.NOTIFICATION_ACTION";
public static final String NOTIFICATION_TYPE_SCANNER_STATUS = "SCANNER_STATUS";
public static final String NOTIFICATION_TYPE_PROFILE_SWITCH = "PROFILE_SWITCH";
public static final String NOTIFICATION_TYPE_WORKFLOW_STATUS = "WORKFLOW_STATUS";
public static final String NOTIFICATION_TYPE_CONFIGURATION_UPDATE = "CONFIGURATION_UPDATE";
private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.d(TAG, "#DataWedge-APP# Action: " + action);
if (action.equals(NOTIFICATION_ACTION)) {
if (intent.hasExtra("com.symbol.datawedge.api.NOTIFICATION")) {
Bundle b = intent.getBundleExtra("com.symbol.datawedge.api.NOTIFICATION");
String NOTIFICATION_TYPE = b.getString("NOTIFICATION_TYPE");
if (NOTIFICATION_TYPE != null) {
switch (NOTIFICATION_TYPE) {
case NOTIFICATION_TYPE_SCANNER_STATUS:
Log.d(TAG, "SCANNER_STATUS: status: " + b.getString("STATUS") + ", profileName: " + b.getString("PROFILE_NAME"));
break;
case NOTIFICATION_TYPE_PROFILE_SWITCH:
Log.d(TAG, "PROFILE_SWITCH: profileName: " + b.getString("PROFILE_NAME") + ", profileEnabled: " + b.getBoolean("PROFILE_ENABLED"));
break;
case NOTIFICATION_TYPE_CONFIGURATION_UPDATE:
break;
case NOTIFICATION_TYPE_WORKFLOW_STATUS:
Log.d(TAG, "WORKFLOW_STATUS: status: " + b.getString("STATUS") + ", profileName: " + b.getString("PROFILE_NAME"));
break;
}
}
}
}
}
};
void registerReceivers() {
//to register the broadcast receiver
IntentFilter filter = new IntentFilter();
filter.addAction(NOTIFICATION_ACTION);
registerReceiver(broadcastReceiver, filter);//Android method
}
void unRegisterReceivers() {
//to unregister the broadcast receiver
unregisterReceiver(broadcastReceiver); //Android method
}
関連項目:
Zebra Support Central | インテグレータ ガイド、製品マニュアル、ソフトウェア ダウンロードおよびサポート
LaunchPad | Zebra 開発者コミュニティ
インテント | Android 開発者
インテントおよびインテント フィルタ | Android 開発者
Android インテント | チュートリアル