Skip to content
This repository has been archived by the owner on Mar 1, 2022. It is now read-only.

Demo of how to quickly suspend and resume the scanner with DataWedge on a Zebra mobile computer

License

Notifications You must be signed in to change notification settings

darryncampbell/DataWedge-Quick-Suspend-Scanner

Repository files navigation

Please be aware that this application / sample is provided as-is for demonstration purposes without any guarantee of support

DataWedge Quick Suspend Scanner

Most applications will need to temporarily disable the barcode scanner during their lifecycle. There are two ways to achieve this with DataWedge, both using the ScannerInputPlugin API: Enable / Disable or Resume / Suspend:

Enable / Disable:

Enable / Disable can be called at any time

Intent dwIntent = new Intent();
dwIntent.setAction("com.symbol.datawedge.api.ACTION");
//  Enable
dwIntent.putExtra("com.symbol.datawedge.api.SCANNER_INPUT_PLUGIN", "ENABLE_PLUGIN");
//  or Disable
dwIntent.putExtra("com.symbol.datawedge.api.SCANNER_INPUT_PLUGIN", "DISABLE_PLUGIN");
sendBroadcast(dwIntent);

Resume / Suspend:

Resume / Suspend is much quicker but Suspend can only be called when the scanner is in the SCANNING or WAITING state

Intent dwIntent = new Intent();
dwIntent.setAction("com.symbol.datawedge.api.ACTION");
//  Resume
dwIntent.putExtra("com.symbol.datawedge.api.SCANNER_INPUT_PLUGIN", "RESUME_PLUGIN");
//  or Suspend
if (okToSuspend)
    dwIntent.putExtra("com.symbol.datawedge.api.SCANNER_INPUT_PLUGIN", "SUSPEND_PLUGIN");
sendBroadcast(dwIntent);

You can determine the scanner state using the GetScannerStatus or RegisterForNotification APIs:

//  RegisterForNotification
@Override
protected void onResume()
{
    super.onResume();
    IntentFilter filter = new IntentFilter();
    filter.addAction("com.symbol.datawedge.api.NOTIFICATION_ACTION");
    filter.addCategory(Intent.CATEGORY_DEFAULT);
    registerReceiver(myBroadcastReceiver, filter);
}

private BroadcastReceiver myBroadcastReceiver = new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        if (action.equals("com.symbol.datawedge.api.NOTIFICATION_ACTION"))
        {
            if (intent.hasExtra("com.symbol.datawedge.api.NOTIFICATION"))
            {
                Bundle extras = intent.getBundleExtra("com.symbol.datawedge.api.NOTIFICATION");
                String notificationType = extras.getString("NOTIFICATION_TYPE");
                if (notificationType != null && notificationType.equals("SCANNER_STATUS"))
                {
                    //  We have received a change in Scanner status
                    String scannerStatus = extras.getString("STATUS");
                    if (scannerStatus.equals("WAITING") || scannerStatus.equals("SCANNING"))
                            okToSuspend = true;
                        else
                            okToSuspend = false;
                }
            }
        }
    }
};

A simple project to demonstrate these API calls is available from https://github.com/darryncampbell/DataWedge-Quick-Suspend-Scanner

As can be seen from the gif below or from this demo video, it is much quicker resuming the scanner compared to enabling it.

Demo gif

About

Demo of how to quickly suspend and resume the scanner with DataWedge on a Zebra mobile computer

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages