Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Consider replacing the stock legacy and unmaintained AOSP camera app with GrapheneOS Secure Camera #27

Open
ghost opened this issue Jun 30, 2022 · 0 comments

Comments

@ghost
Copy link

ghost commented Jun 30, 2022

I think it's pretty safe to say the stock camera app is way too barebones and is not as functional as other camera apps out there and plenty of people are downloading custom camera apps.

However as of Android 11 the system integrated camera app can only provide camera intents for IMAGE_CAPTURE, VIDEO_CAPTURE, and IMAGE_CAPTURE_SECURE.
https://developer.android.com/about/versions/11/behavior-changes-11#media-capture
Because of this, the quality of the stock camera is very important.

The stock camera has invasive permissions for no reason such as internet access, NFC access, ability to set wallpaper, etc.
https://github.com/ProtonAOSP/android_packages_apps_Camera2/blob/sc-qpr3/AndroidManifest.xml#L11-L29

The JPEG library in the AOSP camera app hasn't been updated for many years and is in a memory unsafe language and has other legacy target SDKs and libraries.
It's a largely unportable pure Camera2 app when the more modern and easier equivalent is CameraX.

GrapheneOS Secure Camera is currently in use as a default camera app in DivestOS without any issues and their users are largely happy with it. It's made in pure Kotlin, it uses the CameraX library, it's extremely fast and has comparable if not better quality than GCam.
The app doesn't request invasive permissions. It only uses Sensors (GrapheneOS permission) and Camera permission. It will only request Microphone and Location if you actually record a video or enable geotagging. Our geotagging also supports both approximate (coarse) and precise location access for geotagging. We enable EXIF removal by default and we use the MediaStore properly as well.

It's also a QR code scanner that actually shows you what you scanned before you decide to open it instead of immediately opening it and/or not showing you the raw data which is surprisingly a security feature.

Our camera app has over 10,000 downloads on Play Store and a very high positive rating (4.5+ stars average) with builds also being available on our GitHub and custom secure app store. Future CameraX vendor extensions are coming which will add support for HDR, Auto, Night Sight, etc.

There is no evidence that the stock camera supports the Camera2 vendor extensions of these (besides maybe a generic implementation of HDR that doesn't come close to proper Pixel HDR+) as they are highly complex to integrate (like all of Camera2 itself) once the extensions are available. CameraX makes integrating these extensions very simple and easy.

Our repo is here: https://github.com/GrapheneOS/Camera
Our documentation on the app is here: https://grapheneos.org/usage#grapheneos-camera-app
Integrating it is simple as shown by the two relevant repos here:
https://github.com/GrapheneOS/platform_external_Camera (which has the prebuilts and makefile)
https://github.com/GrapheneOS/platform_manifest/blob/12.1/default.xml#L146 (adding a new remote and path)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

0 participants