Perceive is a fully AI powered Android App that helps you to explore, learn and play like never before! Just point your camera at anything and start a conversation! See something interesting and want to know more about it? Just point the camera and ask away!
- Demo
- Screenshots
- Tech Stack
- Notable Features
- Source code, Architecture, & Testing
- Building and running the app
Coming Soon!
- Entirely written in Kotlin.
- CameraX for accessing and processing images captured from the camera.
- Hilt for dependency injection.
- Jetpack Compose for UI and navigation.
- Preferences Datastore for persistently managing key-value pairs.
- Kotlin Coroutines for threading.
- Kotlin Flows for creating reactive streams.
- Kotlin Gradle DSL and Gradle Version Catalogs for managing dependencies.
- Gemini Client SDK for using Google's Gemini-pro models.
- Haptic Feedback 🪄
- The app subtly improves the user experience by leveraging the on-device vibration actuators to provide haptic feedbacks when certain events occur in the app such as muting the assistant and tapping the mic.
- Dynamic Colors & Light/Dark Themes 🎨
- The app seamlessly adapts to your device's theme preferences. It utilizes dynamic colors when available and offers beautiful, pre-defined light and dark themes for a consistent and enjoyable experience.
- Themed App Icons (Android 13+) 🌈
- The app also supports the "Themed Icons" feature available on Android 13 and later. If the user has opted in for the feature on a device that is running Android 13 and higher, the app's icon will be tinted to inherit the coloring of the user’s chosen wallpaper and other themes.
- Intelligent Cache Management ✨
- The app automatically clears cache data once it's no longer required, ensuring efficient resource utilization.
- One time welcome screen 🙋🏼
- The app greets users with a captivating welcome screen (displayed only on the first time the user launches the app after installation), ensuring a simple but effective onboarding experience.
- Each package is considered as a separate cohesive module/sub-module representing a layer or a feature.
- The top level packages are divided by layers, and each sub-package within them represent a single individual feature.
- Commit messages follow the Conventional Commits specification.
- Generate a new API key to access the Gemini API from here.
- In the
local.properties
file of your project add the api key as shown below.
GOOGLE_GEMINI_API_KEY = PASTE-YOUR-API-KEY-HERE
- Build the app and run it.