Case Studies FilmKit
Side Project

FilmKit

Android Camera App — Camera2 API · RAW Capture

Year
2024
Type
Side Project
Status
In Progress
Platform
Android

FilmKit is an Android camera app built to fully exploit a phone's camera hardware using the Camera2 API — the low-level Android API that unlocks capabilities most default camera apps deliberately leave off the table.

The primary unlock is RAW photo capture and RAW video recording on phones whose hardware actually supports it. Most Android camera apps do not expose this even when the hardware can do it.

  • RAW photo capture (DNG format) on supported hardware
  • Manual controls: ISO, shutter speed, white balance, focus distance
  • RAW video capture on devices with Camera2 LEVEL_3 support
  • Hardware capability detection on launch — only enables features the device can actually run

Android hardware fragmentation — no two phones support the same thing

The Camera2 API exposes different capability levels depending on the device hardware. LEGACY, LIMITED, FULL, and LEVEL_3 — each unlocking progressively more features. A feature that works perfectly on one Android phone may crash or be unavailable on another because the underlying hardware simply doesn't have it.

The core problem

I couldn't assume RAW capture was available just because Camera2 was. I had to build hardware-detection logic that runs at app launch, queries the device's actual Camera2 capability level, and only enables the features that device can support. Showing a RAW button on a phone that can't do RAW would mean a crash or a silent failure — both worse than not showing it at all.

The detection checks for Camera2 FULL or LEVEL_3 support before enabling RAW options, falls back gracefully on LEGACY/LIMITED devices, and surfaces a clear explanation to the user about what their hardware does and doesn't support.

Screenshots & Demo
Viewfinder — coming soon
Manual controls — coming soon
Capability check — coming soon
Android Camera2 API RAW / DNG Hardware detection Manual camera controls Kotlin