Browse our Products

Aspose.BarCode for Android via Java 25.7

All Changes

KeySummaryCategory
BARCODENET-39312Improve Code128 recognition performanceEnhancement
BARCODENET-39313GS1 DataMatrix: “Incorrect value 129 for C40 Shift” errorBug
BARCODEANDROID-1338Design class architecture for button-triggered barcode recognition modeEnhancement
BARCODEANDROID-1340Implement UI and Functionality for Recognition ButtonEnhancement
BARCODEANDROID-1341Implement GUI and Functionality for Scanning ModeEnhancement
BARCODEANDROID-1342Implement GUI Rendering for Recognition ModeEnhancement
BARCODEANDROID-1344Implement OpenGL Rendering for Circular Progress IndicatorEnhancement
BARCODEANDROID-1345Implement recognition area patterns for 1D and 2D barcodesEnhancement
BARCODEANDROID-1353Define and categorize supported barcode typesEnhancement
BARCODEANDROID-1357Implement BarcodeScannerView constructor for programmatic initializationEnhancement
BARCODEANDROID-1368Implement scanning interruption APIEnhancement
BARCODEANDROID-1370Implement state dispatcher and public API for scanner status trackingEnhancement
BARCODEANDROID-1371Extend public API to expose scanned image in recognition callbackEnhancement
BARCODEANDROID-1373Mitigate camera stutters on low-end devices during recognitionEnhancement
BARCODEANDROID-1375Implement configurable scanning modes UIEnhancement
BARCODEANDROID-1376Add a results screen displaying the captured frame and recognition outputEnhancement
BARCODEANDROID-1350Adjust timing of AttributeSet initialization in BarcodeScannerViewEnhancement
BARCODEANDROID-1352Refactor lifecycle handling in BarcodeScannerView and related componentsEnhancement
BARCODEANDROID-1288Develop core features of the BarcodeScannerView componentEnhancement
BARCODEANDROID-1336Develop button-triggered scanning mode in Barcode Recognition ComponentEnhancement
BARCODEANDROID-1349Refactor architecture of OpenGL program managementEnhancement

Public API changes and backwards compatibility

Method BarcodeGenerator.setCodeText(String codeText, Charset encoding) encodes the Unicode codeText into a byte sequence using the specified encoding. UTF-8 is the most commonly used encoding. Method setCodeText(String codeText, Charset encoding, boolean insertBOM) If the encoding supports it and insertBOM is set to true, the method includes a byte order mark (BOM)

This method is intended for use with 2D barcodes only (e.g., Aztec, QR, DataMatrix, PDF417, MaxiCode, DotCode, HanXin, RectMicroQR, etc.). It enables manual encoding of Unicode text using national or special encodings; however, this method is considered obsolete in modern applications. For modern use cases, ECI encoding is recommended for Unicode data.

Using this method with 1D barcodes, GS1-compliant barcodes (including 2D), or HIBC barcodes (including 2D) is not supported by the corresponding barcode standards and may lead to unpredictable results.

//Encode DataMatrix text using Shift-JIS (Japanese encoding)
BarcodeGenerator gen = new BarcodeGenerator(EncodeTypes.DATA_MATRIX);
Charset charset;
try
{
 charset = Charset.forName("Shift_JIS");
}
catch (Exception e)
{
   Log.e("Barcode", "Unsupported charset", e);
   return;
}
gen.setCodeText("車種名", charset);
File file = new File(context.getFilesDir(), "barcode1.png");
file.getParentFile().mkdirs(); 
gen.save(file.getAbsolutePath(), BarCodeImageFormat.PNG);
BarCodeReader reader = new BarCodeReader(file.getAbsolutePath(), DecodeType.DATA_MATRIX);
BarCodeResult[] barCodeResults = reader.readBarCodes();
for (BarCodeResult result : barCodeResults)
{
  Log.d(TAG, "BarCode CodeText: " + result.getCodeText(charset));
}
//Encode codetext using UTF-8 with BOM
BarcodeGenerator gen = new BarcodeGenerator(EncodeTypes.QR);
gen.setCodeText("車種名", StandardCharsets.UTF_8, true);
File file = new File(context.getFilesDir(), "barcode2.png");
file.getParentFile().mkdirs();
gen.save(file.getAbsolutePath(), BarCodeImageFormat.PNG);
BarCodeReader reader = new BarCodeReader(file.getAbsolutePath(), DecodeType.QR);
BarCodeResult[] barCodeResults = reader.readBarCodes();
for (BarCodeResult result : barCodeResults)
{
   Log.d(TAG, "BarCode CodeText: " + result.getCodeText(StandardCharsets.UTF_8));
}

Code 128 recognition performance

Code 128 recognition performance is improved.

BarcodeGenerator gen = new BarcodeGenerator(EncodeTypes.CODE_128, "ASPOSE");
File file = new File(context.getFilesDir(), "barcode3.png");
file.getParentFile().mkdirs();
gen.save(file.getAbsolutePath(), BarCodeImageFormat.PNG);
BarCodeReader reader = new BarCodeReader(file.getAbsolutePath(), DecodeType.CODE_128);
reader.setQualitySettings(QualitySettings.getHighPerformance());
BarCodeResult[] barCodeResults = reader.readBarCodes();
for (BarCodeResult result : barCodeResults)
{
   Log.d(TAG, "BarCode CodeText: " + result.getCodeText());
}

GS1 DataMatrix generation

GS1 DataMatrix generation corresponds to GS1 DataMatrix Guideline.

BarcodeGenerator gen = new BarcodeGenerator(EncodeTypes.GS_1_DATA_MATRIX, "(00)057139091004349375(241)24140053(91)SkamoDoor Board 225 P2(243)035402");
File file = new File(context.getFilesDir(), "barcode4.png");
file.getParentFile().mkdirs();
gen.save(file.getAbsolutePath(), BarCodeImageFormat.PNG);
BarCodeReader reader = new BarCodeReader(file.getAbsolutePath(), DecodeType.GS_1_DATA_MATRIX);
reader.setQualitySettings(QualitySettings.getHighPerformance());
BarCodeResult[] barCodeResults = reader.readBarCodes();
for (BarCodeResult result : barCodeResults)
{
    Log.d(TAG, "BarCode CodeText: " + result.getCodeText());
}