Releases: ZebraDevs/AI-Java-MultiBarcodesCapture
Added 71+ language support
Added to Version 1.20 section:
- Comprehensive language selection system with 71+ language support
- Native language names with Unicode flag emojis
- Validation-based language switching (changes apply only on confirmation)
- Complete string externalization with translations for all supported languages
- Persistent language preferences that survive app restarts
- Full application restart mechanism for proper locale switching
- Custom dropdown styling with white background and zebra blue outline
- Improved settings UI with button reordering
- Comprehensive locale management through LocaleHelper utility
- Enhanced user experience with explicit validation requirements
Implement flashlight state persistence with camera timing fix
Add comprehensive flashlight state persistence functionality to maintain flashlight on/off state across app
sessions and activity lifecycle events.
Key Changes:
• Add flashlight preference constants and helper methods in Constants.java and PreferencesHelper.java
• Implement automatic state saving when flashlight is toggled via toggleFlashlight() method
• Add loadFlashlightSettings() method with detailed logging for state restoration debugging
• Fix critical timing issue by moving flashlight restoration from onResume() to bindPreviewUseCase()
• Ensure flashlight state loads after camera is properly bound and flash unit is available
• Add comprehensive debug logging throughout save/restore operations for troubleshooting
Technical Details:
• Flashlight state now persists in SharedPreferences using SHARED_PREFERENCES_FLASHLIGHT_ENABLED key
• State restoration occurs after camera.bindToLifecycle() completes to ensure flash unit availability
• Enhanced error handling and logging for camera torch operations and preference access
• Maintains consistent behavior with existing capture zone persistence patterns
Result: Flashlight toggle state now properly persists across app restarts, activity pauses, and navigation events,
providing seamless user experience with maintained lighting preferences.
Implement interactive capture zone with barcode filtering
Implement interactive capture zone with barcode filtering
Add a complete capture zone system that allows users to define a rectangular area for focused barcode scanning:
• Interactive capture zone overlay with drag, resize, and corner anchor controls
• Visual toggle icon in top-right corner with enabled/disabled states using alpha transparency
• Real-time barcode filtering - only process barcodes within the capture zone boundaries
• Persistent settings that save zone position, size, and enabled state across app sessions
• Comprehensive capture data filtering - only capture barcodes within the defined zone
• Force portrait mode across entire application for consistent user experience
• Enhanced logging and error handling for capture zone operations
The capture zone provides users with precise control over barcode detection, allowing them to focus on specific areas of the camera view while ignoring barcodes outside the defined region. When enabled, both the real-time preview and final capture results only include barcodes that intersect with the capture zone.
Improved Launcher menu, Fixed row delete in Session Viewer
Fix SessionViewerActivity delete functionality and update app version
- Fixed critical bug in SessionViewerActivity where delete icon tap failed to remove rows
- Added key field to DisplayBarcodeData class for proper SessionData map removal
- Updated removeItem method to use barcode.key instead of barcode.value for map operations
- Incremented app version to reflect the bug fix
Improved card management in the launcher activity.
Fixed Sharing Functionality
Sharing was broken, this release fixes the functionality.
🎨 MAJOR UI/UX TRANSFORMATION
🎨 MAJOR UI/UX TRANSFORMATION
- Complete EntryChoiceActivity Redesign (Commit 85c4cbc)
Visual Design Overhaul:
- Before: Traditional vertical button layout
- After: Modern 2x2 grid of interactive cards with icons
New Components Created:
- 4 Custom Vector Icons (64dp each):
- ic_start_capture.xml - Play button for capture initiation
- ic_load_session.xml - Document with downward arrow
- ic_create_new_session.xml - Document with upward arrow
- ic_view_session_data.xml - Eye icon for viewing data
- Modern Card System:
- modern_card_background.xml - White background with Zebra blue border, 16dp rounded corners
- modern_card_selector.xml - Ripple effect for touch feedback
Enhanced User Experience:
- Visual States: 50% opacity for disabled cards, full opacity when enabled
- Touch Feedback: Material Design ripple effects
- Dynamic Sizing: Cards adapt to screen dimensions
- Accessibility: Larger touch targets (minimum 48dp)
- Menu Icon System Implementation (Commit 29ef9c7)
Menu Enhancement:
- EntryChoiceActivity Menu:
- ic_menu_manage_sessions.xml - Folder with document lines
- ic_menu_settings.xml - Gear/cog icon
- BrowserActivity Menu:
- ic_menu_new_file.xml - Document with plus sign
- ic_menu_new_folder.xml - Folder with plus sign
- ic_menu_rename.xml - Bracket-style editing icon
- ic_delete_blue_24dp.xml - Delete icon in Zebra blue
Technical Implementation:
- PopupMenu Icon Display: Added reflection-based code to force icon visibility
- Cross-Platform Compatibility: Graceful fallback if reflection fails
- Brand Consistency: All icons use Zebra color scheme (@color/zebra)
Auto-sizing Text Implementation:
- txtSession TextView enhanced with:
- android:autoSizeTextType="uniform"
- Min size: 10sp, Max size: 18sp, Step: 1sp
- Fixed height: 70dp with 5dp padding
- 4-line maximum with centered text
- Dynamic font scaling based on content length
User Experience Impact:
- Short text (e.g., "Select A Session") displays at ~18sp (large, prominent)
- Long file paths automatically scale down to remain readable
- Very long paths scale to minimum 10sp while staying within bounds
📱 USER WORKFLOW IMPROVEMENTS
Session Management Enhancements:
- Smart Button States:
- "View Session Data" only enabled when session file has content (length() > 0)
- "Start Capture" only enabled when valid session selected
- Real-time validation with user feedback - Error Handling:
- New string resources for file validation:- error_file_does_not_exist
- error_file_is_empty
- Graceful error messages with file path context
- CapturedBarcodes & SessionViewer Workflow:
- Merge button removal when data has been merged
- Improved state management across activity transitions
🎯 DESIGN SYSTEM CONSISTENCY
Brand Alignment:
- Zebra Blue (@color/zebra: #FF0073E6) used consistently across all new icons
- White backgrounds with blue outlines for visual hierarchy
- Material Design principles applied throughout
- 24dp standard for menu icons, 64dp for card icons
Responsive Design:
- Flexible layouts that adapt to different screen sizes
- Touch-friendly interaction areas (minimum 48dp)
- Consistent spacing with 24dp margins and 16dp internal padding
📊 Impact Summary
User Experience Gains:
- Modern Visual Appeal: Card-based design with proper visual hierarchy
- Improved Usability: Larger touch targets and clear visual feedback
- Better Information Architecture: Icons provide instant visual context
- Enhanced Accessibility: Auto-sizing text and proper contrast ratios
- Professional Polish: Consistent branding and Material Design compliance