(NOTE: I have written a new, updated article on the topic here.)
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:
As always, if you have questions or comments, drop them here or hit me up on the Twitter @smartfilming. If you like this article, also consider subscribing to my free Telegram channel (t.me/smartfilming) to get notified about new blog posts and receive the monthly Ten Telegram Takeaways newsletter about important things that happened in the world of mobile video.
For an overview of all my blog posts click here.
I am investing a lot of time and work in this blog and I’m even paying to keep it ad-free for an undistracted reading experience. If you find any of the content useful, please consider making a small donation via PayPal (click on the PayPal button below). It’s very much appreciated. Thank you! 🙂
Is it posssible that the stock camera app can support RAW but camera probe only shows ‘legacy’ level of api support? My phone can capture RAW, adjust exposure manually and also change iso. There is a also a mode where i can select F number! F2.2 to F44, Don’t know how its possible. Btw i have Nubia N1 and it got only legacy support. Can i change this to level 3 by rooting?
Yes, it’s possible that the native camera app uses a different imaging pipeline than the API provided for 3rd party apps. This is somewhat unfortunate but some phone makers do this to bind users to their own camera app. I really don’t believe you actually have the ability to change the aperture (f stops), that should be physically impossible on 99.9% of smartphones (there’s Samsung’s S4 Zoom and K Zoom that actually have the ability to change aperture) because the aperture is fixed. I have heard from someone that it’s sometimes possible to activate hidden full Camera2 API by rooting the device and inserting some code (he did it with a LeEco phone) but I don’t think that’s possible with every device.
The list is far easier than this.
Hi! Just took a look at the list. It’s a bit dated by now and focuses on RAW PHOTOgraphy only (although, strangely enough, it uses an image of a phone recording video!). My article however is related to pro VIDEOgraphy and for this RAW photo ability is not important. So even phones with “only” full Camera2 API support (instead of Level 3 including RAW) can run Filmic Pro and use advanced controls in other pro video recording apps. Actually, even limited Camera2 API support gives you advanced manual controls (as I pointed out in another blog post) in apps like Open Camera, ProShot or Footej Camera. So the list you’ve mentioned might be useful for those specifically interested in RAW photography (which I’m not) but it’s only covering part of the topic.
Well , I’m using Asus Zenfone 5z and it has full implementation of camera2api , though i never felt the need to use any third party application since Asus’s native camera application provides for full manual controls and RAW images. And the Gcam mods generally don’t have quite the same quality night modes that make the Pixel range stand tall amongst credible competition.
When it comes to photography many/most Android phone makers include a pro mode with manual controls nowadays. Unfortunately it’s a VERY different story when it comes to video which is more important to me. With the exception of LG (and until recently Samsung), no native camera app has advanced manual controls for video and that’s why proper Camera2 API and 3rd party apps are needed to compensate.
I’m not certain where you’re getting your info, however great topic.
I needs to spend some time finding out more or figuring out more.
Thanks for fantastic info I was in search of
this info for my mission.
The information comes from personal experience/experimentation, research and conversations with app developers.
Folge mir auf TwitterMy Tweets