You may have noticed improved photo quality in the Android Snapchat app in recent months. Believe it or not, this is because Snapchat only just recently started using a decade-old camera API that predates every Android phone in existence.
The basic premise of APIs is simple — they're tools that the operating system provides to let apps make use of hardware and other system functions. With that in mind, let me explain why Snapchat is taking better photos recently, but is still far from being a high quality camera app for Android.
Android actually has a robust camera API that apps can use to control your phone's cameras at a very deep level. If leveraged properly, Camera2 API will allow an app to control manual exposure, ISO, shutter speed, focus, and even capture RAW images using your phone's camera hardware, among other features.
Camera2 API made its debut in Android Lollipop, so every phone running 5.0 or higher supports it. Since Lollipop was announced nearly 4 years ago, more than 82% of all Android devices in the world can take advantage of the top-notch photo capabilities in Camera2 API.
However, Snapchat only supports Camera2 API on select phones. The only device we're able to confirm is the Pixel 2, as Snapchat leverages the Pixel Visual Core in this device, which requires Camera2 API support to use.
A Snap Inc. spokesperson confirmed to us that the Android Snapchat app is now starting to use Camera1 API on many devices. This API was last updated in early 2008 with Android API level 2, which didn't even have a dessert-themed codename or version number because it was a prerelease version of Android.
In other words, the camera API Snapchat is currently using on most devices was finalized before commercially-available Android phones even existed. It's since been deprecated (read: abandoned) as of June 2014, because Google would prefer that apps use the newer, more robust Camera2 API.
Before the recent updates that brought in Camera1 API support, Snapchat was effectively taking a screen grab from your camera's viewfinder as a workaround so that it didn't have to use any Android camera APIs at all. This was an effective method for supporting as many Android devices as possible, but the image quality it produced was infamously bad.
To be clear, updating their app to use Camera1 API instead of this old workaround was a huge step in the right direction. It's largely why so many users have recently reported a bump in image quality. But still, that bump could've been bigger had Snapchat chosen to use the newer Camera2 API.
An interesting aspect here is that, in using Camera1 API, Snapchat isn't getting many benefits for the front-facing camera — the camera many Snapchatters use most. This is because Camera1 API was written before most phones had front cameras, so it doesn't provide tap-to-focus or other selfie cam enhancements.
There are some technical limitations to Camera2 API, which is probably why Snapchat has opted to use the older API for now. Some lower-end phones running Lollipop or higher don't have full support for the newer camera API. In these cases, doing simple things like requesting to turn on the camera flash can cause the app to crash. However, Snapchat could get around these issues by coding their app to access Camera2's varying levels: Legacy, Limited, Full, or Level 3.
Now that Snapchat is at least using Camera1 API, we decided to test it against itself. We installed an older version (10.3) on our Galaxy S6, which as best as we can tell does not use Camera2 API on any Snapchat version. We took a picture with v10.3, then updated to the current Snapchat version and took the same picture again to see how much of a difference the recently-added Camera1 API made.
Ignore the slight differences in exposure level (though that's a byproduct of not using the camera to its full potential) and focus more on the details and clarity. The newer version provides a greater HDR-like balance as well.
However, we took that same picture again using the Instagram app, which does take advantage of Camera2 API on the Galaxy S6. If you look closely, you'll see that Snapchat still has a ways to go in order to close the gap in picture quality.
To put it another way, there's a clear difference between Snapchat's old method of grabbing a still image from the camera feed when compared to the new method of using Camera1 API. But they're still not close to matching the image quality of Instagram and other apps using Camera2 API.
We started investigating this issue again for two reasons. First, user reports surfaced that Snapchat was asking for permissions using the granular Android 6.0+ model. This is a step in the right direction, and another example of Snapchat finally using Android tools properly, but it's not an indication of Camera2 API support.
The second reason we started looking into this issue was because Snapchat started a new ad campaign marketing itself as A New Kind of Camera. We were hoping this meant their rumored revamped Android app was ready and image quality had improved to Instagram levels, but Snapchat is still quite literally a decade behind.