This blog post is trying to shed some light into one of Android’s fragmentation corners – one that’s mainly relevant for people interested in more advanced photography and videography apps to take manual control over their image composition.
First off, I have to say that I’m not a coder / software expert at all so this comes from a layman’s point of view and I will – for obvious reasons – not dig too deep into the more technical aspects underneath the surface.
Now, what is an API? API stands for „application programming interface“. An operating system uses APIs to give (third party) developers tools and access to certain parts of the system to use them for their application. In reverse, this means that the maker of the operating system can also restrict access to certain parts of the system. To quote from Wikipedia: „In general terms, it is a set of clearly defined methods of communication between various software components. A good API makes it easier to develop a computer program by providing all the building blocks, which are then put together by the programmer.“ Now you know it.
Up to version 4.4 (KitKat) of Android, the standard API to access the camera functionality embedded in the OS was very limited. With version 5 (Lollipop), Google introduced the so-called Camera2 API to give camera app developers better access to more advanced controls of the camera, like manual exposure (ISO, shutter speed), focus, RAW capture etc. While the phone makers themselves are not necessarily fully dependent on Google’s new API, because they can customize their own version of the Android OS, third party app developers are to a large extend – they can only work with the tools they are given.
So does every Android device running Lollipop have the new Camera 2 API? Yes and no. While Camera2 API is the new standard Camera API since Android Lollipop, there are different levels of implementation of this API which vary between different phone makers and devices. There are four different levels of Camera2 implementation: Legacy, Limited, Full and Level 3. ‚Legacy‘ means that only the features from the old Camera1 API are available, ‚Limited‘ means that some features of the new API are available, ‚Full‘ means that all basic new features of Camera2 are available and ‚Level 3‘ adds some bonus features like RAW capture on top of that.
Depending on the level of implementation, you can use those features in advanced image capturing apps – or not. An app like Filmic Pro can only be installed if the Camera2 support level is at least ‚Full‘ – otherwise you can only install the less feature-packed Filmic Plus. Lumio Cam on the other hand can be installed on most devices but you can only activate the pro mode with manual exposure and focus if the support level is at least ‚Full‘ again. So if you’re interested in using advanced third party apps for capturing photos or recording video with manual exposure controls etc. you want to have a device that at least has ‚Full‘ Camera2 API support.
But what devices have ‚Full‘ Camera2 support? Currently there are two main categories: Google hardware (phones) and (many/most) flagship phones that were released after Android Lollipop came out. Actually, it seems that the latter really only got going with Android 6 Marshmallow (I guess phone makers needed some time to figure out what this was all about ;)) It doesn’t come as a surprise that Google gives their own devices full support (Nexus & Pixel lines). That means even an almost ancient, pre-Lollipop device like the original Nexus 5 has received full support in the meantime (via OS update). Of course all Nexus phones after that (Nexus 6, Nexus 5X, Nexus 6P) are included and it goes without saying Google’s Pixel phones as well.
Now let’s head over to other smartphone manufacturers (so-called OEMs, Original Equipment Manufacturers) like Samsung, LG, HTC, Huawei, Sony, Lenovo/Motorola, OnePlus etc. Many of them offer at least the crucial ‚Full‘ support level on their flagships that came out with Android 6 Marshmallow installed, some already on the ones that came out with Android 5 Lollipop: Samsung with it’s S-series (S6, S6 Edge, S6 Edge Plus via update, S7, S7 Edge etc.), LG with its G-series (starting with the G4) and V-series (starting with the V10), HTC (starting with the HTC 10), Lenovo/Motorola (starting with the Moto Z), OnePlus (starting with the OnePlus 3/3T), and Sony (starting with the Xperia Z5 via update as far as I know). Sony however is a special case: Their Xperia series has been blacklisted by the developers of FilmicPro/Plus because of major issues that occurred with their devices – you can’t install their apps on a Sony phone at the moment. On the other hand, there are also a few major smartphone OEMs that yet have to offer full Camera2 support for their flagships, the most prominent black sheep being Huawei with its P & Mate series, even the brand new Huawei P10 with all its camera prowess has only limited support. The same goes – unsurprisingly – for Huawei’s budget brand Honor. Other OEMs that don’t offer full Camera2 support in their flagships include Asus (Zenfone 3) and Blackberry (KeyOne). Let’s hope that they will soon add this support and let’s also hope that proper support trickles down to the mid-range and maybe even entry-level phones of the Android universe.
Are you curious what Camera2 support level your phone has? You can use two different apps (both free) on the Google Play Store to test the level of Camera2 implementation on your device. Camera2 probe & Camera2 Probe.
You can also find a (naturally incomplete) list of Android devices and their level of Camera2 API support here, created and maintained by the developer of the app „Camera2 probe“:
If you have a device that is not listed, you can help expanding the list by sending your device’s results (no personal data though) to the developer (there’s a special button at the bottom of the app).
For more in-depth information about Camera2 API, check out these sources:
If you have questions or comments, feel free to get in touch!