REGISTER_FOR_NOTIFICATION
DataWedge 6.4 で導入。
アプリを登録または登録解除して、構成、スキャナ、およびプロファイルの切り替えに関連するステータス変更の通知を、アプリで受信できるようにします。こうしたステータス変更は、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"
バンドル:
APPLICATION_NAME
- 登録するアプリのパッケージ名NOTIFICATION_TYPE
- サポートされているタイプ:CONFIGURATION_UPDATE
PROFILE_SWITCH
SCANNER_STATUS
戻り値
要求された DataWedge NOTIFICATION_TYPE
のステータスを持つバンドルを返します
EXTRA NAME: "com.symbol.datawedge.api.NOTIFICATION"
バンドル:
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 など) により無効になった場合、このステータスは、スキャナ プラグインによってブロードキャストされます。
スキャナ ステータス通知は、アクティブなプロファイル内のスキャナが有効になっている場合にのみ送信されます。
注: (現在アクティブなプロファイルの) PROFILE_NAME
は、開発者が必要なプロファイルのスキャナ イベントのみをフィルタリングできるように、SCANNER_STATUS
とともに返されます。
コード例
// 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);
// 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_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;
}
}
}
}
}
};
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 インテント | チュートリアル