One of the main features declaring an Android device as a purchase candidate is its camera quality. While Android photography and video recording capabilities fall almost always behind the ones of professional cameras, you could always rely on your Android device to catch a special moment with high image quality and a small file size. Most higher-end mobile boards are equipped with capable image processing chips which, coupled with a decent camera sensor, can produce impressive results.
As with every peripheral device, Android uses a Hardware Abstraction Layer (HAL) to mask the differences between different camera sensors and to provide a common Application Programming Interface (API) for Application developers. As a result, complicated image processing algorithms are hidden away from the third-party developer and most times these algorithms are vendor-specific and not configurable. Furthermore, due to vendor software limitations (for marketing purposes), it is even possible for a budget device to have the same camera sensor as a high-end device with nowhere near the same image quality.
Despite the above limitations, most camera sensors (even sensors on budget phones) offer some sort of configuration through the Camera HAL. Features like Exposure, ISO mode, Face Detection and White Balance can be fully configured with a capable Camera App. This enables users to manually change settings and apply filters to get better photos and videos. Most of these features though are not readily configurable through stock Camera Apps on some devices. The user needs to install a separate App to make use of them.
Meet OpenCamera, a special third-party Android Camera App being developed since 2013. It is special because it is Open Source, you can get it free of charge, it does not contain any Ads and it supports almost all features exposed by the Camera HAL to the Android Application Framework, plus some interesting professional level features. While the User Interface is not that appealing, taking photos and recording videos is really easy:
- Different focus modes, depending on sensor capabilities: Auto, Manual, Macro, Continuous Picture, Infinity and Locked focus modes
- Select ISO mode depending on sensor support
- Apply Color, Scene Mode, and White Balance effects
- Enable/Disable Face detection
- Burst Mode with configurable delay
- Auto-level of pictures
This feature ensures photos come out perfectly level, without the need to edit them afterward in a photo editor. It is memory intensive and disabled on devices with limited memory. Also, produced images might have smaller dimensions because the process will crop the original image to level it correctly.
- Camera Flash support
- Capture Images with the voice command “cheese” or by making a noise
- Support for exposure compensation/lock
- Select JPEG Quality for photos
- Configurable image save location with custom filename prefix and suffix
- Apply date and time stamp, location coordinates, and custom text to photos
- Selfie photo support, including support for “screen flash” and front camera mirroring
- High Dynamic Range (HDR) support. This feature handles wide ranges of brightness by taking three different images at different exposures and combining them to produce a single image, which includes all the colors from the scene. OpenCamera uses a sophisticated HDR algorithm and not any kind of filter, so this process might be slow. Furthermore, images used for HDR processing can additionally be saved separately on device storage.
- Dynamic Range Optimization (DRO) support. DRO is a feature similar to HDR. It differs from HDR in that it only needs to capture one image for its image processing, so it is generally faster. DRO is available on all versions of the Android Camera API and on Android versions 5.x and later.
- Automatic Exposure Bracketing (AEB) support. AEB takes multiple images at different exposure levels and saves them to storage to be later processed in separate HDR applications. The number of images captured is configurable.
- Camera Timer with optional voice countdown and Auto-Repeat mode with configurable delay
- Video recording, including High Definition video
- Support for recording audio from a different source than the one predefined on the device firmware. Also, OpenCamera supports some external microphones.
- Configure audio channels (limited device support)
- Store date/time and location as video subtitles (.SRT format)
- Apply maximum video file size and maximum video duration
- Configurable volume keys behavior
- Configurable GUI display for left or right-handed users
- Zoom via multi-touch gesture and single-touch control
- Upside-down preview option for use with attachable lenses
- Support for overlay grids and crop guides on image preview
- Geotagging support for both photos and videos. For photos, this includes compass direction too.
- Support for Android Camera2 API:
- Manual Focus distance
- Manual ISO
- Manual Exposure Time
- Manual White Balance Temperature
- RAW (DNG) files
As with all third-party Camera Apps, some features might be unavailable on some devices. For example, some Sony devices only support taking photos up to 5 megapixels, due to Sony limiting available image sizes on third-party Apps. Also, on many high-end devices, 4K UHD video might not be available because the vendor only provides this feature through their special Camera App shipped with the stock device firmware.
OpenCamera is under active development with new features appearing regularly. So, make sure you check out the project’s site on Sourceforge for latest news and additions. Finally, if you like the App, you can donate to the developer by buying the paid donation version.
- Project’s Official Site: OpenCamera