Skip to content

robzonbi/MetaPi-Android

Repository files navigation

MetaPi – Android

MetaPi is an Android application built with Kotlin and Jetpack Compose that enables users to:

  • Upload images from their device
  • View and edit EXIF and IPTC metadata
  • Crop and adjust photos
  • Set or modify location data via Google Maps integration
  • Prepare and upload images to cloud storage for use in Pi3D digital picture frames

Table of Contents

  1. Tech Stack
  2. Architecture
  3. Project Structure
  4. Features
  5. Setup & Installation
  6. API Keys & Configuration
  7. Build & Deployment
  8. Planned Enhancements

Tech Stack


Architecture

The app follows the MVVM architecture to ensure separation of concerns:

  • Model: Data classes and metadata parsing logic
  • ViewModel: Holds UI state and business logic
  • View (UI): Composable functions for screens and components

Project Structure

app/
│
├── manifests/
│ └── AndroidManifest.xml
│
├── kotlin+java/com.technolab.metapi/
│ ├── data/ # Data classes (ImageItem), EXIF parsing (ExifInterface), IPTC parsing (Ashampoo/KIM)
│ ├── model/ # Domain models for metadata
│ ├── navigation/ # Navigation graph and routes
│ ├── ui/
│ │ ├── components/ # Reusable composable UI elements
│ │ ├── screens/ # Full screen UIs (Gallery, PhotoDetails, Crop, LocationPicker)
│ │ └── theme/ # Color, typography, shapes
│ ├── util/ # Helpers (file I/O, date formatting, permissions)
│ ├── viewmodel/ # ViewModels for managing screen state
│ ├── MainActivity.kt # Entry point
│ └── MetaPiApp.kt # Composable app root
│
├── res/ # Drawables, layouts, mipmaps, strings
└── build.gradle.kts # Module Gradle build file

Features

  • Gallery Screen – Displays images from local storage, selectable for editing
  • Photo Details Screen – Displays full image + metadata, allows editing of EXIF/IPTC fields
  • Crop Screen – Crops images via CanHub Image Cropper
  • Location Picker – Allows location selection on a map, writes to metadata
  • Google Maps Integration – Map preview and location tagging
  • EXIF/IPTC Parsing – Reads and writes camera + descriptive metadata via ExifInterface and Ashampoo/KIM
  • Cloud Upload Preparation – Processed images ready for Pi3D frame sync

Setup & Installation

  1. Clone the Repository

    git clone <repo-link>
    cd MetaPi-Android
  2. Open in Android Studio

  3. Sync Gradle

  • Android Studio should prompt automatically.
  1. Configure Google API Keys
  • Enable Maps SDK for Android and Places API in Google Cloud Console.

  • Add your API key in local.properties:

    MAPS_API_KEY=your_api_key_here
  1. Run the App
  • Select an emulator or physical device and click Run.

API Keys & Configuration

  • Google Maps SDK for Android – Displays maps for location picking.
  • Google Places API – Autocomplete and geocoding.

Security Note: Store API keys in local.properties or environment variables. Do not commit them to source control.


Build and Deployment

  1. Build > Generate Signed Bundle / APK
  2. Choose APK → Provide keystore details → Release.
  3. Output is in app/release/app-release.apk.

Planned Enhancements

  • Direct Pi3D Picture Frame integration via MQTT or cloud sync.
  • Frame preview simulation.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages