xamarin 斑马WS50扫描事件的IntenFilter

lh80um4z  于 2023-08-01  发布在  其他
关注(0)|答案(1)|浏览(76)

我曾经有一个Zebra扫描器设备运行在注册了BroadcatReceiver事件的地方

var filter = new IntentFilter("com.rs5100.data");

RegisterReceiver(receiver, filter);

字符串
在dataWedge应用程序中定义了操作字符串,并收到了扫描事件。
现在我试图让它在zebra ws 50设备上运行,但我不知道注册BroadcastReceiver到什么操作。扫描logcat时发出:
接收的扫描仪数据:Bundle[{com.motorolasolutions.emdk。数据楔。source = scanner,com.符号数据楔。source=scanner,com.符号数据楔。label_type=LABEL-TYPE-CODABAR,com.motorolasolutions.emdk.datawedge.data_string = C9991 C,www.example.com_string = C9991 com.symbol.datawedge.data C,com.符号数据楔。scanner_identifier=INTERNAL_IMAGER,com.motorolasolutions.emdk。数据楔。label_type=LABEL-TYPE-CODABAR,com.motorolasolutions.emdk。数据楔。decode_data =[[B@b604fd],com.符号数据楔。decode_data=[[B@b604fd],com.符号数据楔。解码模式=单解码}]
但无论我尝试什么操作,应用程序都不会接收到扫描。

  • com.symbol.datawedge.api.ACTION
  • com.symbol.datawedge.DWDEMO
  • com.symbol.datawedge.intent.ACTION_DATAWEDGE_BROADCAST

或者用捆绑包做点什么因为这就是logcat发出的。捆绑{....}

ih99xse1

ih99xse11#

以编程方式将Intent发送到Zebra的Datawedge应用程序成功了。我剪下了一些设置的条形码扫描仪设置chenged

public static Intent ConfigWS50()
    {
        Bundle bMain = new Bundle();

        bMain.PutString("PROFILE_NAME", "SorterApp");
        bMain.PutString("PROFILE_ENABLED", "true");
        bMain.PutString("CONFIG_MODE", "UPDATE");

        Bundle sorterAppBundle = new Bundle();
        sorterAppBundle.PutString("PACKAGE_NAME", "com.fips.RopsSorterApp");
        sorterAppBundle.PutStringArray("ACTIVITY_LIST", new string[] { "*" });

        bMain.PutParcelableArray("APP_LIST", new Bundle[] { sorterAppBundle });

        Bundle barCodeConfig = new Bundle();
        barCodeConfig.PutString("PLUGIN_NAME", "BARCODE");
        barCodeConfig.PutString("RESET_CONFIG", "true");

        Bundle ipOutput = new Bundle();
        ipOutput.PutString("PLUGIN_NAME", "IP");
        ipOutput.PutString("RESET_CONFIG", "true");

        Bundle ipOutputProps = new Bundle();
        ipOutputProps.PutString("ip_output_enabled", "false");

        ipOutput.PutBundle("PARAM_LIST", ipOutputProps);
        bMain.PutBundle("PLUGIN_CONFIG", ipOutput);

        Bundle barCodeProps = new Bundle();
        barCodeProps.PutString("scanner_selection", "auto");
        barCodeProps.PutString("scanner_input_enabled", "true");

        barCodeConfig.PutBundle("PARAM_LIST", barCodeProps);

        Bundle bConfigIntent = new Bundle();
        Bundle intentOutput = new Bundle();
        intentOutput.PutString("intent_output_enabled", "true");
        intentOutput.PutString("intent_action", "com.device.data");
        intentOutput.PutString("intent_category", Intent.CategoryDefault);
        intentOutput.PutInt("intent_delivery", 2);

        bConfigIntent.PutString("PLUGIN_NAME", "INTENT");
        bConfigIntent.PutString("RESET_CONFIG", "true");
        bConfigIntent.PutBundle("PARAM_LIST", intentOutput);

        bMain.PutParcelableArray("PLUGIN_CONFIG", new Bundle[] { bConfigIntent, barCodeConfig });

        Intent dataWedgeIntent = new Intent();
        dataWedgeIntent.SetAction("com.symbol.datawedge.api.ACTION");
        dataWedgeIntent.PutExtra("com.symbol.datawedge.api.SET_CONFIG", bMain);

        return dataWedgeIntent;
    }

SendBroadcast(AutoConfig.ConfigWS50());

字符串
然后,每个应用都可以订阅已注册的Intent操作,并使用与com.device.data相同的字符串。

intentOutput.PutString("intent_action", "com.device.data");

相关问题