Skip to content

Dynamic Camera & Resolution Selection (Experimental)

Choose a tag to compare

@ltrudu ltrudu released this 22 Jan 15:47
· 18 commits to master since this release

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