A color identification Android app designed for everyone, especially users with color vision deficiencies. Point your camera at anything, tap on it, and instantly get the exact color name, hex code, RGB, and HSL values.
- Tap to identify: tap any spot on a photo to instantly name the color
- Two-tier color naming: returns a specific name (e.g. "Brick Red") and a primary category (e.g. "Red"), using a 155-color HSL nearest-neighbor lookup
- Color blindness simulation: toggle a live filter that shows the photo as seen through your vision type (protanopia, deuteranopia, tritanopia, and more) using Machado 2009 daltonization matrices
- Confusion warnings: automatically flags colors that are commonly confused for your specific type of color vision deficiency
- Color vision test: built-in Ishihara-style dot plate test (12 plates, programmatically generated) to determine your color blindness type
- Share color card: generates a designed PNG card with the color swatch, name, and values and shares it via Android's native share sheet
- Gallery import: analyze colors from any photo in your library, not just ones you take
- Front/back camera toggle
- Animated pins: spring bounce animation when a color pin is placed
- Hex copy to clipboard: tap the hex value to copy it instantly
| Layer | Technology |
|---|---|
| Language | Kotlin |
| UI | Jetpack Compose + Material 3 |
| Architecture | MVVM (ViewModel + StateFlow) |
| Camera | CameraX (Preview + ImageCapture) |
| Persistence | DataStore Preferences |
| Navigation | Navigation Compose |
| Color Science | HSL color space, Machado 2009 matrices |
| Typography | DM Serif Display + DM Sans (Google Fonts) |
| Min SDK | 26 (Android 8.0) |
- Onboarding: user indicates whether they have color vision deficiency
- Color vision test: 12 programmatic Ishihara-style plates score and classify the user's vision type
- Camera / Gallery: take a photo or pick one from the gallery
- Tap to analyze: normalized tap coordinates map to pixel position using ContentScale.Fit math; a configurable pixel region (S/M/L) is averaged and converted to HSL
- Color naming: HSL value is matched against 155 named colors via weighted nearest-neighbor distance
- Confusion detection: the identified color is checked against known confusion pairs for the user's vision type
- Simulation: a 3x3 RGB matrix (converted to Android ColorMatrix) is applied to the full bitmap to simulate the user's vision
- Clone the repo
git clone https://github.com/eduardobussien/Sense-Color.git
- Open in Android Studio (Hedgehog or newer)
- Let Gradle sync
- Run on a device or emulator (API 26+)
No API keys required. Everything runs on-device.
The built-in color vision test is a screening tool only and is not a substitute for a professional medical diagnosis.
Built with Kotlin + Jetpack Compose







