Create a barcode scanner
- Import the required classes.
import java.util.*;
import net.rim.device.api.barcodelib.*;
import net.rim.device.api.ui.*;
import net.rim.device.api.ui.container.*;
import com.google.zxing.*;
- Create a class to run the application by extending UiApplication.
public final class BarcodeScanDemo extends UiApplication
{
- Create a constructor for the class, and display a BarcodeScanDemoScreen object.
public BarcodeScanDemo()
{
pushScreen(new BarcodeScanDemoScreen());
}
- Create the main method that starts the application.
public static void main(String[] args)
{
new BarcodeScanDemo().enterEventDispatcher();
}
}
- Define a screen for your class that extends the MainScreen class.
final class BarcodeScanDemoScreen extends MainScreen
{
- Create a constructor for the screen.
public BarcodeScanDemoScreen()
{
- Create a BarcodeDecoderListener object to handle the data that is received when a barcode is scanned. In it, implement barcodeDecoded() to process the raw data that is sent by the decoder.
BarcodeDecoderListener listener = new BarcodeDecoderListener()
{
public void barcodeDecoded( String rawText )
{
// Do something with the raw text
}
};
- Create a Hashtable to store decoding hints in.
Hashtable hints = new Hashtable();
- Create a new Vector object to store barcode formats in.
Vector formats = new Vector();
- Add the BarcodeFormat.QR_CODE constant to the Vector object using Vector.addElement(Object obj). You can add more than one constant (hint) to a Vector object.
formats.addElement(BarcodeFormat.QR_CODE);
- Invoke Hashtable.put(Object key, Object value), and add the Vector object to the hash table. The DecodeHintType.POSSIBLE_FORMATS constant is used to specify that the hints contained in the Vector object are barcode formats. Other constants for decoding hints can be found in the com.google.zxing.DecodeHintType class.
hints.put(DecodeHintType.POSSIBLE_FORMATS, formats);
- Construct a BarcodeDecoder object to decode data received from the camera's viewfinder into usable raw data. Pass the Hashtable object into it.
BarcodeDecoder decoder = new BarcodeDecoder( hints );
- Create a try block, and construct a MainScreen object to contain the camera viewfinder.
try
{
MainScreen screen = new MainScreen();
- Construct a BarcodeScanner object, and pass the BarcodeDecoder and BarcodeListener objects into it. Invoke BarcodeScanner.getVideoControl() to return a VideoControl object. Invoke VideoControl.setDisplayFullScreen(true) to set the video's display to full screen.
BarcodeScanner scanner = new BarcodeScanner( decoder,
listener );
scanner.getVideoControl().setDisplayFullScreen( true );
- Invoke Screen.add(Field field) to add the barcode scanner's view finder to the screen, then invoke UiApplication.pushScreen(Screen screen) to display the viewfinder.
screen.add( scanner.getViewFinder() );
UiApplication.getUiApplication().pushScreen( screen );
- Start the barcode scanner by invoking BarcodeScanner.startScan(). Close the try block.
scanner.startScan();
}
- Open a catch block to catch any errors that may occur.
catch (Exception e)
{
// Catch errors here
}
}
}
Code sample: scan a barcode
import java.util.*;
import net.rim.device.api.barcodelib.*;
import net.rim.device.api.ui.*;
import net.rim.device.api.ui.container.*;
import com.google.zxing.*;
public final class BarcodeScanDemo extends UiApplication
{
public static void main(String[] args)
{
new BarcodeScanDemo().enterEventDispatcher();
}
public BarcodeScanDemo()
{
pushScreen(new BarcodeScanDemoScreen());
}
}
final class BarcodeScanDemoScreen extends MainScreen
{
public BarcodeScanDemoScreen()
{
BarcodeDecoderListener listener = new BarcodeDecoderListener()
{
public void barcodeDecoded( String rawText )
{
// Do something with the raw text
}
};
Hashtable hints = new Hashtable(1);
Vector formats = new Vector(1);
formats.addElement(BarcodeFormat.QR_CODE);
hints.put(DecodeHintType.POSSIBLE_FORMATS, formats);
BarcodeDecoder decoder = new BarcodeDecoder( hints );
try
{
MainScreen screen = new MainScreen();
BarcodeScanner scanner = new BarcodeScanner( decoder, listener );
scanner.getVideoControl().setDisplayFullScreen( true );
screen.add( scanner.getViewfinder() );
UiApplication.getUiApplication().pushScreen( screen );
scanner.startScan();
}
catch (Exception e)
{
// Catch errors here
}
}
}
Was this information helpful? Send us your comments.