camera_with_gps 2.5.3 copy "camera_with_gps: ^2.5.3" to clipboard
camera_with_gps: ^2.5.3 copied to clipboard

Flutter plugin that captures photos with GPS coordinates embedded in EXIF. Includes pinch zoom, flash, aspect ratio toggle and gallery picker.

2.5.3 - 2026-05-25 #

  • Fix — GPS no longer stripped / zeroed when picking from the gallery (Android)
    • Root cause: Android 10+ redacts location EXIF from any image read through a content URI unless the app holds ACCESS_MEDIA_LOCATION at runtime and reads the original via MediaStore.setRequireOriginal(). The old SAF (ACTION_OPEN_DOCUMENT) copy did neither, so the picked file arrived without GPS (or with 0,0), and the fake-GPS scrubber then "confirmed" the wipe.
    • Android picking now goes through a native pickImageWithGps: it requests ACCESS_MEDIA_LOCATION before opening the picker, then ACTION_PICK on the MediaStore images collection (yields a real MediaStore URI) → MediaStore.setRequireOriginal() → copy of the un-redacted bytes read immediately after the pick. A single picker is shown; the ImagePicker fallback only runs if the native picker cannot launch at all (no double-pick).
    • Picked images are no longer aggressively scrubbed: valid coordinates are returned untouched. The only scrub left strips coordinates that are exactly 0,0 (placeholder), so a picked photo never carries fake zeros — it has either real coordinates or no GPS at all.
    • containsFakeSamsungGps no longer flags a photo as fake on a 1970-01-01 GPS datestamp alone — that wiped valid coordinates from cameras that record location without a GPS time fix. Only missing / 0,0 coordinates count as fake now.
  • Dependencies: dropped device_info_plus (was only used for Samsung detection, which the new MediaStore path makes unnecessary).
  • iOS: camera_with_gps.podspec version bumped to match pubspec.yaml (was stuck at 2.5.0).

2.5.2 - 2026-05-18 #

  • Dependencies — widened version constraints
    • All runtime dependencies now use open ranges spanning multiple major versions so consumer apps are not forced to downgrade. Specifically:
      • camera: ">=0.11.1 <0.13.0"
      • geolocator: ">=13.0.4 <16.0.0"
      • image: ">=4.5.4 <6.0.0"
      • plugin_platform_interface: ">=2.1.8 <3.0.0"
      • image_picker: ">=1.1.2 <3.0.0"
      • device_info_plus: ">=11.5.0 <14.0.0"
      • native_device_orientation: ">=2.0.4 <4.0.0"

2.5.1 - 2026-05-18 #

  • Dependencies
    • Removed unused permission_handler and exif dependencies from pubspec.yaml. Consumer apps are no longer constrained to specific versions of these packages.

2.5.0 - 2026-05-12 #

  • Zoom support
    • Pinch-to-zoom over the camera preview (clamped to the device's getMinZoomLevel / getMaxZoomLevel).
    • Preset buttons (0.5x / 1x / 2x) above the shutter row, shown only when reachable by the active camera.
    • Zoom resets to 1x on camera switch and lifecycle resume.
  • GPS performance
    • Pre-warmed location via Geolocator.getLastKnownPosition() + getPositionStream() while the camera is open.
    • _handleGps now uses a bounded fallback chain (warmed → last-known → getCurrentPosition(timeLimit: 2s)) so a single shutter press no longer blocks for tens of seconds in airplane mode / cold-start scenarios.
  • Shutter latency: camera controller is now disposed after Navigator.pop, saving ~300-500 ms of perceived delay.
  • Fixes
    • Samsung SAF gallery picker no longer dead-locks when the user cancels the system file picker (Android RESULT_CANCELED now resolves pendingResult with null).
    • Added the public library entry point lib/camera_with_gps.dartimport 'package:camera_with_gps/camera_with_gps.dart'; now works as documented.
    • Bundle identifier typo in the example app's Debug build configuration corrected.
  • Polish
    • print(...) calls replaced with debugPrint(...) so logs no longer leak to release builds of host apps.
    • BottomBar accepts an optional above widget rendered inside the same SafeArea as the shutter row — used by ZoomPresets, structurally cannot be covered by the controls panel.
    • iOS camera_with_gps.podspec filled with real metadata (was an autogenerated stub).
  • Dependencies: SDK constraint tightened to >=3.0.0 <4.0.0; direct dependencies switched to caret constraints on currently-resolved versions for pana scoring.

2.4.0 - 2026-02-04 #

  • **Update to version 2.4.0 - Adjust dependency constraints, update SDK requirements,
  • and prepare for compatibility with Flutter 3.10.0 and Dart 2.19.

2.3.1 - 2025-11-13 #

  • ** "Introduce platform-specific gallery picker for Android and Samsung devices,
  • improve GPS handling for picked images,
  • and refactor photo processing code"

2.3.0 - 2025-11-13 #

  • Platform-specific photo processing and preview handling:
    • Split PhotoProcessor into platform-specific implementations (PhotoProcessorAndroid and PhotoProcessorIOS)
    • Split PreviewBox into platform-specific implementations (PreviewBoxAndroid and PreviewBoxIOS)
    • Each platform now has independent rotation logic and preview behavior
  • iOS improvements:
    • Added adaptive preview that rotates to landscape when device is rotated
    • Fixed photo rotation for both landscape orientations (left and right)
    • Implemented correct aspect ratio calculation after rotation using actual dimensions
    • Added 90° correction for landscape photos to ensure proper orientation
  • Android improvements:
    • Maintained portrait-only preview (UI locked to portrait)
    • Integrated OrientationService for accurate device orientation detection via sensors
    • Fixed horizontal photo rotation issues
    • Preserved original working rotation logic
  • Unified orientation detection:
    • Both platforms now use OrientationService for sensor-based orientation detection
    • iOS: Preview adapts with setState() for dynamic UI updates
    • Android: Orientation tracked without setState() to maintain fixed portrait preview
  • Code organization:
    • Created platform-agnostic facade classes that delegate to platform-specific implementations
    • Improved maintainability by separating iOS and Android behavior
    • Added comprehensive debug logging for orientation changes and photo processing

2.2.0 - 2025-11-12 #

  • **Refactor and enhance camera functionality: consolidate photo processing logic,
  • introduce animated rotation for UI,
  • refactor lifecycle handling,
  • optimize orientation services,
  • and update iOS configurations for EXIF and GPS metadata improvements."

2.0.0 - 2025-06-23 #

  • Major refactoring of camera app structure:
    • Split monolithic file into small, testable components
    • Created dedicated services, widgets, and utility classes
    • Improved code organization with clear separation of concerns
    • Enhanced maintainability and testability
  • Fixed iOS photo rotation issue:
    • Corrected rotation angle for photos taken in landscape right orientation on iOS devices
  • Updated code for better compatibility:
    • Replaced pattern matching switch expressions with traditional switch statements

1.1.7 - 2025-06-22 #

  • "Fix Android orientation detection issue where devices were always detecting landscapeLeft"
  • "Improve image rotation logic for Android devices in landscape mode"

1.1.6 - 2025-06-22 #

  • "Fix Android photo orientation issue when taking photos in landscape-right orientation"

1.1.5 2025-06-221 #

  • "Add removeGps method to handle GPS metadata removal and enable corresponding iOS build warning for quoted includes"

1.1.4 2025-06-221 #

  • "Refactor GPS metadata handling: remove confirmation dialog for invalid coordinates, streamline EXIF parsing,
  • add removeGps method, and enhance gallery feature with detailed metadata display."

1.1.3 - 2025-06-20 #

  • "Fix crash on launch in release APK by adding ProGuard rules to prevent obfuscation of critical classes"

1.1.2 - 2025-06-19 #

  • "Update Android build configs: adjust minSdkVersion for example app and plugin to maintain compatibility"

1.1.1 - 2025-06-18 #

  • Refactor CameraPreviewPage:
  • Add orientation-aware UI, optimize GPS handling, and improve photo cropping/rotation logic"
  • "Add device detection using device_info_plus for Samsung-specific gallery handling,
  • refine GPS checks, and update orientation-aware UI with enhanced margin adjustments"

0.2.0 - 2025-06-13 #

  • Integrate permission_handler package and update configurations
    • Added permission_handler dependency in pubspec.yaml and example project
    • Updated iOS project configuration to include permission_handler_apple
    • Removed unused permissions and microphone description in Info.plist
    • Updated AndroidManifest.xml for clean-up of blank lines

0.1.1+1 - 2025-03-31 #

  • Update openCamera to require BuildContext for navigation
  • Replaced navigatorKey with a BuildContext parameter in openCamera for improved navigation handling

0.1.0+2 - 2025-03-24 #

  • "Allow camera usage without GPS permission and enhance GPS status warnings"

0.1.0+3 - 2025-06-18 #

  • "Allow camera usage without GPS permission and enhance GPS status warnings"

3
likes
140
points
407
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Flutter plugin that captures photos with GPS coordinates embedded in EXIF. Includes pinch zoom, flash, aspect ratio toggle and gallery picker.

Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

camera, flutter, geolocator, image, image_picker, native_device_orientation, plugin_platform_interface

More

Packages that depend on camera_with_gps

Packages that implement camera_with_gps