Android Print Application for Zebra RW420 Printer

I want to start developing a simple sticker printing application using the zebra RW420 printer. They have an Android SDK, but I can't figure out where to start.

I invite the application to one screen, it asks for a shortcut or purchase order, the number of copies we would like to print, and a print button. Can someone help me get started. Any help would be appreciated.

How am I going to look for a printer, will the SDK do this for me ?? or should I use the android class BluetoothAdapter ... about the label format that I have to create myself, or can I use an existing file in the SDK ??

Can I set up the printer to print multiple copies?

+4
source share
2 answers

The SDK provides a Bluetooth discovery class. See the documentation and examples. Check out the BluetoothDiscoverer class. It provides a search method for all Bluetooth devices and notifies you in the handler. There is a developer demo that ships with the SDK, in which there is an example of how to make a discovery:

  try { BluetoothDiscoverer.findPrinters(this, new DiscoveryHandler() { public void foundPrinter(DiscoveredPrinter printer) { String macAddress = printer.address; //I found a printer! I can use the properties of a Discovered printer (address) to make a Bluetooth Connection } public void discoveryFinished() { //Discovery is done } public void discoveryError(String message) { //Error during discovery } }); } catch (ConnectionException e) { e.printStackTrace(); } catch (InterruptedException e) { e.printStackTrace(); } 
+7
source

1) You must print from a stream, for example:

 new Thread (new Runnable () { public void run () { enablePrintButton (false); Looper.prepare (); doConnectionTest (); Looper.loop (); Looper.myLooper ().quit (); } }).start (); 

2) Then:

 private void doConnectionTest () { printer = connect (); if (printer != null) { //print } else { disconnect (); } } 

3) Printing Method:

 private void sendTestLabel () { try { ZebraPrinterLinkOs linkOsPrinter = ZebraPrinterFactory.createLinkOsPrinter (printer); PrinterStatus printerStatus = (linkOsPrinter != null) ? linkOsPrinter.getCurrentStatus () : printer.getCurrentStatus (); if (printerStatus.isReadyToPrint) { byte[] configLabel = getConfigLabel (); connection.write (configLabel); setStatus ("Sending Data", Color.BLUE); } else if (printerStatus.isHeadOpen) { setStatus ("Printer Head Open", Color.RED); } else if (printerStatus.isPaused) { setStatus ("Printer is Paused", Color.RED); } else if (printerStatus.isPaperOut) { setStatus ("Printer Media Out", Color.RED); } DemoSleeper.sleep (1500); if (connection instanceof BluetoothConnection) { String friendlyName = ((BluetoothConnection) connection).getFriendlyName (); setStatus (friendlyName, Color.MAGENTA); DemoSleeper.sleep (500); } } catch (ConnectionException e) { setStatus (e.getMessage (), Color.RED); } finally { disconnect (); } } 

4) Label setting method:

 private byte[] getConfigLabel () { byte[] configLabel = null; try { PrinterLanguage printerLanguage = printer.getPrinterControlLanguage (); SGD.SET ("device.languages", "zpl", connection); if (printerLanguage == PrinterLanguage.ZPL) { configLabel = "^XA^FO17,16^GB379,371,8^FS^FT65,255^A0N,135,134^FDTEST^FS^XZ".getBytes(); } else if (printerLanguage == PrinterLanguage.CPCL) { String msg = setPopratnica (); msg = format (msg); configLabel = msg.getBytes ("windows-1250"); } } catch (Exception e) { } return configLabel; } 

5) Connection Method:

 public ZebraPrinter connect () { setStatus ("Connecting...", Color.YELLOW); connection = null; connection = new BluetoothConnection (getBluetoothAddressKey ()); try { connection.open (); setStatus ("Connected", Color.GREEN); } catch (ConnectionException e) { setStatus ("Comm Error! Disconnecting", Color.RED); DemoSleeper.sleep (1000); disconnect (); } ZebraPrinter printer = null; if (connection.isConnected ()) { try { printer = ZebraPrinterFactory.getInstance (connection); setStatus ("Determining Printer Language", Color.YELLOW); String pl = SGD.GET ("device.languages", connection); setStatus ("Printer Language " + pl, Color.BLUE); } catch (ConnectionException e) { setStatus ("Unknown Printer Language", Color.RED); printer = null; DemoSleeper.sleep (1000); disconnect (); } catch (ZebraPrinterLanguageUnknownException e) { setStatus ("Unknown Printer Language", Color.RED); printer = null; DemoSleeper.sleep (1000); disconnect (); } } return printer; } 

6) Disconect Method:

 public void disconnect () { try { setStatus ("Disconnecting", Color.RED); if (connection != null) { connection.close (); } setStatus ("Not Connected", Color.RED); } catch (ConnectionException e) { setStatus ("COMM Error! Disconnected", Color.RED); } finally { enablePrintButton (true); } } 

In addition, you should have a sleeping class:

 public class DemoSleeper { private DemoSleeper () { } public static void sleep(int ms) { try { Thread.sleep(ms); } catch (InterruptedException e) { e.printStackTrace(); } } } 
0
source

Source: https://habr.com/ru/post/1436365/


All Articles