Skip to content

Repository files navigation

GeoTag Camera

GeoTag Camera

No ads. No paywall. We know, it's suspicious.

Free, open source, ad free Android camera app that stamps every photo with GPS location, address and timestamp, signs it on-device so anyone can later prove it hasn't been edited, and works fully offline. Built for field surveyors, college students and NGO teams who need to prove where and when a photo was taken, without paying for it or handing over their data.

License: GPL v3 Platform Build Status

Website: https://konkomaji.github.io/geotagcamera/

Why this exists

Most geotagging camera apps on the Play Store make you sit through ads before you can even open the camera, lock basic stamp fields behind a subscription, ask for permissions that have nothing to do with taking a photo, and stop working the moment you lose signal. GeoTag Camera fixes that, in the open, so anyone can read the code and check it for themselves.

Features

Capture

  • Clean camera capture built on CameraX, nothing running in the background that shouldn't be
  • GPS coordinates, address and timestamp stamped directly onto the photo
  • GPS data also written into the photo's own EXIF metadata, so GIS and photo tools pick it up automatically
  • Every capture is published straight to your phone's Photos/Gallery app (Pictures/GeoTagCamera), nothing leaves your phone unless you choose to share it

Built to actually work in the field

  • Offline first reverse geocoding, addresses are cached on-device so the stamp keeps working with no signal
  • Every capture fetches a fresh location instead of reusing a stale cached one
  • Only camera and location are requested on Android 10+; Android 9 and older also needs storage access to save into the gallery, nothing else, ever

Made for your organization

  • Choose exactly which fields show on the stamp: coordinates, address, timestamp, altitude, accuracy, compass bearing
  • Add your college, company or project name to the stamp, free, no paywall

Trust and verification

  • Every photo is SHA-256 hashed and signed on-device using a key generated in the Android Keystore, so you can later prove it hasn't been edited since capture
  • Field workers can add a signature directly onto the photo before saving, useful for inspection reports and muster-roll style documentation

No ads, no tracking, ever

  • No ad SDKs, no analytics SDKs, no hidden network calls
  • No account, no cloud sync, no server collecting anything, because there is no server

Tech stack

  • Kotlin, Jetpack Compose
  • CameraX for capture
  • Fused Location Provider for GPS
  • Android's built-in Geocoder for reverse geocoding (no third party API key)
  • Room for local storage
  • Android Keystore for on-device photo signing
  • Material 3

Project status

Version 1.0.0 shipped with everything listed under Features above. 1.1.0 is a full redesign, not a feature bolt-on: a real design system (new brand mark, a proper stamp with a card and a map thumbnail instead of bare text floating on the photo), a live preview of the stamp right in the viewfinder before you shoot, a share button, real camera controls (flash, zoom, grid, timer), and a way to verify a photo someone else sends you, not just the one you captured yourself. Details below and in the roadmap.

Roadmap

1.1.0, in design

  • Redesigned stamp: card background, real hierarchy, an optional map thumbnail (OpenStreetMap only, never Google Maps, so the app stays offline-first with no API key)
  • Live, accurate stamp preview inside the viewfinder itself, not a guess you check after the fact
  • Share straight from the app, right after capture and from the gallery
  • Real camera controls: flash, front/back switch, zoom, grid, aspect ratio, timer, tap-to-focus
  • Verify a photo someone else sent you, even if it was never captured on your device
  • Organization logo image on the stamp, not just text
  • A considered first-run screen that explains the two permissions before Android asks

Later

  • Video geotagging
  • Project and site folders to organize captures
  • Batch export to PDF report
  • CSV, KML and GeoJSON export for GIS workflows
  • Voice notes attached to photos
  • Before and after photo pairing
  • Multiple stamp templates
  • Quick capture home screen widget
  • Biometric app lock
  • Manual local backup and restore
  • Material You dynamic theming

Building from source

git clone https://github.com/konkomaji/geotagcamera.git
cd geotagcamera

Open the project in Android Studio (Koala or newer) and let it sync, or build from the command line:

./gradlew assembleDebug

Minimum SDK is 26 (Android 8.0), target SDK is 34.

Permissions

Permission Why it's needed
Camera To take the photo
Location (fine and coarse) To read GPS coordinates for the stamp and EXIF data
Storage (Android 9 / API 28 and below only) To save the finished photo into the gallery — Android 10+ does this without any storage permission

That's the complete list. No broad storage access on modern Android, no contacts, no network state beyond what the OS grants by default, no background location.

Contributing

Issues and pull requests are welcome. If you're planning a larger change, open an issue first so we can talk through the approach before you put the work in.

License

GeoTag Camera is licensed under the GNU General Public License v3.0. You're free to use, study, modify and redistribute it under the same terms.

Author

Built by Konko Maji.

About

Free, open source, ad free Android app that stamps photos with GPS location, address and timestamp. Built for field surveyors, students and NGO teams.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages