Release Notes (Android)


Release 4/25/2024

  • Removed all embedded fonts to substantially decrease the published library's size.
    • This functionality is replaced with the "storeFonts" API method.


Release 4/25/2024

  • Added the "storeFonts" API method to that allows users to cache their own fonts. If a template was designed with one of these fonts, it will properly use the font when previewing and printing.
  • Added permissions to the AndroidManifest.xml to stay consistent with Brady's mobile application "Express Labels":
  • Fixed bug with the third-party JSON desrialization library that only existed in release builds.
  • Fixed bug when bitmap printing where multiple copies would print an incorrect amount of labels.


Release 4/4/2024

  • Now integrates the Brady Parts Database:
    • This file stores accurate label dimensions of every existing part for the supported printers. This makes both the print preview and printing more reliable and accurate.
  • Greatly improved default Bitmap Printing:
    • With the addition of the Brady Parts Database, printing an image (.png, .jpg, etc.) will now be scaled to print in the first printable zone of the installed label.
    • When printing, images should always fit on the label (should never be "cut off").
  • Improved accuracy of print preview zone drawing.
  • Added API methods to PrinterDetails:
    • getSubstrateLeftOffset() - Get's the currently installed parts left offset dimension in inches as a double.
    • getSubstrateVerticalOffset() - Get's the currently installed part's vertical offset dimension in inches as a double.
  • Added the properties SupplyLeftOffset and SupplyVerticalOffset to the API's
  • Labels designed in the Express Labels mobile app will now correctly deserialize and print.
  • Fixed a bug where an M611 printer error would "lock up" the Monitoring Engine preventing further updates or printing.
  • Fixed a bug where non-authentic M211 parts would prevent printing.
  • Fixed small PrinterDetails bugs related to the M511.


Released 1/24/2024

  • Added the disconnectWithoutForget() API method to PrinterDetails.
    • This will disconnect from the current printer without forgetting it internally allowing future auto-connects.
  • Added the forgetLastConnectedPrinter() API method to PrinterDiscovery.
    • This will clear the internally stored printer that was last connected to. This will block future auto-connects until another printer is successfully connected to.


Released 11/28/2023

  • Implemented Fit to Frame functionality with barcodes.
  • Fixed Barcode bug where barcodes were not centering after resizing if Fit to Frame is toggled off in the template.


Released 11/10/2023

  • Added an alternative API print method to allow the specification of the bitmap width and the label length when bitmap printing.
  • Added "getIsSupplyPreSized()" API method to PrinterDetails to allow the user to know if the installed part inside the connected printer is pre-sized or an alternative type such as continuous.
  • Changed PrinterUpdate Status messages back to their "key" values. These are constants that are returned from the SDK that can be used to determine what state the printer is in.
    • For Example: A user could put a conditional inside PrinterUpdate to check when the printer changes to the "disconnected" state. If printerDetails.getPrinterStatusMessage == "PrinterStatus_Disconnected" then the user could make a toast appear on the screen that says "Disconnected".
  • Fixed some small BLE view model bugs that were incorrectly triggering inaccurate Printer Updates.
  • If an attempted BLE connection results in a connection timeout, it now retries until the Bluetooth Gatt can make a valid connection.


Released 10/25/2023

  • Fixed bug where printing a bitmap to an M611 was causing crashes and scaling incorrectly.
  • Fixed bug where the print() API method was not waiting until the print job was finished to return the acurrate result.


Released 10/17/2023

  • Fixed bug where View Model was out of sync. This was causing possible connect and disconnect issues. These issues could be replicated if an app depends on receiving Printer Updates from the SDK to control other functionalities.


Released 10/11/2023

  • Add Collating property in API PrintOptions class to allow support for collating.
  • Fixed bug printing multiple copies of the same label.
  • Fixed bug printing with the CutOption EndOfJob.


Released 9/25/2023

  • Added implementation of Rotating objects.
  • Fixed M511 Disconnection bug.
  • Fixed a View Model repeated updates bug.
  • Fixed other small null errors.


Released 9/11/2023

  • Includes the removal of the Bluetooth Background Location permission.


Released 8/24/2023

  • Changed the reconnect() API method to return a boolean representing the success of the call.
  • Increased the connection timeouts which was necessary for older devices and the M611 Latimer.
  • Implemented rotation to rendered text. Example: If you have rotated an object in a BWS template, it will now render and print how it appears in BWS accurately.


Released 8/9/2023

  • Fixed the reconnect() API method
  • Fixed an issue where successfully connecting would not store the printer for later use. This was due to a JSON error and was preventing automatic connection.
  • Fixed the printing multiple copies feature for the M211 (the CutOption "EndOfLabel" works the same as the CutOption "Never" currently).
  • Fixed a wrongly set barcode value bug in QR Code, DataMatrix, and Code128 barcodes.


Released 7/31/2023

  • HaveOwnership() API method was moved from PrinterDetails to PrinterDiscovery.
  • setTemplate() API method added to alternatively allow the "passing in" of a file name and it's location.
  • DataMatrix, QR Code, and Code128 bug fixes.
  • Improperly disconnecting bug fix.
  • Added LZ4 compression and decrompression for connection to an M611 Latimer (faster connection).


Released 7/14/2023

  • Fixed auto-connect for Bluetooth Classic and Wifi devices.
  • Fixed bug where ConnectionType in PrinterDetails was inaccurate.


Released 6/27/2023

  • Fixed a bug preventing connection to a Bluetooth Classic printer with a device under Android 12.
  • Removed java tuples library dependency so the SDK no longer requires use of Triplet objects.
  • Preparation to allow the use of other framework bindings.


Released 4/6/2023

  • Fixed a Draw Image bug in DroidDrawingContext to accurately print an image how it appears in the preview rendering.
  • Fixed a Label Trailer bug where the trailer flag in the print() API method wasn't changing anything.
  • Fixed a DateTimeObject bug where printer objects were not serializing correctly from the Maven Central dependency only. This was also causing the DiscoveredPrinterInformation is null bug.
  • Updated the URL metadata for the Maven Central site so that is now embedded on the Maven Central page for the BradySdk.


Released 3/24/2023

  • Fixed a preview bug with how the unprintable zones (the grey area in previews) are oriented.
  • Fixed a bug relating to the automatic connection to an M611 via Bluetooth Low Energy.
  • Fixed a text alignment bug where text with center alignment was defaulting to left alignment.
  • Improved the clarity of QR codes when they print and render while also changing the error correction to Q.

  • Now allows the rendering and printing of .png, .jpg, .jpeg, .svg, and other image files via:

//Instead of requiring the use of .BWT or .BWS files,
//we now support the rendering and printing of image files using this alternative constructor.
PrinterDetails.print(context, bitmap, printingOptions, false);
  • Now allows a user to add the Android SDK to their app with a single dependency. Reference the Setup page.
implementation 'com.bradyid:BradySdk:1.3.1'


Released 1/17/2023

Includes 5 API changes made to ensure that our Android SDK is consistent with our iOS SDK in order to provide clarity and ease of use in the future.

  • PrinterDiscoveryImpl is no longer accessible and will instead be handled internally. Therefore, to retrieve the new PrinterDiscovery object, users will replace your PrinterDiscoveryImpl initialization with:
List<PrinterDiscoveryListener> printerDiscoveryListeners = new ArrayList<>();

PrinterDiscovery printerDiscovery = PrinterDiscoveryFactory.getPrinterDiscovery(getApplicationContext(), printerDiscoveryListeners);

Users will still be able to call the same methods from this PrinterDiscovery object as users did with the PrinterDiscoveryImpl object.

  • PrinterDisoveryListener will now be required to retrieve any discovered printer. Implementing this to your UI may look like this:
public class MainActivity implements PrinterDiscoveryListener {

This will add the interface’s override methods to your class. These methods are:

printerDiscovered(DiscoveredPrinterInformation dpi)

These will all trigger automatically when certain things happen in the SDK. For example, printerDiscovered will be called automatically when a printer is discovered, handing you the discovered printer object in the method’s body. printerDiscoveryStarted and printerDiscoveryStopped will be called automatically when a scan is started or stopped.

This change gives our users more freedom because they can keep a list of printers by adding the found DiscoveredPrinterInformation object to a list or automatically connect in the body of printerDiscovered when a certain printer is found. Now, users can also get notified when discovery starts and stops.

  • connectToDiscoveredPrinter now takes a DiscoveredPrinterInformation object as a parameter now instead of just a String of the printer’s name. Since the only way to retrieve a DiscoveredPrinterInformation object is through the printerDiscovered method, this verifies that the object has already been discovered before a user tries to connect to it.

  • getLastConnectedPrinterName replaced with getLastConnectedPrinter because it now returns a printer object rather than just the name as a String.

  • haveOwnership is now called with a PrinterDetails object rather than a PrinterDiscovery object.


Includes the implementation of the M511 to the SDK. At this point, the M511 has the same functionalities as the M211. Therefore, collating and multiple labels templates are still not supported.


Includes a large improvement of printer connection efficiency and reliability thanks to our collaboration with ECSite.


Includes the implementation of automatic connection to a Bluetooth Low Energy.


This was the second major release of the Brady SDK that introduced support for the M211 Apollo printer and some added features such as:

  • Disconnection/Forget a printer
  • Feed a label
  • Cut a label
  • Set an M211's automatic shutoff time
  • Improvements to how ownership is handled with an M211


This was the first release of the Brady SDK and the first time the Brady Android SDK was added to for public download. This version included a lot of the same functionality with some bug fixes to improve the speed and efficiency of its functionality.

1.0.0 (Beta)

This was the first version that was used internally with Brady employees to help test. This version included barebone functionality to discover, connect, and print templates.