A new camera app for GrapheneOS based on the modern CameraX library.

Related tags

Math Camera
Overview

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.

Comments
  • [REQ] HDR settings

    [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 
    opened by forart 27
  • Request for acceptance: Publish in F-Droid

    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.

    opened by TheOneWithTheBraid 27
  • QR Scan freezes camera

    QR Scan freezes camera

    https://user-images.githubusercontent.com/24222032/166290230-dd8241c7-e8ed-4091-91fb-52604eaa38fa.mp4

    Steps to reproduce:

    1. Open Camera
    2. Switch to QR Scan
    3. 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 
    opened by mikitakahazekura 25
  • Closing the app while a photo is saving causes it to be lost

    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 
    opened by austinried 22
  • Entire camera module becomes unresponsive

    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 
    opened by pixincreate 20
  • Increase field of view for devices with default video stabilization

    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]

    opened by ASerbinski 17
  • QR Scanner crash

    QR Scanner crash

    E/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)
    
    bug 
    opened by nsherbina1999 15
  • Front-Cam video force close.

    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 
    opened by iaiaian1 13
  • Edit captured photo before it's saved

    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 the takePicture() method (line 116 - CaptureActivity.kt) is never called. Can someone provide clarification? Thanks.

    opened by steve47457 12
  • Custom storage location not working with a Nextcloud folder over DavX5

    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 
    opened by jel81 12
  • Crashes when no rear-camera available

    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 
    opened by astonishingriverboat 9
  • Bump kotlin-gradle-plugin from 1.7.22 to 1.8.0

    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 field
    • KT-54293 Analysis API: fix constructor symbol creation when its accessed via type alias

    Android

    • KT-53342 TCS: New AndroidSourceSet layout for multiplatform
    • KT-53013 Increase AGP compile version in KGP to 4.1.3
    • KT-54013 Report error when using deprecated Kotlin Android Extensions compiler plugin
    • KT-53709 MPP, Android SSL2: Conflicting warnings for androidTest/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 lambdas
    • KT-54460 Implementation of non-local break and continue
    • KT-53916 Support Xcode 14 and new Objective-C frameworks in Kotlin/Native compiler
    • KT-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 parser
    • KT-53689 JVM: Optimize equality on class literals
    • KT-53119 Improve String Concatenation Lowering

    Fixes

    • KT-53465 Unnecessary checkcast to array of reified type is not optimized since Kotlin 1.6.20
    • KT-49658 NI: False negative TYPE_MISMATCH on nullable type with when
    • KT-48162 NON_VARARG_SPREAD isn't reported on *toTypedArray() call
    • KT-43493 NI: False negative: no compilation error "Operator '==' cannot be applied to 'Long' and 'Int'" is reported in builder inference lambdas
    • KT-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 bound
    • KT-55068 Kotlin Gradle DSL: No mapping for symbol: VALUE_PARAMETER SCRIPT_IMPLICIT_RECEIVER on JVM IR backend
    • KT-51284 SAM conversion doesn't work if method has context receivers
    • KT-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 field
    • KT-54293 Analysis API: fix constructor symbol creation when its accessed via type alias

    Android

    • KT-53342 TCS: New AndroidSourceSet layout for multiplatform
    • KT-53013 Increase AGP compile version in KGP to 4.1.3
    • KT-54013 Report error when using deprecated Kotlin Android Extensions compiler plugin
    • KT-53709 MPP, Android SSL2: Conflicting warnings for androidTest/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 lambdas
    • KT-54460 Implementation of non-local break and continue
    • KT-53916 Support Xcode 14 and new Objective-C frameworks in Kotlin/Native compiler
    • KT-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 parser
    • KT-53689 JVM: Optimize equality on class literals
    • KT-53119 Improve String Concatenation Lowering

    Fixes

    • KT-53465 Unnecessary checkcast to array of reified type is not optimized since Kotlin 1.6.20
    • KT-49658 NI: False negative TYPE_MISMATCH on nullable type with when
    • KT-48162 NON_VARARG_SPREAD isn't reported on *toTypedArray() call
    • KT-43493 NI: False negative: no compilation error "Operator '==' cannot be applied to 'Long' and 'Int'" is reported in builder inference lambdas
    • KT-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 bound
    • KT-55068 Kotlin Gradle DSL: No mapping for symbol: VALUE_PARAMETER SCRIPT_IMPLICIT_RECEIVER on JVM IR backend
    • KT-51284 SAM conversion doesn't work if method has context receivers
    • KT-48532 Remove old JVM backend
    • KT-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-RC2
    • d325cf8 Call additional publishToMavenLocal in maven build scripts and enable info
    • 0403d70 Don't leave Gradle daemons after build scripts
    • 52b225d Fix task module-name is not propagated to compiler arguments
    • d40ebc3 Specify versions-maven-plugin version explicitly
    • 2e829ed Fix version parsing crash on Gradle rich version string
    • f603c0e Scripting, IR: fix capturing of implicit receiver
    • 06cbf8f Scripting, tests: enable custom script tests with IR
    • d61cef0 Fix deserialization exception for DNN types from Java
    • ea33e72 JVM IR: script is a valid container for local delegated properties
    • Additional commits viewable in compare view

    Dependabot compatibility score

    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)
    dependencies java 
    opened by dependabot[bot] 0
  • Camera Crash Pixel 6pro

    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

    opened by Illusivemobile 1
  • UI Changes

    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.

    Screenshot_20221203-151544~2.png

    Screenshot_20221203-152221~2.png

    opened by ghost 0
  • Haptics similar to Google Camera

    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.

    opened by ghost 0
  • Feature Request: Allow QR area to be modified

    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.

    opened by ejose19 0
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:

    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:

    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:

    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
Security and privacy focused mobile OS with Android app compatibility. We focus on developing substantial privacy and security improvements.
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.

Nils Druyen 16 Dec 15, 2022
📸 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

Hong Duan 119 Nov 25, 2022
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

Mayank Nagwanshi 73 May 20, 2022
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

Shikeya Anderson 1 Dec 31, 2022
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

Jeroen Mols 1.2k Nov 22, 2022
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

Bozhidar Bozhanov 642 Nov 27, 2022
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

Jan Rabe 81 Jun 29, 2022
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

Simple Mobile Tools 644 Jan 7, 2023
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

Zeroz & Onez 1 Nov 10, 2021
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

Christian Hein 0 Jan 1, 2022
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

Fabian Rosales (Frosquivel Developer) 331 Nov 20, 2022
📸 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

Cotta & Cush Limited 116 Dec 29, 2022
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

Ronnie Otieno 33 Nov 19, 2022
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

null 0 Apr 21, 2022
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

null 8 May 12, 2022
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.

k3b 18 Dec 20, 2022
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.

Nils Druyen 16 Dec 15, 2022
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

Kashif Mehmood 41 Dec 6, 2022
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

Kashif Mehmood 9 Sep 16, 2022