This is the new GrapheneOS Camera app based on Android's modern CameraX library. It's currently in the alpha phase and isn't yet included in GrapheneOS. It will replace the AOSP Camera app (Camera2) in GrapheneOS when it's more mature.
A new camera app for GrapheneOS based on the modern CameraX library.
Overview
Comments
-
[REQ] HDR settings
Nice to see so mutch "bugfix" releases, anyway it would be great to add more functions too.
For example it would be useful to have more controls for HDR shootings (on/off, exposure bracketing, etc).
Unfortunally we can't provide you any "inspiring app" released under a MIT-compatible license, sorry.
Hope that inspires.
enhancement -
Request for acceptance: Publish in F-Droid
Are you as developers okay in case I open a PR containing F-Droid metadata? This is one of the few well-working camera apps for Android, I'd love to include it into F-Droid hence.
-
QR Scan freezes camera
https://user-images.githubusercontent.com/24222032/166290230-dd8241c7-e8ed-4091-91fb-52604eaa38fa.mp4
Steps to reproduce:
- Open Camera
- Switch to QR Scan
- Camera viewer freezes
Device: OnePlus 6 OS: DivestOS 18.1 Build Number: RQ3A.211001.001 Kernel: 4.9.282-dos.p132-gd57522d38ec1-dirty Sat Apr 9 14:12:58 EDT 2022 Logcat: logcat.txt
bug -
Closing the app while a photo is saving causes it to be lost
Took me a bit to figure out what was happening here, but every now and then when I open my camera to snap a quick picture, I'll end up not having the photo later. Seems to be that if the app is closed before the photo is finished saving (which takes a second or two on my Pixel 4, GrapheneOS), the image is just lost forever. I often open my camera by double-tapping the lock button to take a photo and then close it after it's done, or take a few and end up closing it before the last photo is saved, which leads to lost pictures.
enhancement -
Entire camera module becomes unresponsive
As said, latest version is rendering the camera module useless unless the device is rebooted.
This happens only upon clicking on the video tab, which overrides the entire camera module resulting in crashing of camera in other apps.
(ZSL turned on)
Device: Nokia 6.1 Plus (DRG) Android version: 12.1 (LineageOS 19.1) Architecture: arm64
question -
Increase field of view for devices with default video stabilization
Digital video stabilization reduces the field of view to provide a buffer to move the target area around within. This mode does not make sense for static images, therefore deactivate this mode.
Reference: https://issuetracker.google.com/issues/230013960?pli=1
Signed-off-by: Adam Serbinski [email protected]
-
QR Scanner crash
bugE/MessageQueue-JNI: java.lang.IllegalArgumentException: Invalid extension mode! at androidx.camera.extensions.ExtensionsInfo.getExtendedCameraConfigProviderId(ExtensionsInfo.java:287) at androidx.camera.extensions.ExtensionsInfo.getFilter(ExtensionsInfo.java:195) at androidx.camera.extensions.ExtensionsInfo.isExtensionAvailable(ExtensionsInfo.java:134) at androidx.camera.extensions.ExtensionsManager.isExtensionAvailable(ExtensionsManager.java:413) at app.grapheneos.camera.CamConfig.startCamera(CamConfig.kt:1164) at app.grapheneos.camera.CamConfig.switchMode(CamConfig.kt:1500) at app.grapheneos.camera.ui.activities.MainActivity.finalizeMode(MainActivity.kt:1049) at app.grapheneos.camera.CamConfig.loadTabs$lambda-15$lambda-14$lambda-13$lambda-12(CamConfig.kt:1379) at app.grapheneos.camera.CamConfig.$r8$lambda$Ds0vyOYJx4eUBiFjSYJaqoFjx2E(Unknown Source:0) at app.grapheneos.camera.CamConfig$$ExternalSyntheticLambda5.onTouch(Unknown Source:4) at android.view.View.dispatchTouchEvent(View.java:14372) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3112) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2785) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799) at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:522) at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1877) at android.app.Activity.dispatchTouchEvent(Activity.java:4193) at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69) at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:480) at android.view.View.dispatchPointerEvent(View.java:14635) at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:6166) at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5969) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5460) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5517) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5483) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5635) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5491) at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5692) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5464) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5517) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5483) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5491) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5464) at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:8309) E/MessageQueue-JNI: at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:8225) at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:8186) at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:8445) at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:227) at android.os.MessageQueue.nativePollOnce(Native Method) at android.os.MessageQueue.next(MessageQueue.java:342) at android.os.Looper.loop(Looper.java:197) at android.app.ActivityThread.main(ActivityThread.java:7755) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:958) D/AndroidRuntime: Shutting down VM E/AndroidRuntime: FATAL EXCEPTION: main Process: app.grapheneos.camera, PID: 21920 java.lang.IllegalArgumentException: Invalid extension mode! at androidx.camera.extensions.ExtensionsInfo.getExtendedCameraConfigProviderId(ExtensionsInfo.java:287) at androidx.camera.extensions.ExtensionsInfo.getFilter(ExtensionsInfo.java:195) at androidx.camera.extensions.ExtensionsInfo.isExtensionAvailable(ExtensionsInfo.java:134) at androidx.camera.extensions.ExtensionsManager.isExtensionAvailable(ExtensionsManager.java:413) at app.grapheneos.camera.CamConfig.startCamera(CamConfig.kt:1164) at app.grapheneos.camera.CamConfig.switchMode(CamConfig.kt:1500) at app.grapheneos.camera.ui.activities.MainActivity.finalizeMode(MainActivity.kt:1049) at app.grapheneos.camera.CamConfig.loadTabs$lambda-15$lambda-14$lambda-13$lambda-12(CamConfig.kt:1379) at app.grapheneos.camera.CamConfig.$r8$lambda$Ds0vyOYJx4eUBiFjSYJaqoFjx2E(Unknown Source:0) at app.grapheneos.camera.CamConfig$$ExternalSyntheticLambda5.onTouch(Unknown Source:4) at android.view.View.dispatchTouchEvent(View.java:14372) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3112) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2785) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799) at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3118) at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2799) at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:522) at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1877) at android.app.Activity.dispatchTouchEvent(Activity.java:4193) at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:69) at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:480) at android.view.View.dispatchPointerEvent(View.java:14635) at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:6166) at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5969) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5460) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5517) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5483) at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5635) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5491) at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5692) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5464) at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5517) at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5483) at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5491) at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5464) E/AndroidRuntime: at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:8309) at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:8225) at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:8186) at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:8445) at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:227) at android.os.MessageQueue.nativePollOnce(Native Method) at android.os.MessageQueue.next(MessageQueue.java:342) at android.os.Looper.loop(Looper.java:197) at android.app.ActivityThread.main(ActivityThread.java:7755) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:958)
-
Front-Cam video force close.
Hi, I have an issue where trying to do open front-cam video window force gives a force close.
This is my log. https://bin.kv2.dev/~61d38531410e7c32e6697918
This might be a device-related issue but still, I want to ask if you guys can take a look at this so I can fix it.
Tried versions: camera6 and latest camera8.
TLDR: time: 1641252139929
| msg: java.lang.IllegalArgumentException: Unable to find supported quality by QualitySelector | stacktrace: java.lang.IllegalArgumentException: Unable to find supported quality by QualitySelector | at androidx.camera.lifecycle.LifecycleCameraRepository.a(Unknown Source:13) | at androidx.camera.lifecycle.c.a(Unknown Source:42) | at h2.j.u(Unknown Source:66) | at l2.d.onClick(Unknown Source:25) | at android.view.View.performClick(View.java:7441) | at h2.e.onTouch(Unknown Source:3)
bug -
Edit captured photo before it's saved
How can I programmatically edit a captured photo before it's saved? For some reason,
onCaptureSuccess(image: ImageProxy)
in thetakePicture()
method (line 116 - CaptureActivity.kt) is never called. Can someone provide clarification? Thanks. -
Custom storage location not working with a Nextcloud folder over DavX5
The custom storage location is not working when set to a Nextcloud folder that's accessed with DavX5 (version 4.1-ose). I can otherwise use the nextcloud folder and for example use the files app to copy photos into it. I can set the custom storage location to some local folder and that works. The camera app accepts the nextcloud folder in configuration but when I try to take a photo it says it can't access the folder.
enhancement -
Crashes when no rear-camera available
Camera release
16
Brief summary
My Pixel 3a currently has no rear-camera. And when opening the app, it crashes. If i'm quick and switch to the existing front-camera in time, the app works as expected.
Steps to reproduce
- Uninstall rear-camera
- Open Camera
Expected behaviour
Automatically use existing front-camera and hide camera switching button. And if no camera available, then display something along the lines of "No Camera Found".
Actual behaviour
App is open for about 2 seconds, then the App crashes. If i switch to the existing front-camera in these 2 seconds, the app works as expected.
bug -
Bump kotlin-gradle-plugin from 1.7.22 to 1.8.0
Bumps kotlin-gradle-plugin from 1.7.22 to 1.8.0.
Release notes
Sourced from kotlin-gradle-plugin's releases.
Kotlin 1.8.0
Changelog
Analysis API
KT-50255
Analysis API: Implement standalone mode for the Analysis API
Analysis API. FIR
KT-54292
Symbol Light classes: implement PsiVariable.computeConstantValue for light fieldKT-54293
Analysis API: fix constructor symbol creation when its accessed via type alias
Android
KT-53342
TCS: New AndroidSourceSet layout for multiplatformKT-53013
Increase AGP compile version in KGP to 4.1.3KT-54013
Report error when using deprecated Kotlin Android Extensions compiler pluginKT-53709
MPP, Android SSL2: Conflicting warnings forandroidTest/kotlin
source set folder
Backend. Native. Debug
KT-53561
Invalid LLVM module: "inlinable function call in a function with debug info must have a !dbg location"
Compiler
New Features
KT-52817
Add@JvmSerializableLambda
annotation to keep old behavior of non-invokedynamic lambdasKT-54460
Implementation of non-local break and continueKT-53916
Support Xcode 14 and new Objective-C frameworks in Kotlin/Native compilerKT-32208
Generate method annotations into bytecode for suspend lambdas (on invokeSuspend)KT-53438
Introduce a way to get SourceDebugExtension attribute value via JVMTI for profiler and coverage
Performance Improvements
KT-53347
Get rid of excess allocations in parserKT-53689
JVM: Optimize equality on class literalsKT-53119
Improve String Concatenation Lowering
Fixes
KT-53465
Unnecessary checkcast to array of reified type is not optimized since Kotlin 1.6.20KT-49658
NI: False negative TYPE_MISMATCH on nullable type withwhen
KT-48162
NON_VARARG_SPREAD isn't reported on *toTypedArray() callKT-43493
NI: False negative: no compilation error "Operator '==' cannot be applied to 'Long' and 'Int'" is reported in builder inference lambdasKT-54393
Change in behavior from 1.7.10 to 1.7.20 for java field override.KT-55357
IllegalStateException when reading a class that delegates to a Java class with a definitely-not-null type with a flexible upper boundKT-55068
Kotlin Gradle DSL: No mapping for symbol: VALUE_PARAMETER SCRIPT_IMPLICIT_RECEIVER on JVM IR backendKT-51284
SAM conversion doesn't work if method has context receiversKT-48532
Remove old JVM backend
... (truncated)
Changelog
Sourced from kotlin-gradle-plugin's changelog.
1.8.0
Analysis API
KT-50255
Analysis API: Implement standalone mode for the Analysis API
Analysis API. FIR
KT-54292
Symbol Light classes: implement PsiVariable.computeConstantValue for light fieldKT-54293
Analysis API: fix constructor symbol creation when its accessed via type alias
Android
KT-53342
TCS: New AndroidSourceSet layout for multiplatformKT-53013
Increase AGP compile version in KGP to 4.1.3KT-54013
Report error when using deprecated Kotlin Android Extensions compiler pluginKT-53709
MPP, Android SSL2: Conflicting warnings forandroidTest/kotlin
source set folder
Backend. Native. Debug
KT-53561
Invalid LLVM module: "inlinable function call in a function with debug info must have a !dbg location"
Compiler
New Features
KT-52817
Add@JvmSerializableLambda
annotation to keep old behavior of non-invokedynamic lambdasKT-54460
Implementation of non-local break and continueKT-53916
Support Xcode 14 and new Objective-C frameworks in Kotlin/Native compilerKT-32208
Generate method annotations into bytecode for suspend lambdas (on invokeSuspend)KT-53438
Introduce a way to get SourceDebugExtension attribute value via JVMTI for profiler and coverage
Performance Improvements
KT-53347
Get rid of excess allocations in parserKT-53689
JVM: Optimize equality on class literalsKT-53119
Improve String Concatenation Lowering
Fixes
KT-53465
Unnecessary checkcast to array of reified type is not optimized since Kotlin 1.6.20KT-49658
NI: False negative TYPE_MISMATCH on nullable type withwhen
KT-48162
NON_VARARG_SPREAD isn't reported on *toTypedArray() callKT-43493
NI: False negative: no compilation error "Operator '==' cannot be applied to 'Long' and 'Int'" is reported in builder inference lambdasKT-54393
Change in behavior from 1.7.10 to 1.7.20 for java field override.KT-55357
IllegalStateException when reading a class that delegates to a Java class with a definitely-not-null type with a flexible upper boundKT-55068
Kotlin Gradle DSL: No mapping for symbol: VALUE_PARAMETER SCRIPT_IMPLICIT_RECEIVER on JVM IR backendKT-51284
SAM conversion doesn't work if method has context receiversKT-48532
Remove old JVM backendKT-55065
Kotlin Gradle DSL: Reflection cannot find class data for lambda, produced by JVM IR backend
... (truncated)
Commits
da1a843
Add ChangeLog for 1.8.0-RC2d325cf8
Call additional publishToMavenLocal in maven build scripts and enable info0403d70
Don't leave Gradle daemons after build scripts52b225d
Fix task module-name is not propagated to compiler argumentsd40ebc3
Specify versions-maven-plugin version explicitly2e829ed
Fix version parsing crash on Gradle rich version stringf603c0e
Scripting, IR: fix capturing of implicit receiver06cbf8f
Scripting, tests: enable custom script tests with IRd61cef0
Fix deserialization exception for DNN types from Javaea33e72
JVM IR: script is a valid container for local delegated properties- Additional commits viewable in compare view
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase
.
Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebase
will rebase this PR@dependabot recreate
will recreate this PR, overwriting any edits that have been made to it@dependabot merge
will merge this PR after your CI passes on it@dependabot squash and merge
will squash and merge this PR after your CI passes on it@dependabot cancel merge
will cancel a previously requested merge and block automerging@dependabot reopen
will reopen this PR if it is closed@dependabot close
will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually@dependabot ignore this major version
will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this minor version
will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)@dependabot ignore this dependency
will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
-
Camera Crash Pixel 6pro
I an getting the following errors even after reflashing the OS. I can't use my camera. Is there a fix for this???
t.d1 Camera is closed. A :: t.c1 :: 89 z :: t.c1 :: 10 q :: t.c1 :: 14 p :: t.f2 :: 0 h :: z.g :: 42 l :: z.g :: 8 b :: androidx.camera.lifecycle.c :: 49 v :: n2.p :: 138 onClick :: t2.i :: 565 performClick :: android.view.View :: 7506 onTouch :: n2.k :: 152 dispatchTouchEvent :: android.view.View :: 15006 dispatchTransformedTouchEvent :: android.view.ViewGroup :: 3115 dispatchTouchEvent :: android.view.ViewGroup :: 2788 dispatchTransformedTouchEvent :: android.view.ViewGroup :: 3143 dispatchTouchEvent :: android.view.ViewGroup :: 2802 dispatchTransformedTouchEvent :: android.view.ViewGroup :: 3121 dispatchTouchEvent :: android.view.ViewGroup :: 2802 dispatchTransformedTouchEvent :: android.view.ViewGroup :: 3121 dispatchTouchEvent :: android.view.ViewGroup :: 2802 dispatchTransformedTouchEvent :: android.view.ViewGroup :: 3121 dispatchTouchEvent :: android.view.ViewGroup :: 2802 dispatchTransformedTouchEvent :: android.view.ViewGroup :: 3121 dispatchTouchEvent :: android.view.ViewGroup :: 2802 dispatchTransformedTouchEvent :: android.view.ViewGroup :: 3121 dispatchTouchEvent :: android.view.ViewGroup :: 2802 dispatchTransformedTouchEvent :: android.view.ViewGroup :: 3121 dispatchTouchEvent :: android.view.ViewGroup :: 2802 dispatchTransformedTouchEvent :: android.view.ViewGroup :: 3121 dispatchTouchEvent :: android.view.ViewGroup :: 2802 superDispatchTouchEvent :: com.android.internal.policy.DecorView :: 500 superDispatchTouchEvent :: com.android.internal.policy.PhoneWindow :: 1905 dispatchTouchEvent :: android.app.Activity :: 4271 f :: d.u :: 2 dispatchTouchEvent :: d.u :: 0 dispatchTouchEvent :: com.android.internal.policy.DecorView :: 458 dispatchPointerEvent :: android.view.View :: 15269 processPointerEvent :: android.view.ViewRootImpl$ViewPostImeInputStage :: 6650 onProcess :: android.view.ViewRootImpl$ViewPostImeInputStage :: 6450 deliver :: android.view.ViewRootImpl$InputStage :: 5906 onDeliverToNext :: android.view.ViewRootImpl$InputStage :: 5963 forward :: android.view.ViewRootImpl$InputStage :: 5929 forward :: android.view.ViewRootImpl$AsyncInputStage :: 6094 apply :: android.view.ViewRootImpl$InputStage :: 5937 apply :: android.view.ViewRootImpl$AsyncInputStage :: 6151 deliver :: android.view.ViewRootImpl$InputStage :: 5910 onDeliverToNext :: android.view.ViewRootImpl$InputStage :: 5963 forward :: android.view.ViewRootImpl$InputStage :: 5929 apply :: android.view.ViewRootImpl$InputStage :: 5937 deliver :: android.view.ViewRootImpl$InputStage :: 5910 deliverInputEvent :: android.view.ViewRootImpl :: 8985 doProcessInputEvents :: android.view.ViewRootImpl :: 8936 enqueueInputEvent :: android.view.ViewRootImpl :: 8905 onInputEvent :: android.view.ViewRootImpl$WindowInputEventReceiver :: 9108 dispatchInputEvent :: android.view.InputEventReceiver :: 267 nativePollOnce :: android.os.MessageQueue :: -2 next :: android.os.MessageQueue :: 335 loopOnce :: android.os.Looper :: 161 loop :: android.os.Looper :: 288 main :: android.app.ActivityThread :: 7878 invoke :: java.lang.reflect.Method :: -2 run :: com.android.internal.os.RuntimeInit$MethodAndArgsCaller :: 548 main :: com.android.internal.os.ExecInit :: 49 nativeFinishInit :: com.android.internal.os.RuntimeInit :: -2 main :: com.android.internal.os.RuntimeInit :: 355
-
UI Changes
The Secure Camera App has a lot of vertical space above the navigation bar which is simply been wasted.
It also has a lot of space wasted above the mode switcher.
Allocating the shutter a bit lower will allow for better reach for the end user.
The zoom slider must be placed in a vertical way for easy accessibility because it will be used very often.
The zoom slider could now be placed above the mode switcher due to the extra gaps we have created by pushing the shutter down.
Switching between Video and QR code requires sliding twice in order to reach it. The sliding speed of the mode switcher should be increased along with haptics.
The bottom arrow icon is extremely small and it overlaps with the time shown in notification bar.
Change the orientation of icons based on the auto rotate option present in android. Give gyroscope suggestions similar to Google Camera when we point 180° flat which is very useful while taking topview of an object or measuring whether the surface is perfectly flat.
-
Haptics similar to Google Camera
The Google Camera app gives a unique haptic feedback while switching between modes which it makes it feel great and also verifies/warns that we have switched to another mode. Adding this into Secure Camera would make it better in my opinion.
-
Feature Request: Allow QR area to be modified
Upon scanning barcodes, the default square area makes the process more complicated than if the area was allowed to be changed (like in Binary Eye and similar apps).
Maybe some default shapes buttons/options could be added to make this change more straightforward.
Releases(58)
-
58(Dec 9, 2022)
Notable changes in version 58:
- update CameraX library to 1.3.0-alpha02 providing various improvements which are partially documented in their release notes
- update custom parallel ImageSaver implementation for new private CameraX API
- update Gradle to 7.6
- update Kotlin Gradle plugin to 1.7.22
A full list of changes from the previous release (version 57) is available through the Git commit log between the releases.
This app is available through the Play Store with the
app.grapheneos.camera.play
app id. Play Store releases go through review and it usually takes around 1 to 3 days before the Play Store pushes out the update to users. Play Store releases use Play Signing, so we use a separate app id from the releases we publish ourselves to avoid conflicts and to distinguish between them.Releases of the app signed by GrapheneOS with the
app.grapheneos.camera
app id are published in the GrapheneOS app repository and on GitHub. You can use the GrapheneOS app repository client on Android 12 or later for automatic updates.Releases are initially pushed out through the Beta channel for both the Play Store and our app repository and then get moved to the Stable channel.
Source code(tar.gz)
Source code(zip)
Camera-58.apk(3.04 MB)
-
57(Nov 24, 2022)
Notable changes in version 57:
- update CameraX library to 1.3.0-alpha01 providing various improvements which are partially documented in their release notes
- update Kotlin Gradle plugin to 1.7.21
A full list of changes from the previous release (version 56) is available through the Git commit log between the releases.
This app is available through the Play Store with the
app.grapheneos.camera.play
app id. Play Store releases go through review and it usually takes around 1 to 3 days before the Play Store pushes out the update to users. Play Store releases use Play Signing, so we use a separate app id from the releases we publish ourselves to avoid conflicts and to distinguish between them.Releases of the app signed by GrapheneOS with the
app.grapheneos.camera
app id are published in the GrapheneOS app repository and on GitHub. You can use the GrapheneOS app repository client on Android 12 or later for automatic updates.Releases are initially pushed out through the Beta channel for both the Play Store and our app repository and then get moved to the Stable channel.
Source code(tar.gz)
Source code(zip)
Camera-57.apk(3.04 MB)
-
56(Nov 3, 2022)
Notable changes in version 56:
- use Latency mode by default for fresh installs instead of Quality mode: Latency mode doesn't wait for 3A convergence (stable auto-focus/auto-exposure/auto-white-balance), defaults to 95% JPEG quality instead of 100% and uses HDR+ on Pixel 4 and later instead of Pixel 2 and later which doesn't matter much for fresh installs since Pixel 3 has been end-of-life for over a year
- update ZXing (barcode library) to 3.5.1 for assorted robustness and performance improvements
A full list of changes from the previous release (version 55) is available through the Git commit log between the releases.
This app is available through the Play Store with the
app.grapheneos.camera.play
app id. Play Store releases go through review and it usually takes around 1 to 3 days before the Play Store pushes out the update to users. Play Store releases use Play Signing, so we use a separate app id from the releases we publish ourselves to avoid conflicts and to distinguish between them.Releases of the app signed by GrapheneOS with the
app.grapheneos.camera
app id are published in the GrapheneOS app repository and on GitHub. You can use the GrapheneOS app repository client on Android 12 or later for automatic updates.Releases are initially pushed out through the Beta channel for both the Play Store and our app repository and then get moved to the Stable channel.
Source code(tar.gz)
Source code(zip)
Camera-56.apk(3.02 MB)
-
55(Nov 1, 2022)
Notable changes in version 55:
- fix handling of statusbar for layout changes
- set correct preview aspect ratio to properly limit focus zone
- make QR overlay match the preview size and location to avoid other layout improvements misaligning it
- move focus ring to preview and hide the portion of it outside the preview
A full list of changes from the previous release (version 54) is available through the Git commit log between the releases.
This app is available through the Play Store with the
app.grapheneos.camera.play
app id. Play Store releases go through review and it usually takes around 1 to 3 days before the Play Store pushes out the update to users. Play Store releases use Play Signing, so we use a separate app id from the releases we publish ourselves to avoid conflicts and to distinguish between them.Releases of the app signed by GrapheneOS with the
app.grapheneos.camera
app id are published in the GrapheneOS app repository and on GitHub. You can use the GrapheneOS app repository client on Android 12 or later for automatic updates.Releases are initially pushed out through the Beta channel for both the Play Store and our app repository and then get moved to the Stable channel.
Source code(tar.gz)
Source code(zip)
Camera-55.apk(3.02 MB)
-
54(Oct 29, 2022)
Notable changes in version 54:
- temporarily revert fix for tap-to-focus zone limit from version 53 until QR scan mode centering works with it
A full list of changes from the previous release (version 53) is available through the Git commit log between the releases.
This app is available through the Play Store with the
app.grapheneos.camera.play
app id. Play Store releases go through review and it usually takes around 1 to 3 days before the Play Store pushes out the update to users. Play Store releases use Play Signing, so we use a separate app id from the releases we publish ourselves to avoid conflicts and to distinguish between them.Releases of the app signed by GrapheneOS with the
app.grapheneos.camera
app id are published in the GrapheneOS app repository and on GitHub. You can use the GrapheneOS app repository client on Android 12 or later for automatic updates.Releases are initially pushed out through the Beta channel for both the Play Store and our app repository and then get moved to the Stable channel.
Source code(tar.gz)
Source code(zip)
Camera-54.apk(3.02 MB)
-
53(Oct 29, 2022)
Notable changes in version 53:
- set correct preview aspect ratio to properly limit focus zone
- avoid initialization races, resource leaks and UI stalls in the video player
- don't request audio focus for playing video without audio
- support playing videos in lockscreen mode
- don't launch location settings page from lockscreen mode
- add exported activity for launching QR scanner for use with the Android 13 QR scan tile
- add support for custom URIs to QR scanner
- stop recording video when activity stops instead of having it cut off and corrupted
- improve code quality
- update CameraX library to 1.2.0-rc01 providing various improvements which are partially documented in their release notes
- update Material library to 1.7.0
A full list of changes from the previous release (version 52) is available through the Git commit log between the releases.
This app is available through the Play Store with the
app.grapheneos.camera.play
app id. Play Store releases go through review and it usually takes around 1 to 3 days before the Play Store pushes out the update to users. Play Store releases use Play Signing, so we use a separate app id from the releases we publish ourselves to avoid conflicts and to distinguish between them.Releases of the app signed by GrapheneOS with the
app.grapheneos.camera
app id are published in the GrapheneOS app repository and on GitHub. You can use the GrapheneOS app repository client on Android 12 or later for automatic updates.Releases are initially pushed out through the Beta channel for both the Play Store and our app repository and then get moved to the Stable channel.
Source code(tar.gz)
Source code(zip)
Camera-53.apk(3.02 MB)
-
52(Oct 5, 2022)
Notable changes in version 52:
- add support for video geotagging as part of the existing opt-in geotagging toggle
- improve in-app gallery edit button to support using a default editor instead of always showing a chooser
- fix navigation bar color in More Settings menu
A full list of changes from the previous release (version 51) is available through the Git commit log between the releases.
This app is available through the Play Store with the
app.grapheneos.camera.play
app id. Play Store releases go through review and it usually takes around 1 to 3 days before the Play Store pushes out the update to users. Play Store releases use Play Signing, so we use a separate app id from the releases we publish ourselves to avoid conflicts and to distinguish between them.Releases of the app signed by GrapheneOS with the
app.grapheneos.camera
app id are published in the GrapheneOS app repository and on GitHub. You can use the GrapheneOS app repository client on Android 12 or later for automatic updates.Releases are initially pushed out through the Beta channel for both the Play Store and our app repository and then get moved to the Stable channel.
Source code(tar.gz)
Source code(zip)
Camera-52.apk(2.92 MB)
-
51(Oct 2, 2022)
Notable changes in version 51:
- fix video recording with camera sounds disabled (UI stall fix in version 50 had incomplete handling of this case)
A full list of changes from the previous release (version 50) is available through the Git commit log between the releases.
This app is available through the Play Store with the
app.grapheneos.camera.play
app id. Play Store releases go through review and it usually takes around 1 to 3 days before the Play Store pushes out the update to users. Play Store releases use Play Signing, so we use a separate app id from the releases we publish ourselves to avoid conflicts and to distinguish between them.Releases of the app signed by GrapheneOS with the
app.grapheneos.camera
app id are published in the GrapheneOS app repository and on GitHub. You can use the GrapheneOS app repository client on Android 12 or later for automatic updates.Releases are initially pushed out through the Beta channel for both the Play Store and our app repository and then get moved to the Stable channel.
Source code(tar.gz)
Source code(zip)
Camera-51.apk(2.92 MB)
-
50(Oct 2, 2022)
Notable changes in version 50:
- avoid UI stall for the small delay used to avoid recording the video recording start sound (only relevant with camera sounds enabled)
- switch to non-lazy async sound file preparation to avoid a UI stall when the first sound would be played (relevant even with camera sounds disabled)
- explicitly set media player for media controller as an attempt to work around OS deficiency causing a crash on some devices
- update Kotlin Gradle plugin to 1.7.20
A full list of changes from the previous release (version 49) is available through the Git commit log between the releases.
This app is available through the Play Store with the
app.grapheneos.camera.play
app id. Play Store releases go through review and it usually takes around 1 to 3 days before the Play Store pushes out the update to users. Play Store releases use Play Signing, so we use a separate app id from the releases we publish ourselves to avoid conflicts and to distinguish between them.Releases of the app signed by GrapheneOS with the
app.grapheneos.camera
app id are published in the GrapheneOS app repository and on GitHub. You can use the GrapheneOS app repository client on Android 12 or later for automatic updates.Releases are initially pushed out through the Beta channel for both the Play Store and our app repository and then get moved to the Stable channel.
Source code(tar.gz)
Source code(zip)
Camera-50.apk(2.92 MB)
-
49(Sep 29, 2022)
Notable changes in version 49:
- update CameraX library to 1.2.0-beta02 providing various improvements which are partially documented in their release notes
- update Android Gradle plugin to 7.3.0
- move away from deprecated package attribute
A full list of changes from the previous release (version 48) is available through the Git commit log between the releases.
This app is available through the Play Store with the
app.grapheneos.camera.play
app id. Play Store releases go through review and it usually takes around 1 to 3 days before the Play Store pushes out the update to users. Play Store releases use Play Signing, so we use a separate app id from the releases we publish ourselves to avoid conflicts and to distinguish between them.Releases of the app signed by GrapheneOS with the
app.grapheneos.camera
app id are published in the GrapheneOS app repository and on GitHub. You can use the GrapheneOS app repository client on Android 12 or later for automatic updates.Releases are initially pushed out through the Beta channel for both the Play Store and our app repository and then get moved to the Stable channel.
Source code(tar.gz)
Source code(zip)
Camera-49.apk(2.92 MB)
-
48(Sep 13, 2022)
Notable changes in version 48:
- add Android 13 themed icon support
- update AndroidX appcompat library to 1.5.1
- remove duplicate icon resource
- add resource configuration list to avoid incomplete translations via library resources
A full list of changes from the previous release (version 47) is available through the Git commit log between the releases.
This app is available through the Play Store with the
app.grapheneos.camera.play
app id. Play Store releases go through review and it usually takes around 1 to 3 days before the Play Store pushes out the update to users. Play Store releases use Play Signing, so we use a separate app id from the releases we publish ourselves to avoid conflicts and to distinguish between them.Releases of the app signed by GrapheneOS with the
app.grapheneos.camera
app id are published in the GrapheneOS app repository and on GitHub. You can use the GrapheneOS app repository client on Android 12 or later for automatic updates.Releases are initially pushed out through the Beta channel for both the Play Store and our app repository and then get moved to the Stable channel.
Source code(tar.gz)
Source code(zip)
Camera-48.apk(4.29 MB)
-
47(Sep 4, 2022)
Notable changes in version 47:
- revert migration away from parcel APIs deprecated in API 33 due to a regression (will be redone in a future release)
A full list of changes from the previous release (version 46) is available through the Git commit log between the releases.
This app is available through the Play Store with the
app.grapheneos.camera.play
app id. Play Store releases go through review and it usually takes around 1 to 3 days before the Play Store pushes out the update to users. Play Store releases use Play Signing, so we use a separate app id from the releases we publish ourselves to avoid conflicts and to distinguish between them.Releases of the app signed by GrapheneOS with the
app.grapheneos.camera
app id are published in the GrapheneOS app repository and on GitHub. You can use the GrapheneOS app repository client on Android 12 or later for automatic updates.Releases are initially pushed out through the Beta channel for both the Play Store and our app repository and then get moved to the Stable channel.
Source code(tar.gz)
Source code(zip)
Camera-47.apk(4.68 MB)
-
46(Sep 4, 2022)
Notable changes in version 46:
- build with API 33 SDK and handle breaking changes
- replace API calls deprecated in API 33
- raise target API level to 33
- add support for notification permission for background CameraX / OS error reporting without requesting it from users
- update CameraX to 1.2.0-beta01 providing various improvements which are partially documented in their release notes
- update AndroidX appcompat library to 1.5.0
- update Gradle to 7.5.1
- update Android Gradle plugin to 7.2.2
A full list of changes from the previous release (version 45) is available through the Git commit log between the releases.
This app is available through the Play Store with the
app.grapheneos.camera.play
app id. Play Store releases go through review and it usually takes around 1 to 3 days before the Play Store pushes out the update to users. Play Store releases use Play Signing, so we use a separate app id from the releases we publish ourselves to avoid conflicts and to distinguish between them.Releases of the app signed by GrapheneOS with the
app.grapheneos.camera
app id are published in the GrapheneOS app repository and on GitHub. You can use the GrapheneOS app repository client on Android 12 or later for automatic updates.Releases are initially pushed out through the Beta channel for both the Play Store and our app repository and then get moved to the Stable channel.
Source code(tar.gz)
Source code(zip)
Camera-46.apk(4.68 MB)
-
45(Sep 4, 2022)
Notable changes in version 45:
- update CameraX to 1.2.0-alpha04 providing various improvements which are partially documented in their release notes
A full list of changes from the previous release (version 44) is available through the Git commit log between the releases.
This app is available through the Play Store with the
app.grapheneos.camera.play
app id. Play Store releases go through review and it usually takes around 1 to 3 days before the Play Store pushes out the update to users. Play Store releases use Play Signing, so we use a separate app id from the releases we publish ourselves to avoid conflicts and to distinguish between them.Releases of the app signed by GrapheneOS with the
app.grapheneos.camera
app id are published in the GrapheneOS app repository and on GitHub. You can use the GrapheneOS app repository client on Android 12 or later for automatic updates.Releases are initially pushed out through the Beta channel for both the Play Store and our app repository and then get moved to the Stable channel.
Source code(tar.gz)
Source code(zip)
Camera-45.apk(4.62 MB)
-
44(Jul 16, 2022)
Notable changes in version 44:
- update CameraX to 1.2.0-alpha03 providing various improvements which are partially documented in their release notes
- update Android build tools to 33.0.0
- update Android Gradle plugin to 7.2.1
- update Kotlin Gradle plugin to 1.7.10
- update Gradle to 7.5
- disable EIS toggle in settings dialog while recording
- remove explicitly setting padding for main overlay UI
A full list of changes from the previous release (version 43) is available through the Git commit log between the releases.
This app is available through the Play Store with the
app.grapheneos.camera.play
app id. Play Store releases go through review and it usually takes around 1 to 3 days before the Play Store pushes out the update to users. Play Store releases use Play Signing, so we use a separate app id from the releases we publish ourselves to avoid conflicts and to distinguish between them.Releases of the app signed by GrapheneOS with the
app.grapheneos.camera
app id are published in the GrapheneOS app repository and on GitHub. You can use the GrapheneOS app repository client on Android 12 or later for automatic updates.Releases are initially pushed out through the Beta channel for both the Play Store and our app repository and then get moved to the Stable channel.
Source code(tar.gz)
Source code(zip)
Camera-44.apk(3.30 MB)
-
43(Jun 5, 2022)
Notable changes in version 43:
- add toggle to enable Zero Shutter Lag (ZSL) for Latency mode on devices with support for it such as many Samsung phones
- fall back to front camera for QR/barcode scan mode if the rear camera is unavailable
- update CameraX to 1.2.0-alpha02 providing various improvements which are partially documented in their release notes including a workaround for a device bug we reported which was causing issues for cheap devices in India, Indonesia, etc.
- slightly improve capture performance
- improve QR/barcode scan mode layout
- fix settings dialog transition for landscape mode
- improve settings dialog animation
- update AndroidX appcompat library to 1.4.2
A full list of changes from the previous release (version 42) is available through the Git commit log between the releases.
This app is available through the Play Store with the
app.grapheneos.camera.play
app id. Play Store releases go through review and it usually takes around 1 to 3 days before the Play Store pushes out the update to users. Play Store releases use Play Signing, so we use a separate app id from the releases we publish ourselves to avoid conflicts and to distinguish between them.Releases of the app signed by GrapheneOS with the
app.grapheneos.camera
app id are published in the GrapheneOS app repository and on GitHub. You can use the GrapheneOS app repository client on Android 12 or later for automatic updates.Releases are initially pushed out through the Beta channel for both the Play Store and our app repository and then get moved to the Stable channel.
Source code(tar.gz)
Source code(zip)
Camera-43.apk(3.34 MB)
-
42(Jun 1, 2022)
Notable changes in version 42:
- use correct size format for QR scanning focus size
- update Material library to 1.6.1
A full list of changes from the previous release (version 41) is available through the Git commit log between the releases.
This app is available through the Play Store with the
app.grapheneos.camera.play
app id. Play Store releases go through review and it usually takes around 1 to 3 days before the Play Store pushes out the update to users. Play Store releases use Play Signing, so we use a separate app id from the releases we publish ourselves to avoid conflicts and to distinguish between them.Releases of the app signed by GrapheneOS with the
app.grapheneos.camera
app id are published in the GrapheneOS app repository and on GitHub. You can use the GrapheneOS app repository client on Android 12 or later for automatic updates.Releases are initially pushed out through the Beta channel for both the Play Store and our app repository and then get moved to the Stable channel.
Source code(tar.gz)
Source code(zip)
Camera-42.apk(3.33 MB)
-
41(Jun 1, 2022)
Notable changes in version 41:
- update CameraX to 1.2.0-alpha01 providing various improvements which are partially documented in their release notes
- remove workarounds for CameraX QualitySelector issues
- hide the otherwise empty storage settings category in secure mode (lockscreen mode)
- improve More Settings layout
- update AndroidX constraint layout to 2.1.4
A full list of changes from the previous release (version 40) is available through the Git commit log between the releases.
This app is available through the Play Store with the
app.grapheneos.camera.play
app id. Play Store releases go through review and it usually takes around 1 to 3 days before the Play Store pushes out the update to users. Play Store releases use Play Signing, so we use a separate app id from the releases we publish ourselves to avoid conflicts and to distinguish between them.Releases of the app signed by GrapheneOS with the
app.grapheneos.camera
app id are published in the GrapheneOS app repository and on GitHub. You can use the GrapheneOS app repository client on Android 12 or later for automatic updates.Releases are initially pushed out through the Beta channel for both the Play Store and our app repository and then get moved to the Stable channel.
Source code(tar.gz)
Source code(zip)
Camera-41.apk(3.33 MB)
-
40(May 22, 2022)
Notable changes in version 40:
- fix layout alignment for QR scanning square overlay
- fix layout alignment for blurred snapshot shown when switching modes
A full list of changes from the previous release (version 39) is available through the Git commit log between the releases.
This app is available through the Play Store with the
app.grapheneos.camera.play
app id. Play Store releases go through review and it usually takes around 1 to 3 days before the Play Store pushes out the update to users. Play Store releases use Play Signing, so we use a separate app id from the releases we publish ourselves to avoid conflicts and to distinguish between them.Releases of the app signed by GrapheneOS with the
app.grapheneos.camera
app id are published in the GrapheneOS app repository and on GitHub. You can use the GrapheneOS app repository client on Android 12 or later for automatic updates.Releases are initially pushed out through the Beta channel for both the Play Store and our app repository and then get moved to the Stable channel.
Source code(tar.gz)
Source code(zip)
Camera-40.apk(3.32 MB)
-
39(May 19, 2022)
Notable changes in version 39:
- support More Settings in secure mode (lockscreen) activity without storage option
- don't try to open Settings app in secure mode
- avoid issues with multiple open activities by not using static field for camera configuration
- keep thumbnail updated in edge cases where multiple activities are open
- use Media Store pending file support for videos to trigger metadata update when recording ends
- add 10ms delay to the start of video recording to avoid capturing sound effect
- disable tap-to-focus sound in video recording mode
A full list of changes from the previous release (version 38) is available through the Git commit log between the releases.
This app is available through the Play Store with the
app.grapheneos.camera.play
app id. Play Store releases go through review and it usually takes around 1 to 3 days before the Play Store pushes out the update to users. Play Store releases use Play Signing, so we use a separate app id from the releases we publish ourselves to avoid conflicts and to distinguish between them.Releases of the app signed by GrapheneOS with the
app.grapheneos.camera
app id are published in the GrapheneOS app repository and on GitHub. You can use the GrapheneOS app repository client on Android 12 or later for automatic updates.Releases are initially pushed out through the Beta channel for both the Play Store and our app repository and then get moved to the Stable channel.
Source code(tar.gz)
Source code(zip)
Camera-39.apk(3.31 MB)
-
38(May 19, 2022)
Notable changes in version 38:
- completely overhaul the in-app gallery and thumbnail preview with asynchronous file handling to avoid stalling the user interface or slowing down app launch time
- improve robustness and performance of the in-app gallery
- use asynchronous preference saving to avoid stalling the user interface
- inherit normal mode settings for the secure mode (lockscreen) activities and use in-memory storage for changes instead of storing the preferences in unique files
- show file name in gallery delete dialog
- use MB instead of MiB for size display to match the OS and use the proper suffix case
- fix error reporting UI initialization
- fix crash when launching video only activity with no previously captured videos
- avoid resetting camera mode preferences on app upgrade
- work around severely broken focus region support on the OnePlus 6 and OnePlus 6T by replacing the region with a point to avoid crashing the OS camera service after starting the QR/barcode scan mode
A full list of changes from the previous release (version 37) is available through the Git commit log between the releases.
This app is available through the Play Store with the
app.grapheneos.camera.play
app id. Play Store releases go through review and it usually takes around 1 to 3 days before the Play Store pushes out the update to users. Play Store releases use Play Signing, so we use a separate app id from the releases we publish ourselves to avoid conflicts and to distinguish between them.Releases of the app signed by GrapheneOS with the
app.grapheneos.camera
app id are published in the GrapheneOS app repository and on GitHub. You can use the GrapheneOS app repository client on Android 12 or later for automatic updates.Releases are initially pushed out through the Beta channel for both the Play Store and our app repository and then get moved to the Stable channel.
Source code(tar.gz)
Source code(zip)
Camera-38.apk(3.31 MB)
-
37(May 13, 2022)
Notable changes in version 37:
- add compatibility with non-filesystem storage providers such as saving to a cloud storage directory
- move camera sounds toggle to More Settings to save space in the settings dialog (not configured per-shot in practice so it's a poor use of the limited space for the dialog)
- scale down images with bitmaps above 100MB for display in the gallery to avoid breaking with extremely high resolution images from a high resolution sensor that's not pixel binning (can be improved in the future for zooming)
- avoid trying to show image saving errors after activity is stopped
A full list of changes from the previous release (version 36) is available through the Git commit log between the releases.
This app is available through the Play Store with the
app.grapheneos.camera.play
app id. Play Store releases go through review and it usually takes around 1 to 3 days before the Play Store pushes out the update to users. Play Store releases use Play Signing, so we use a separate app id from the releases we publish ourselves to avoid conflicts and to distinguish between them.Releases of the app signed by GrapheneOS with the
app.grapheneos.camera
app id are published in the GrapheneOS app repository and on GitHub. You can use the GrapheneOS app repository client on Android 12 or later for automatic updates.Releases are initially pushed out through the Beta channel for both the Play Store and our app repository and then get moved to the Stable channel.
Source code(tar.gz)
Source code(zip)
Camera-37.apk(3.31 MB)
-
36(May 12, 2022)
Notable changes in version 36:
- enable Electronic Image Stabilization (EIS) by default for video capture when the device supports it and add a toggle for disabling it since it isn't always desirable (reduces field of view in order to use the padding around the edge for stabilization)
- fix regression causing the in-app gallery to be unable to show EXIF metadata for saved images
- update CameraX to 1.1.0-rc01 providing various improvements which are partially documented in their release notes including better portability to buggy devices
A full list of changes from the previous release (version 35) is available through the Git commit log between the releases.
This app is available through the Play Store with the
app.grapheneos.camera.play
app id. Play Store releases go through review and it usually takes around 1 to 3 days before the Play Store pushes out the update to users. Play Store releases use Play Signing, so we use a separate app id from the releases we publish ourselves to avoid conflicts and to distinguish between them.Releases of the app signed by GrapheneOS with the
app.grapheneos.camera
app id are published in the GrapheneOS app repository and on GitHub. You can use the GrapheneOS app repository client on Android 12 or later for automatic updates.Releases are initially pushed out through the Beta channel for both the Play Store and our app repository and then get moved to the Stable channel.
Source code(tar.gz)
Source code(zip)
Camera-36.apk(3.30 MB)
-
35(May 11, 2022)
Notable changes in version 35:
- disable Electronic Image Stabilization (EIS) for non-video-capture modes on devices with it enabled by default like the Pixel 6 since it slightly reduces the field of view and maximum image capture resolution (device default is still used for video capture and we'll be providing a toggle with separate state for the image / video capture modes in a future release)
A full list of changes from the previous release (version 34) is available through the Git commit log between the releases.
This app is available through the Play Store with the
app.grapheneos.camera.play
app id. Play Store releases go through review and it usually takes around 1 to 3 days before the Play Store pushes out the update to users. Play Store releases use Play Signing, so we use a separate app id from the releases we publish ourselves to avoid conflicts and to distinguish between them.Releases of the app signed by GrapheneOS with the
app.grapheneos.camera
app id are published in the GrapheneOS app repository and on GitHub. You can use the GrapheneOS app repository client on Android 12 or later for automatic updates.Releases are initially pushed out through the Beta channel for both the Play Store and our app repository and then get moved to the Stable channel.
Source code(tar.gz)
Source code(zip)
Camera-35.apk(3.29 MB)
-
34(May 10, 2022)
Notable changes in version 34:
- write captured images to storage in a single pass rather than using storage as a working area, greatly improving image saving performance and the robustness of EXIF modification/stripping
- add milliseconds to image capture file name, which prevents overwriting images taken in a quick sequence for the default Media Store image saving and avoids the Storage Access Framework adding a suffix with a sequence number in parentheses to disambiguate between the saved images for user chosen storage locations
- fix JPEG quality setting being ignored in very rare situations since version 25 when the hardware doesn't support providing data in JPEG format or needs cropping to satisfy the aspect ratio
- avoid stalling main thread to obtain a file handle when saving images to a non-default location via the Storage Access Framework
- report image capture / saving errors to the user
- improve image capture performance by reducing thread context switches
- improve robustness of image capture by avoiding potential races
A full list of changes from the previous release (version 33) is available through the Git commit log between the releases.
This app is available through the Play Store with the
app.grapheneos.camera.play
app id. Play Store releases go through review and it usually takes around 1 to 3 days before the Play Store pushes out the update to users. Play Store releases use Play Signing, so we use a separate app id from the releases we publish ourselves to avoid conflicts and to distinguish between them.Releases of the app signed by GrapheneOS with the
app.grapheneos.camera
app id are published in the GrapheneOS app repository and on GitHub. You can use the GrapheneOS app repository client on Android 12 or later for automatic updates.Releases are initially pushed out through the Beta channel for both the Play Store and our app repository and then get moved to the Stable channel.
Source code(tar.gz)
Source code(zip)
Camera-34.apk(3.29 MB)
-
33(May 5, 2022)
Notable changes in version 33:
- fix gallery UI issue triggered by the fixes in the previous release
A full list of changes from the previous release (version 32) is available through the Git commit log between the releases.
This app is available through the Play Store with the
app.grapheneos.camera.play
app id. Play Store releases go through review and it usually takes around 1 to 3 days before the Play Store pushes out the update to users. Play Store releases use Play Signing, so we use a separate app id from the releases we publish ourselves to avoid conflicts and to distinguish between them.Releases of the app signed by GrapheneOS with the
app.grapheneos.camera
app id are published in the GrapheneOS app repository and on GitHub. You can use the GrapheneOS app repository client on Android 12 or later for automatic updates.Releases are initially pushed out through the Beta channel for both the Play Store and our app repository and then get moved to the Stable channel.
Source code(tar.gz)
Source code(zip)
Camera-33.apk(3.25 MB)
-
32(May 5, 2022)
Notable changes in version 32:
- fix the opt-in geotagging and save image as previewed features which were no longer having their metadata included with the non-blocking image saving implementation added in version 25
A full list of changes from the previous release (version 31) is available through the Git commit log between the releases.
This app is available through the Play Store with the
app.grapheneos.camera.play
app id. Play Store releases go through review and it usually takes around 1 to 3 days before the Play Store pushes out the update to users. Play Store releases use Play Signing, so we use a separate app id from the releases we publish ourselves to avoid conflicts and to distinguish between them.Releases of the app signed by GrapheneOS with the
app.grapheneos.camera
app id are published in the GrapheneOS app repository and on GitHub. You can use the GrapheneOS app repository client on Android 12 or later for automatic updates.Releases are initially pushed out through the Beta channel for both the Play Store and our app repository and then get moved to the Stable channel.
Source code(tar.gz)
Source code(zip)
Camera-32.apk(3.25 MB)
-
31(May 4, 2022)
Notable changes in version 31:
- avoid unnecessary bitmap scaling, potentially improving compatibility with some devices
- more readable countdown timer color scheme
- hide countdown timer when switching to QR scan mode too
A full list of changes from the previous release (version 30) is available through the Git commit log between the releases.
This app is available through the Play Store with the
app.grapheneos.camera.play
app id. Play Store releases go through review and it usually takes around 1 to 3 days before the Play Store pushes out the update to users. Play Store releases use Play Signing, so we use a separate app id from the releases we publish ourselves to avoid conflicts and to distinguish between them.Releases of the app signed by GrapheneOS with the
app.grapheneos.camera
app id are published in the GrapheneOS app repository and on GitHub. You can use the GrapheneOS app repository client on Android 12 or later for automatic updates.Releases are initially pushed out through the Beta channel for both the Play Store and our app repository and then get moved to the Stable channel.
Source code(tar.gz)
Source code(zip)
Camera-31.apk(3.25 MB)
-
30(May 2, 2022)
Notable changes in version 30:
- update ZXing (barcode library) to 3.5.0 providing significant improvements for barcode decoding including fixes for many edge cases discovered through fuzzing where unexpected exceptions were thrown (many of these would have been serious security bugs instead of unexpected exceptions if ZXing was written in C rather than memory safe Java code)
- remove workaround catching ZXing out-of-bounds array access exceptions (crashing is better than logging now that all known issues are resolved since we want to get bug reports from users or crash reports from the Play Store if there are any remaining issues)
- exclude settings from backups for the time being until we implement a way of handling many settings not being portable/sensible across devices such as storing the device model and clearing most of the settings if the device model doesn't match
- minor cleanup and text changes
A full list of changes from the previous release (version 29) is available through the Git commit log between the releases.
This app is available through the Play Store with the
app.grapheneos.camera.play
app id. Play Store releases go through review and it usually takes around 1 to 3 days before the Play Store pushes out the update to users. Play Store releases use Play Signing, so we use a separate app id from the releases we publish ourselves to avoid conflicts and to distinguish between them.Releases of the app signed by GrapheneOS with the
app.grapheneos.camera
app id are published in the GrapheneOS app repository and on GitHub. You can use the GrapheneOS app repository client on Android 12 or later for automatic updates.Releases are initially pushed out through the Beta channel for both the Play Store and our app repository and then get moved to the Stable channel.
Source code(tar.gz)
Source code(zip)
Camera-30.apk(3.25 MB)
-
29(Apr 29, 2022)
Notable changes in version 29:
- improve robustness of the non-blocking image saving added in version 25
- more precise wording for the error message shown when image capture during video recording isn't supported taking into account that it may only be unsupported for the currently configured resolution, etc.
A full list of changes from the previous release (version 28) is available through the Git commit log between the releases.
This app is available through the Play Store with the
app.grapheneos.camera.play
app id. Play Store releases go through review and it usually takes around 1 to 3 days before the Play Store pushes out the update to users. Play Store releases use Play Signing, so we use a separate app id from the releases we publish ourselves to avoid conflicts and to distinguish between them.Releases of the app signed by GrapheneOS with the
app.grapheneos.camera
app id are published in the GrapheneOS app repository and on GitHub. You can use the GrapheneOS app repository client on Android 12 or later for automatic updates.Releases are initially pushed out through the Beta channel for both the Play Store and our app repository and then get moved to the Stable channel.
Source code(tar.gz)
Source code(zip)
Camera-29.apk(3.25 MB)
Owner
GrapheneOS
Snappy - an android camerax library for taking snapshot fast & simple
Snappy is an android camerax library for taking snapshot fast & simple. Easy to integrate, 100% Kotlin & jetpack compose driven.
📸 Use Android camera to take pictures and videos, based on `camera2` api.
Camera Use Android camera to take pictures and videos, based on camera2 api. Features Auto filled CameraView for previewing Support both image capture
LiveEdgeDetection is an Android document detection library built on top of OpenCV. It scans documents from camera live mode and allows you to adjust crop using the detected 4 edges and performs perspective transformation of the cropped image. It works best with a dark background.
LiveEdgeDetection LiveEdgeDetection is an Android document detection library built on top of OpenCV. It scans documents from camera live mode and allo
Android library to choose image from gallery or camera with option to compress result image
ImagePicker Android library to choose image from gallery or camera with option to compress result image. Download Add this to your project's build.gra
An Android App that uses Machine Learning to recognize the objects in an image captured from the phone's camera
Camera App ?? Description An Android App that uses Machine Learning (ML) to recognize the objects in an image captured from the phone's camera. • Allo
Powerful custom Android Camera with granular control over the video quality and filesize, restricting recordings to landscape only.
LandscapeVideoCamera Highly flexible Android Camera which offers granular control over the video quality and filesize, while restricting recordings to
Wrapper around the android Camera class that simplifies its usage
EasyCamera Wrapper around the android Camera class that simplifies its usage (read more about the process) Usage: // the surface where the preview wil
Measures human heart rate using camera and flash light.
Heart-Rate-Ometer Introduction Measures human heart rate using camera and flash light. How-it-works https://github.com/phishman3579/android-heart-rate
Quick photo and video camera with a flash, customizable resolution and no ads.
Simple Camera A camera with flash, zoom and no ads. The camera is usable for both photo taking and video recording. You can switch between front and r
Android camera and serial communication utility that interacts with another device via a USB connection.
PVIT-Payload-Source Android camera and serial communication utility that interacts with another device via a USB connection. PVIT = Palos Verdes Insti
NguyenThienAn06105 - This repository consist of the code to read camera data on ESP8266 and a simple Android application to visualize the …
MLX90640-HeatCamera This repository consist of the code to read camera data on ESP8266 and a simple Android application to visualize the result. There
A library to take picture easy, transform your data in different format and save photos in your device
A Magic library to take photos and select pictures in Android. In a simple way and if you need it also save the pictures in device, and facial recogni
📸 A library that allows you to capture images secretly, in background without alerting users.
HiddenCamera A library that allows you to capture images secretly, in background without alerting users. Gradle Dependency Add the dependency to your
Image Picker library for Android
Ronnie-Image-Picker Asks for Camera and storage permission and return uri of the images taken or picked from the gallery. Min Api Level: 16 Build Syst
CameraX- - CameraXbasic aims to demonstrate how to use CameraX APIs written in Kotlin
CameraXbasic CameraXbasic aims to demonstrate how to use CameraX APIs written in
An Android library for scanning documents based on CameraX API and a tiny version of OpenCV
Document Scanner with tiny OpenCV example1.mp4 Document Scanner is an Android library (kotlin based) for scanning documents based on CameraX API and a
Camera Folder: "Take a Photo from Camera" everywhere where you can open a photo file
When "Camera Folder" is installed many Android-Apps that can open jpg files can also take a photo from camera.
Snappy - an android camerax library for taking snapshot fast & simple
Snappy is an android camerax library for taking snapshot fast & simple. Easy to integrate, 100% Kotlin & jetpack compose driven.
OCR app with entity extraction with mlkit and camerax
Made this #OCR app with entity extraction from the recognised text, Libraries used: #firebase #MLKit for #textrecognition #camerax for taking picture #EntityExtraction for extracting entities from text
A sample app that uses CameraX and Milkit to scan multiple barcodes and QR code
MLKit-QR-and-Barcode-Scanner This sample app uses Firebase MLKit to scan bar codes and QR Codes There are a number of types of barcodes, MLKKIt is abl