Dynamic Camera & Resolution Selection (Experimental)
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)
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