Native Android Camera App with Live Date, Time & Location Stamp on Photos and Videos (Kotlin, CameraX)
Budget / Salary$30–50
TypeFreelance project
LocationRemote
Posted1 hour ago
I need an experienced Android developer to build a native Android camera app that burns a visible date, time and location stamp into every photo and video. The scope is fixed and fully defined below. Please don’t propose extra features.
Tech stack (required)
Kotlin, Jetpack Compose (Material 3), CameraX (core, camera2, lifecycle, view, video, effects)
Min SDK 29 (Android 10), target and compile SDK 36, JDK 17, Gradle Kotlin DSL
No accounts, ads or analytics SDKs
Capture
Photo and Video modes, switched with a full-width animated tab control
Photo: white circular shutter. Video: red record/stop button
Photos saved as stamped JPEG in Pictures/TraceStamp, upright (EXIF rotation handled)
Videos saved as H.264/AAC MP4 at 1080p (fall back to the nearest available quality) in Movies/TraceStamp
The stamp is rendered into the video frames (CameraX OverlayEffect) and the timestamp keeps advancing during recording
Front/rear camera switch, hidden if the device has only one camera
Flashlight toggle, disabled when the camera has no flash
Both volume keys work as the shutter, or start/stop recording in Video mode
Saving indicator, plus a “saved” confirmation the user can close that also clears after 5 seconds
“View Last” and “Share Last” buttons that open Android’s viewer and share sheet and say Photo or Video based on the last saved file
Screen stays awake while the camera is open and returns to normal timeout when the app is in the background
Location (required for every capture)
Capture is blocked until there’s a recent GPS fix
Display options: address only, coordinates with accuracy only, or both (default)
Address comes from a small serverless endpoint (Vercel, Node.js) that I’ll own. The app POSTs latitude, longitude and accuracy. The server calls Geoapify Places and returns the nearest named place inside the accuracy radius as “Near [Place], [address]”. If there’s no place, it uses Geoapify reverse geocoding. The API key stays on the server, never in the APK.
If the endpoint is unavailable, fall back to Android’s built-in Geocoder
Users can’t type or edit place names
OpenStreetMap and Geoapify attribution shown in the app
Stamp settings (saved between sessions)
Live stamp preview on the camera screen
One custom text line
Date format: readable (20 Oct 2026), numeric (20/10/2026) or ISO (2026-10-20), always with HH:mm:ss and timezone
Local time or UTC
Font: sans, serif or mono
Text color: white, lime or yellow
Text size: small, medium or large
Background: none, soft or dark
Margin: tight, medium or wide
Line order: time first or location first
7 positions: top left, center, right; center; bottom left, center, right
Link to the Privacy Policy
Website
A simple one-page responsive landing site (static HTML/CSS) with hero, features, privacy, how it works, download and FAQ sections, plus Privacy Policy and Terms pages. Hosted on Vercel together with the location endpoint.
Download buttons link to Google Play. On non-Android devices they show a QR code popup.
Deliverables
Full source code in a Git repository I own (Android app, endpoint and website)
A signed release APK, plus the signing setup kept outside the repo
Unit tests for the location endpoint
A README with build and deploy steps
Testing on at least one real Android 10+ device, with a sample photo and video showing the stamp
To bid, please share
Native Android apps you’ve shipped that use CameraX, ideally with video recording or overlays
Your timeline and milestone plan
Confirmation that you’ll use native Kotlin (not Flutter, React Native or Expo)
Tech stack (required)
Kotlin, Jetpack Compose (Material 3), CameraX (core, camera2, lifecycle, view, video, effects)
Min SDK 29 (Android 10), target and compile SDK 36, JDK 17, Gradle Kotlin DSL
No accounts, ads or analytics SDKs
Capture
Photo and Video modes, switched with a full-width animated tab control
Photo: white circular shutter. Video: red record/stop button
Photos saved as stamped JPEG in Pictures/TraceStamp, upright (EXIF rotation handled)
Videos saved as H.264/AAC MP4 at 1080p (fall back to the nearest available quality) in Movies/TraceStamp
The stamp is rendered into the video frames (CameraX OverlayEffect) and the timestamp keeps advancing during recording
Front/rear camera switch, hidden if the device has only one camera
Flashlight toggle, disabled when the camera has no flash
Both volume keys work as the shutter, or start/stop recording in Video mode
Saving indicator, plus a “saved” confirmation the user can close that also clears after 5 seconds
“View Last” and “Share Last” buttons that open Android’s viewer and share sheet and say Photo or Video based on the last saved file
Screen stays awake while the camera is open and returns to normal timeout when the app is in the background
Location (required for every capture)
Capture is blocked until there’s a recent GPS fix
Display options: address only, coordinates with accuracy only, or both (default)
Address comes from a small serverless endpoint (Vercel, Node.js) that I’ll own. The app POSTs latitude, longitude and accuracy. The server calls Geoapify Places and returns the nearest named place inside the accuracy radius as “Near [Place], [address]”. If there’s no place, it uses Geoapify reverse geocoding. The API key stays on the server, never in the APK.
If the endpoint is unavailable, fall back to Android’s built-in Geocoder
Users can’t type or edit place names
OpenStreetMap and Geoapify attribution shown in the app
Stamp settings (saved between sessions)
Live stamp preview on the camera screen
One custom text line
Date format: readable (20 Oct 2026), numeric (20/10/2026) or ISO (2026-10-20), always with HH:mm:ss and timezone
Local time or UTC
Font: sans, serif or mono
Text color: white, lime or yellow
Text size: small, medium or large
Background: none, soft or dark
Margin: tight, medium or wide
Line order: time first or location first
7 positions: top left, center, right; center; bottom left, center, right
Link to the Privacy Policy
Website
A simple one-page responsive landing site (static HTML/CSS) with hero, features, privacy, how it works, download and FAQ sections, plus Privacy Policy and Terms pages. Hosted on Vercel together with the location endpoint.
Download buttons link to Google Play. On non-Android devices they show a QR code popup.
Deliverables
Full source code in a Git repository I own (Android app, endpoint and website)
A signed release APK, plus the signing setup kept outside the repo
Unit tests for the location endpoint
A README with build and deploy steps
Testing on at least one real Android 10+ device, with a sample photo and video showing the stamp
To bid, please share
Native Android apps you’ve shipped that use CameraX, ideally with video recording or overlays
Your timeline and milestone plan
Confirmation that you’ll use native Kotlin (not Flutter, React Native or Expo)
Apply on Freelancer →
Project sourced from Freelancer.com. Applications happen directly on the original platform — we never collect your data.