Reputation: 79
I am using the open source Java library called ‘zxing’ (Zebra Crossing) In java. My code is here
package eg.com.taman.bc.tut;
import com.google.zxing.BarcodeFormat;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
import com.google.zxing.qrcode.decoder.Mode;
import eg.com.tm.barcode.processor.BarcodeEngine;
import eg.com.tm.barcode.processor.config.DecodeConfig;
import eg.com.tm.barcode.processor.config.EncodeConfig;
import java.io.File;
import java.util.Map;
public class BarcodeApplication {
public static void main(String[] args) {
// File will be used for creating the QRCode barcode type.
File qrCodeFile = new File("C:\\barcode\\QRCode.png");
// Building the encoding configurations - using builder battern
EncodeConfig encodeConfig =
new EncodeConfig.Builder().createDirectories(Boolean.TRUE)
.isQRCodeFormat(Boolean.TRUE)
.withErrorCorrLevel(ErrorCorrectionLevel.M).build();
// Generating the QRCode barcode
String content = "This is the contents of the barcode. 7654321 (QRCode)";
BarcodeEngine.encode(qrCodeFile, content, BarcodeFormat.QR_CODE, 200, 200, encodeConfig);
encodeConfig =
new EncodeConfig.Builder().createDirectories(Boolean.TRUE).
withCharactersMode(Mode.ALPHANUMERIC).build();
System.out.println("------------------- Begins Writing barcodes -------------------\n");
System.out.println("Is QRCode Created? " + (qrCodeFile.exists() ? "Yes " : "Not not ") + "Created");
System.out.println("\n------------------- Finished Writing barcodes -------------------");
// Now we are going to decode (read) back contents of created barcodes
// Building the decoding configurations - using builder battern
DecodeConfig decodeConfig =
new DecodeConfig.Builder()
.withHumanBarcodes(Boolean.TRUE)
.build();
Map<BarcodeEngine.DecodeResults, Object> results = BarcodeEngine.decode(qrCodeFile, decodeConfig);
String decodeText = (String) results.get(BarcodeEngine.DecodeResults.RESULT);
String barcodeType = ((BarcodeFormat) results.get(BarcodeEngine.DecodeResults.BARCODE_FORMATE)).name();
System.out.println("\n------------------- Begins reading barcodes -------------------\n");
System.out.println("The decoded contents is: \"" + decodeText + "\", Barcode type is: " + barcodeType);
System.out.println("The decoded contents is: \"" + decodeText + "\", Barcode type is: " + barcodeType);
System.out.println("\n------------------- Finished reading barcodes -------------------");
System.out.println("decode Text : "+decodeText);
System.out.println("barcode Type : "+barcodeType);
}
}
The code reads a Qr barcode as image file. Now i want to use the handheld barcode scanner to read the barcode. Any help ?????
I am working in java desktop application Not Android.
Upvotes: 1
Views: 6417
Reputation: 370
I have worked on it a little bit, and in most of cases it's working fine. My code is:
InputStream barCodeInputStream = new FileInputStream("test.png");
BufferedImage barCodeBufferedImage = ImageIO.read(barCodeInputStream);
LuminanceSource source = new BufferedImageLuminanceSource(barCodeBufferedImage);
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
Reader reader = new MultiFormatReader();
Result result = reader.decode(bitmap);
System.out.println("Barcode text is " + result.getText());
This will work fine on QR as well as Barcode :)
Upvotes: 1
Reputation: 10675
Sounds like you are looking for a scanner that support HID mode.
Your options are a Bluetooth scanner with HID mode or a USB scanner (most act like keyboards).
Once you've picked one, HID mode is basically the same on all scanners and you can find many questions on Stackoverflow about capturing scanner input and separating it from user input on a normal keyboard.
Upvotes: 2
Reputation: 719386
My understanding is that zxing is for generating and processing QR code images ... as you are doing in your code. It is not an API for driving a barcode scanner. If you want one of those, you will need to say something about the device you are trying to use.
Upvotes: 1