In 2020, Moment has abandoned its Android camera app. At the time, co-founder Marc Barros wrote in an email to users that the company lacked the “engineering bandwidth” to keep up with an ever-growing selection of Android devices, each with device nuances. different photos. Rather than sinking resources into half-baked software with varying levels of functionality from device to device, Moment decided to halt development of the Android version and focus exclusively on iOS.
Access to the camera in third-party apps used to be… less than ideal on Android. Sure, the default camera app on your phone might be fine, but if you want to take photos in an app made by someone who didn’t make your phone, that’s kind of a go. of the. You’ll be able to take photos with your main camera, but they might not look as good, and you might not be able to access your phone’s fancy periscope telephoto lens or use your camera’s low-light mode. There’s a simple reason: for app developers, ensuring broad compatibility for camera features is a pain in the ass.
Developing camera functionality for iOS apps — indeed, developing iOS apps in general — is easier in part because there are so few iPhones. If you can make sure your app runs smoothly on all three or four new models every year, you’ve done your iOS due diligence. On Android, there are tons of new devices every year, each with different camera hardware and software. This fragmentation makes Android development a major headache: why should Moment figure out how, for example, to make the wide-angle camera work on every new Sony and OnePlus phone? To completely withdraw from Android development is not unreasonable.
Android actually has frameworks to handle this. The Camera2 API, introduced back in Android 5, allows apps to probe a phone’s camera functionality, provided the OEMs “expose” that functionality to the API. There is also CameraX, a Jetpack support library that makes it easier for developers to implement these camera features in their own applications in several ways. Primarily, it allows device makers to provide vendor extensions for their various camera features – things like low-light and portrait modes – that make implementing those features in third-party apps much less of a hassle. .
So what is the problem? Well, Camera2 and CameraX support isn’t mandatory – OEMs aren’t required to expose camera functionality to Camera2, or provide CameraX extensions to app developers. If you are curious, there is a app that will tell you what camera features your phone is exposing to Camera2and Google maintains a device list for which CameraX vendor extensions are supported. This list shows that while Samsung and Motorola are doing an admirable job, other OEMs apparently can’t be bothered, including, frustratingly, Google itself.
The complexity of the situation can also manifest itself in other ways. In December, OnePlus fans were outraged when an update to OxygenOS 12 nerfed camera access in third-party apps – including popular ports of Google’s camera app. Prior to the update, these GCam ports could access the phones’ non-core sensors – their ultra-wide, macro, and telephoto cameras. After that, only the main camera worked. However, according to a Twitter feed per Mishaal Rahman, Esper’s Senior Technical Writer and former XDA Developers Managing Editor, the change was likely incidental. It’s a bit technical, but the broad outline is that OxygenOS 12 is based on Oppo’s ColorOS, which doesn’t support the package name loophole of GCam apps used to access camera features. exposed to the Camera2 API. (For what it’s worth, OnePlus recognized it and indicates that it plans to fix the issue in an update.)
It’s all a mess, and there’s no sign of it getting any better in the near future. Google might try to persuade OEMs to make better use of Camera2 and CameraX, but given that it hasn’t prioritized CameraX extensions for its own phones, it’s not exactly leading by example. There aren’t many reasons why phones won’t live or die by the performance of third-party camera apps, and only a subset of a subset of customers know or care. From a business perspective, this is more or less a non-issue.
As it stands, the burden of ensuring that camera functionality in third-party apps works properly on a wide selection of Android devices falls largely on app developers, and the return on this investment of resources is not worth it for most of them. As Barros said, this consumes too much engineering bandwidth. There may be an abundance of choice on Android, but all that freedom doesn’t come without its downsides.