Skip to content

Releases: ltrudu/AI_MultiBarcodes_Capture

Performance Indicator chage

23 Jan 15:41

Choose a tag to compare

Now the performance indicator gives the processing time of only the barcode analyzer (not the other tasks like image cropping, rotation, etc...)

Improved high res stabilization settings workflow

23 Jan 13:53

Choose a tag to compare

v1.43

Improved workflow when selecting high res srabilization to ensure tha…

High resolution stabilization mechanism, Fix Dynamic Resolutions BBOx mis placement

23 Jan 13:19

Choose a tag to compare

Release Notes - Dynamic Resolutions & High-Res Capture Stabilization

New Features

  • Dynamic Camera Resolution Selection

  • Automatic camera detection: The app now automatically detects all available cameras on your device and their supported
    resolutions

  • Full resolution support: Access all native camera resolutions instead of predefined presets

  • Camera switching: Easily switch between front and back cameras with resolution options specific to each

  • Smart defaults: Automatically selects optimal resolutions based on device capabilities

  • High-Resolution Capture Stabilization

A new intelligent system that improves barcode decoding accuracy in difficult conditions:

  • Automatic instability detection: Monitors the debounce cache for barcodes that are visible but cannot be decoded

  • On-demand high-res capture: When instability is detected after N consecutive frames, automatically triggers a full-resolution
    still capture (up to 16.3MP on supported devices)

  • Smart resolution management:

    • Live preview analysis runs at user-selected resolution for optimal performance
    • High-res captures use the maximum sensor resolution by binding ImageCapture separately
  • Visual feedback: White border flash indicates when a high-res stabilization capture is taken

  • Cache validation: High-res decode results are matched back to cached barcodes by position (IOU) to update/validate values

  • Settings

New options in the Optimizations section:

  • Enable High-Res Capture Stabilization: Toggle the automatic high-res capture feature

  • Dynamic Camera Mode: Switch between static presets and dynamic resolution discovery

  • Technical Improvements

  • Queries actual ImageAnalysis resolution after camera binding using getResolutionInfo() for accurate coordinate mapping

  • Separate binding strategy for ImageCapture to achieve maximum sensor resolution without limiting ImageAnalysis

  • Enhanced stability tracking in CachedBarcode with value consistency monitoring

Dynamic Camera & Resolution Selection (Experimental)

22 Jan 15:47

Choose a tag to compare

What's New

Dynamic Camera & Resolution Selection (Experimental)

Added support for selecting different cameras and resolutions beyond the preset options:

Resolution Mode Setting:

  • Static (Presets) - Default mode using 7 predefined resolutions (1MP to 12.6MP)
  • Dynamic (Experimental) - Query all device cameras and their supported resolutions

Dynamic Mode Features:

  • Select from all available cameras (Back, Front, Telephoto, Ultra-Wide, External)
  • View camera info (focal length, flash availability)
  • Resolution filter options:
    • Standard Resolutions - Only shows 720p, 1080p, 1440p, 4K, 8K (recommended)
    • All Resolutions - Shows all device-supported sizes (experimental)

⚠️ Note: Dynamic mode is experimental. Many non-standard resolutions may not work correctly with the AI model.

New Architecture:

  • Strategy pattern implementation (ICameraResolutionProvider) for clean separation between Static and Dynamic modes
  • Camera2 API integration for full device camera enumeration

Fixed IP Server Selection

Improved HTTP(S) endpoint configuration for fixed IP server connections, enabling reliable barcode data posting to local network
servers.


Technical Details

Files Added:

  • helpers/camera/ICameraResolutionProvider.java
  • helpers/camera/StaticCameraResolutionProvider.java
  • helpers/camera/DynamicCameraResolutionProvider.java
  • helpers/camera/CameraResolutionProviderFactory.java
  • helpers/camera/AvailableCamera.java

Files Modified:

  • CameraResolutionHelper.java - Added camera enumeration and resolution filtering
  • CameraXLivePreviewActivity.java - Refactored to use provider pattern
  • SettingsActivity.java - Added dynamic camera selection UI
  • activity_setup.xml - New camera/resolution selection UI elements
  • Constants.java - New preference keys
  • strings.xml - New localization strings

v1.40: Autocapture and Filtering Enhancement

21 Jan 14:24

Choose a tag to compare

Release Notes

New Features

Auto Capture Enhancements

The Auto Capture feature has been enhanced with new capabilities:

Condition Type Description
AND Logic Auto capture triggers when ALL conditions are satisfied simultaneously
Number of Barcodes Trigger when exactly N barcodes are detected
Contains Regex Trigger when N+ barcodes match a regex pattern
Symbology Match Trigger when N+ barcodes of a specific symbology are detected
Complex Match Trigger when N+ barcodes match both symbology AND regex pattern
Import/Export Save and load auto capture configurations as JSON
Condition Descriptions Add optional notes to conditions for better organization

Menu Options

  • Import from JSON - Load conditions from a previously exported file
  • Export to JSON - Save your current conditions for backup or sharing
  • Delete All - Clear all conditions at once

Note: Auto Capture uses AND logic - ALL conditions must be satisfied for capture to trigger automatically.

Filtering Conditions System

A new conditions-based filtering system replaces the previous single regex filter:

Feature Description
OR Logic Entities matching at least one condition will be detected
Contains Regex Filter barcodes by regex pattern
Symbology Match Filter by barcode symbology type
Complex Match Combine symbology AND regex for precise filtering
Import/Export Save and load filtering configurations as JSON
No Conditions = Include All When no conditions are configured, all entities pass through

How It Works

  1. Navigate to SettingsFiltering section
  2. Enable filtering with the checkbox
  3. Tap Edit Filtering Conditions to configure your conditions
  4. Add conditions using the + button:
    • Contains Regex - Match barcode values against a pattern
    • Symbology Match - Match specific barcode types (QR Code, Code128, etc.)
    • Complex Match - Match both symbology AND regex pattern

Note: Filtering uses OR logic - a barcode only needs to match ONE condition to be included in the results.


Summary

This release improves both Auto Capture and Filtering with a unified conditions-based approach, giving users more flexibility and control over barcode detection and capture workflows.

Added AutoCapture mechanism

20 Jan 15:37

Choose a tag to compare

Auto Capture

Automatically trigger barcode capture when user-defined conditions are met.

Condition Types:

  • Number of Barcodes - Capture when exactly N barcodes are detected (only one condition of this type allowed)
  • Contains Regex Pattern - Capture when N+ barcodes match a regex pattern (multiple allowed)

Features:

  • Configurable via Settings > Auto Capture section
  • Conditions editor with add/edit/delete functionality
  • Built-in predefined regex picker with 40+ patterns organized by category:
    • Web URLs, IP Addresses, MAC Addresses
    • Product Barcodes (UPC-A, EAN-13, GTIN-14)
    • Device IDs (IMEI, Serial Numbers)
    • Book/Media (ISBN-10, ISBN-13, ISSN)
    • Phone Numbers (US, France, Germany, UK, International)
    • Industrial (Part Numbers, Lot/Batch, Container IDs)
  • All conditions must be TRUE for auto capture to trigger

Debounce Decoded Entities

Reduce barcode flickering by caching decoded results across frames.

Features:

  • Configurable max frames to retain cached barcodes
  • Two matching algorithms:
    • Center Distance - Match by bounding box center proximity (configurable pixel threshold)
    • Intersection Over Union (IOU) - Match by bounding box overlap ratio (configurable threshold)
  • Visual feedback: GREEN for freshly decoded, BLUE for cached, RED for unreadable
  • Enabled by default with IOU algorithm

Configuration

Both features are accessible via Settings:

  • Debounce - Under the Debounce section with algorithm selection and threshold controls
  • Auto Capture - Under the Auto Capture section with enable toggle and conditions editor

Technical Notes

  • Auto capture evaluation runs after filtering, using only barcodes that pass regex filters
  • Capture action opens CapturedBarcodesActivity, which stops the camera and prevents re-triggers
  • Debounce cache is cleared when settings are reloaded
  • All settings persist via SharedPreferences

Upgraded to latest SDK, fix unsupported resolutions bug, added debounce algorithm for barcode detection stability improvement

20 Jan 14:43

Choose a tag to compare

Upgraded to latest SDK to support DSP on all Zebra devices that have one.
Removed unsupported resolutions from settings.
Added 12MP resolution (WIP, experimental)
Added debouncing to barcode decoding to improve stability when the camera is shaking.

Performance & Android 15+ Compatibility

05 Dec 15:39

Choose a tag to compare

Version 1.36 - ⚡ Performance & Android 15+ Compatibility

Ultra-fast native grayscale image processing with NDK/JNI and Android 15+ 16KB page size support.

Native NDK Grayscale Optimization:

Ultra-Fast Y-Plane Extraction: Native C++ implementation extracts grayscale directly from YUV Y-plane

  • No Color Conversion Required: Y-plane IS grayscale - just copy it directly (no YUV→RGB math)
  • Single Plane Processing: Only reads Y-plane, skips U/V planes entirely
  • Direct Bitmap Writing: Native code writes directly to Android Bitmap using AndroidBitmap_lockPixels()
  • Automatic Fallback: Java implementation fallback when native library is unavailable

Performance Benefits:

  • ~3-5x faster than full YUV to RGB conversion
  • Minimal CPU usage - simple memory copy instead of color math
  • Only 1 plane processed instead of 3
  • ~3 operations per pixel instead of ~15

📱 Android 15+ 16KB Page Size Support:

Future-Proof Compatibility: Native library built with 16KB page size alignment

  • -Wl,-z,max-page-size=16384: Linker flag ensures compatibility with Android 15+ devices using 16KB memory pages
  • Seamless Operation: Works on both traditional 4KB and new 16KB page size devices
  • No Runtime Configuration Required: Compatibility is built into the native library

💡 Benefits:

Maximum Performance: Grayscale extraction is the fastest possible approach for capture zone cropping

Android 15+ Ready: Application is prepared for upcoming Android devices with 16KB page sizes

Battery Efficiency: Minimal CPU usage extends battery life during extended scanning sessions

SDK Compatible: Zebra AI Vision SDK fully supports grayscale bitmap input

Theme Update

26 Nov 11:56

Choose a tag to compare

AI MultiBarcode Capture v1.35 - Release Notes

🎨 New Features

Theme System

  • Dual Theme Support: Choose between Legacy (classic blue) and Modern (Zebra green/dark) themes
  • Dynamic Theme Switching: Seamlessly switch themes through Settings without restarting the app
  • Consistent Branding: Modern theme features Zebra's latest brand colors.
  • Dark Mode Optimized: Modern theme provides a comfortable dark interface with optimized contrast

Custom Typography

  • Zebra Brand Fonts: Integrated Zebra's typefaces
  • Smart Font Application: Custom fonts automatically applied for Latin-script languages (English, German, French,
    Spanish, etc.)
  • International Support: Non-Latin languages (Arabic, Russian, Chinese, Japanese, Korean, etc.) use native system
    fonts for optimal readability
  • Theme-Aware Typography: ZebraMono font exclusively available when using the Modern theme

Android 15 (API 35) Support

  • Full Android 15 Compatibility: Updated to target Android 15 (VANILLA_ICE_CREAM)
  • Enhanced System Bar Handling: Improved status bar and navigation bar rendering for Android 15+
  • Window Insets Management: Proper edge-to-edge display support with new Android 15 insets API
  • Backward Compatibility: Maintains full support for Android 11+ devices

🔧 Technical Improvements

  • Centralized theme management through ThemeHelpers utility class
  • Optimized system bar color configuration across all Android versions
  • Locale-aware font selection for better international user experience
  • Enhanced Material Design 3 integration

📋 Compatibility

  • Minimum SDK: Android 11 (API 30)
  • Target SDK: Android 15 (API 35)
  • Compile SDK: Android 15 (API 35)

A15 Update / XAMPP Web Server Option

20 Nov 17:28

Choose a tag to compare

Version 1.34 - 📱 Android 15 Update & Enhanced UI/UX

Major platform update with comprehensive UI improvements and expanded deployment options.

📱 Android 15 (API 35) Migration:

Target SDK Update: Migrated from Android 14 (API 34) to Android 15 (API 35) for latest platform features and security enhancements

Compile SDK Update: Updated compile SDK to API 35 ensuring compatibility with the latest Android features

Material Design 3 Integration: Updated to Material Components 1.13.0 for modern Material You design language support

CameraX Updates: Enhanced camera functionality with CameraX 1.5.1 for improved stability and performance

🔄 SDK & Dependency Updates:

Zebra AI Vision SDK 3.1.4: Updated from 3.0.5 to 3.1.4 for latest AI detection improvements and bug fixes

Dynamic Version Display: About screen now automatically reflects dependency versions from libs.versions.toml:

  • No more hardcoded version strings
  • Single source of truth for all dependency versions
  • BuildConfig fields generated from version catalog

Updated Dependencies:

  • CameraX: 1.5.1 (improved camera stability)
  • Material Components: 1.13.0 (Material Design 3)
  • Gson: 2.13.2 (JSON parsing improvements)
  • Android Gradle Plugin: 8.13.0 (latest build tools)

🌐 New Web Server Deployment Option:

XAMPP Installation Support: Alternative deployment method for environments without Docker:

  • XAMPP Quick Install: Pre-configured archive for instant setup - just extract and run
  • Automated Scripts: One-click deployment with xampp_start_server.bat
  • Flexible Installation: Supports both C:\xampp and D:\xampp with automatic detection
  • No Admin Rights Required: Portable installation option for restricted environments
  • Full Feature Parity: Complete web management system without Docker dependency

Enhanced Database Initialization: Improved database setup with verification and automatic schema creation

Smart Path Detection: Scripts automatically detect XAMPP location (C: or D: drive) without manual configuration

Comprehensive Documentation: Complete XAMPP installation guide with troubleshooting and best practices

Updated Build Configuration: Enhanced build.gradle.kts with BuildConfig fields for dynamic version management

Improved About Screen: Displays real-time dependency versions from version catalog

💡 Benefits:

Latest Platform Support: Access to Android 15 features and security improvements
Modern UI: Professional appearance with Material Design 3
Better Code Quality: Reduced duplication and improved maintainability
Flexible Deployment: Choose between Docker or XAMPP based on your environment
Simplified Maintenance: Centralized version management and automated updates
Enhanced User Experience: Consistent navigation and visual design across all screens