Giter Site home page Giter Site logo

android-camera2raw's Introduction

Android Camera2Raw Sample

This repo has been migrated to github.com/android/camera. Please check that repo for future updates. Thank you!

android-camera2raw's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

android-camera2raw's Issues

ChooseOptimalSize too strict

I recently ran this app on Red Hydrogen One, and ChooseOptimalSize method cannot find a proper preview size. The session fails to configure due to a too high resolution returned (first in choices list).

With further examination I suggest that ChooseOptimalSize method is too strict with size filtering, noticeably it requires all sizes to fit with the specified aspect ratio. And this value is provided by getting the largestJpeg property from outputs.

On many (high end) devices, max input/output sizes often correspond with the max native resolution from sensor array, which is usually a non-standard resolution. In my Red phone's case it's 4056x3040 aka 1.3342105. This is close to 4:3 (1.33) but not exactly. All other lower resolutions are either standard 1.33, 1.77, 1.0, etc.

FragmentCompat.OnRequestPermissionsResultCallback

Using this camera2 code with Android Studio 3.0 (API 27) and Gradle 4.0.1 on my Ubuntu OS, the import android.support.v13.app.FragmentCompat call in the big java file comes up RED with a "cannot resolve" error. So it is no surprise that throughout FragmentCompat comes up RED. Nor can Android Studio find the Android Manifest file which is, in fact, right there in the specified folder!@#$%^. I am trying to implement this camera2 code with the latest android build tools, and I have the requisite library added to the dependencies.

Suggestions?

crash

image

crash on Android 8.1.0

App crash on both device and AVD at startup

App crash on startup,can somebody confirm this code sample still maitained and workable?

11-25 08:01:57.511 27723-27723/? E/dalvikvm: >>>>> com.example.android.camera2basic [ userId:0 | appId:10268 ]
11-25 08:01:57.806 27723-27723/com.example.android.camera2basic E/dalvikvm: Could not find class 'com.example.android.camera2basic.Camera2BasicFragment$2', referenced from method com.example.android.camera2basic.Camera2BasicFragment.
11-25 08:01:57.816 27723-27723/com.example.android.camera2basic E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.android.camera2basic, PID: 27723
java.lang.VerifyError: com/example/android/camera2basic/Camera2BasicFragment
at com.example.android.camera2basic.CameraActivity.onCreate(CameraActivity.java:30)
at android.app.Activity.performCreate(Activity.java:5580)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1093)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2400)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2495)
at android.app.ActivityThread.access$900(ActivityThread.java:170)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1304)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:146)
at android.app.ActivityThread.main(ActivityThread.java:5635)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1291)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1107)
at dalvik.system.NativeStart.main(Native Method)

Full screen image

Hi,

Is there a way to capture a full-screen image.

I was able to make preview to full screen but the image captured is not.

It would be very helpful if you could some solution.

How to realize camera2 zooming

In Camera Api,we can use
Camera.Parameters parameters = mCamera.getParameters();
if (zoomValue < 0) {
zoomValue = 0;
} else if (zoomValue > parameters.getMaxZoom()) {
zoomValue = parameters.getMaxZoom();
}
parameters.setZoom(zoomValue);
mCamera.setParameters(parameters);
these codes to realize zooming camera.
but how does it do in Camera2 Api ???

Thanks and wait for your answer。。

atypical syntax?

I am puzzled by the if (null == mCameraDevice) syntax on line 944. Am I to read this as equivalent to if (mCameraDevice == null)? Similar [perplexing uses of " null == " are found in lines 1042 and 1210. Please explain this syntax and point me to appropriate reference materials pertaining to such usage in Java and Android Studio.

java.lang.NullPointerException

java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.hardware.camera2.CameraCharacteristics.get(android.hardware.camera2.CameraCharacteristics$Key)' on a null object reference
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at com.example.android.camera2raw.Camera2RawFragment.configureTransform(Camera2RawFragment.java:1046)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at com.example.android.camera2raw.Camera2RawFragment.access$000(Camera2RawFragment.java:121)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at com.example.android.camera2raw.Camera2RawFragment$1.onSurfaceTextureAvailable(Camera2RawFragment.java:212)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.view.TextureView.getHardwareLayer(TextureView.java:390)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.view.TextureView.draw(TextureView.java:339)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:18428)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.view.View.draw(View.java:19251)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.view.ViewGroup.drawChild(ViewGroup.java:4421)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4207)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:18413)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.view.View.draw(View.java:19251)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.view.ViewGroup.drawChild(ViewGroup.java:4421)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4207)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.view.View.draw(View.java:19562)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:18428)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.view.View.draw(View.java:19251)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.view.ViewGroup.drawChild(ViewGroup.java:4421)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4207)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:18413)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.view.View.draw(View.java:19251)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.view.ViewGroup.drawChild(ViewGroup.java:4421)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4207)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:18413)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.view.View.draw(View.java:19251)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.view.ViewGroup.drawChild(ViewGroup.java:4421)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.view.ViewGroup.dispatchDraw(ViewGroup.java:4207)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at com.android.internal.policy.DecorView.dispatchDraw(DecorView.java:840)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.view.View.draw(View.java:19562)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at com.android.internal.policy.DecorView.draw(DecorView.java:825)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.view.View.updateDisplayListIfDirty(View.java:18428)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:681)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:687)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:795)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.view.ViewRootImpl.draw(ViewRootImpl.java:3605)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:3382)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2890)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1706)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7806)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1042)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.view.Choreographer.doCallbacks(Choreographer.java:833)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.view.Choreographer.doFrame(Choreographer.java:768)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1028)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:794)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:103)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.os.Looper.TinnoLoop(Looper.java:189)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.os.Looper.loop(Looper.java:270)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:6730)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
01-15 08:25:17.646 6340 6340 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)

android-camera2Raw faisl on AVD

With some tweaking, I have this camera2Raw code able to build with the latest AndroidStudio 3.0.1, and Gradle 4.1, ubuntu OS, however, it will not run on the Pixel = 2 XL API 27 AVD. The app appears loads but immediately STOPS RUNNING. The top story on Logcat: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.hardware.camera2.CameraCharacteristics.get(android.hardware.camera2.CameraCharacteristics$Key)' on a null object
Can this AVD be queried for android.hardware.camera2.CameraCharacteristics$?

Image is stored to the card only after second run

Hello, I am writing a simple application and I have used this example as scaffold. What I have found out that image is stored into the card after second run. When I call take picture method, image is not saved and it is saved only when I called the method twice or more. Here is why (I hope that the flow will be understandable)

When you call takePicture method plenty of code is executed but we are interested only to onCaptureCompleted method.

The code creates completion task, after that result is set to the builder. But the completion task is created only if result is already set to the mCaptureResult. Here is the problem. setResult should be called before handleCompletionLocked or otherwise.

@Override
        public void onCaptureCompleted(/*...*/) {
//...
            synchronized (mCameraStateLock) {
                // If we have all the results necessary, save the image to a file in the background.
                handleCompletionLocked(requestId, jpegBuilder, mJpegResultQueue); // creates task only if mCaptureResult != null

                if (jpegBuilder != null) {
                    jpegBuilder.setResult(result); // but here is code which sets mCaptureResult
// ...
                }

        }

Here is why. Task is created only if saver is not null.

    private void handleCompletionLocked(/*...*/) {
        if (builder == null) return;
        ImageSaver saver = builder.buildIfComplete();
        if (saver != null) {
            queue.remove(requestId);
            AsyncTask.THREAD_POOL_EXECUTOR.execute(saver);
        }
    }

because it is first run mCamptureResult is null thus buildIfComplete must return null

public synchronized ImageSaver buildIfComplete() {
                if (!isComplete()) { // mImage != null && mFile != null && mCaptureResult != null && mCharacteristics != null
                    return null;
                }
                return new ImageSaver(mImage, mFile, mCaptureResult, mCharacteristics, mContext,
                        mReader);
            }

more over mCaptureResult is set only in one place and this is setResult method.

The fix is simple just move setResult before handleCompletionLocked or move handleCompletionLocked after setResult.

Please note that I am not an android master :)

Also I have a problem with rotation of the saved image on my nexus 7. Image is always flipped upside down but that is another issue I suppose.

Does Not Run, null pointer exception

It appears mCharacteristics is null, indeed I don't believe it is EVER set, anywhere in the code, so not too surprising.

08-17 07:57:47.305 5598-5598/com.example.android.camera2raw E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.android.camera2raw, PID: 5598
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.hardware.camera2.CameraCharacteristics.get(android.hardware.camera2.CameraCharacteristics$Key)' on a null object reference
at com.example.android.camera2raw.Camera2RawFragment.configureTransform(Camera2RawFragment.java:1046)
at com.example.android.camera2raw.Camera2RawFragment.access$000(Camera2RawFragment.java:121)
at com.example.android.camera2raw.Camera2RawFragment$1.onSurfaceTextureAvailable(Camera2RawFragment.java:212)
at android.view.TextureView.getHardwareLayer(TextureView.java:390)
at android.view.TextureView.draw(TextureView.java:339)
at android.view.View.updateDisplayListIfDirty(View.java:16171)

no proper flash in the dark

Hi,

I noticed that when ambient illumination differs, flash behaviour also changes. In complete dark, a long prelash is enabled, however, no flash fired. In a scene with ambient illumination, preflash + flash sequence works properly. Can anybody point out the root cause of not having proper flash in the dark ?

Thanks.

App fails with no useful error when phone doesn't support RAW

Running Camera2Raw on Sony Xperia Z5 Premium all I get is the message "Camera2Raw has stopped" with a button to restart the app and no further information... As it turns out Sony have opted to not support RAW format in there cameras (thank you Sony for restricting me to 23 MP of butchered data).

However the problem here is that the ErrorDialog.show() called from setUpCameraOutputs() is not showing anything before the app is killed off leaving the user unaware of what the problem is/was.

How to lock AF, AE and AWB?

Hello,

Thank you for the great sample.
It is very helpful for me to work with camera2 API and raw image support.
Note, It is not an issue, just need help.

After the first shot, how can I lock focus, exposure and white balance?
I tried many things, but no luck.
It would be great, if I someone guides me, and show me the direction.

Thank you in advance

App has no UI

I tried to build this app using ./gradlew build, but all it does is show a full screen preview, with no buttons at the bottom to take a picture.

Crashing out on emulator and device

06-17 05:02:37.210 4348-4348/com.example.android.camera2raw D/AndroidRuntime﹕ Shutting down VM
06-17 05:02:37.213 4348-4348/com.example.android.camera2raw E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.android.camera2raw, PID: 4348
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.hardware.camera2.CameraCharacteristics.get(android.hardware.camera2.CameraCharacteristics$Key)' on a null object reference
at com.example.android.camera2raw.Camera2RawFragment.configureTransform(Camera2RawFragment.java:940)
at com.example.android.camera2raw.Camera2RawFragment.access$000(Camera2RawFragment.java:116)
at com.example.android.camera2raw.Camera2RawFragment$1.onSurfaceTextureAvailable(Camera2RawFragment.java:181)
at android.view.TextureView.getHardwareLayer(TextureView.java:370)
at android.view.View.updateDisplayListIfDirty(View.java:14144)
at android.view.View.getDisplayList(View.java:14189)
at android.view.View.draw(View.java:14959)
at android.view.ViewGroup.drawChild(ViewGroup.java:3405)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3198)
at android.view.View.updateDisplayListIfDirty(View.java:14162)
at android.view.View.getDisplayList(View.java:14189)
at android.view.View.draw(View.java:14959)
at android.view.ViewGroup.drawChild(ViewGroup.java:3405)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3198)
at android.view.View.draw(View.java:15234)
at android.widget.FrameLayout.draw(FrameLayout.java:598)
at android.view.View.updateDisplayListIfDirty(View.java:14167)
at android.view.View.getDisplayList(View.java:14189)
at android.view.View.draw(View.java:14959)
at android.view.ViewGroup.drawChild(ViewGroup.java:3405)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3198)
at android.view.View.updateDisplayListIfDirty(View.java:14162)
at android.view.View.getDisplayList(View.java:14189)
at android.view.View.draw(View.java:14959)
at android.view.ViewGroup.drawChild(ViewGroup.java:3405)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3198)
at android.view.View.updateDisplayListIfDirty(View.java:14162)
at android.view.View.getDisplayList(View.java:14189)
at android.view.View.draw(View.java:14959)
at android.view.ViewGroup.drawChild(ViewGroup.java:3405)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3198)
at android.view.View.draw(View.java:15234)
at android.widget.FrameLayout.draw(FrameLayout.java:598)
at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2650)
at android.view.View.updateDisplayListIfDirty(View.java:14167)
at android.view.View.getDisplayList(View.java:14189)
at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:273)
at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:279)
at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:318)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:2530)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2352)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1982)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1061)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:5885)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:767)
at android.view.Choreographer.doCallbacks(Choreographer.java:580)
at android.view.Choreographer.doFrame(Choreographer.java:550)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:753)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5254)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.