Giter Site home page Giter Site logo

hzitoun / android-camera2-secret-picture-taker Goto Github PK

View Code? Open in Web Editor NEW
321.0 19.0 84.0 1.28 MB

Take pictures 📷 secretly (without preview or launching device's camera app) using Android CAMERA2 API

License: MIT License

Java 100.00%
camera2-api android camera native java picture sdk-android preview gradle mobile

android-camera2-secret-picture-taker's People

Contributors

hzitoun avatar

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

android-camera2-secret-picture-taker's Issues

Capture black and dark images

I tried run this project on Galaxy S6 Docomo (SC-05G) installed Android 5.0.2.
Back and Front camera captured black images.
Please check it, and sorry about my english.

Closes without exception error

Hey dude,

So I managed to run your original code, however it terminates after one picture being taken?

Run log is shown below,

I/art: humin current process: com.hzitoun.camera2secretpicturetaker I/art: current process_level is : 0 I/HwSecImmHelper: mSecurityInputMethodService is null I/OpenGLRenderer: Initialized EGL, version 1.4 I/CameraManagerGlobal: Connecting to camera service I/PictureService: Taking picture from camera 0 W/ImageReader_JNI: Unable to acquire a lockedBuffer, very likely client tries to lock more than maxImages buffers I/Process: Sending signal. PID: 20732 SIG: 9 Application terminated.

Android Monitor does not show any errors or exceptions! It just closes!

Session has been closed; further changes are illegal.

java.lang.IllegalStateException: Session has been closed; further changes are illegal.
at android.hardware.camera2.impl.CameraCaptureSessionImpl.checkNotClosed(CameraCaptureSessionImpl.java:672)
at android.hardware.camera2.impl.CameraCaptureSessionImpl.capture(CameraCaptureSessionImpl.java:174)
at io.commax.app.dashcam.PictureCapturingServiceImpl$3.onConfigured(PictureCapturingServiceImpl.java:204)
at java.lang.reflect.Method.invoke(Native Method)
at android.hardware.camera2.dispatch.InvokeDispatcher.dispatch(InvokeDispatcher.java:39)
at android.hardware.camera2.dispatch.HandlerDispatcher$1.run(HandlerDispatcher.java:65)
at android.os.Handler.handleCallback(Handler.java:794)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:6651)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:824)

VerifyError?

Hello,

I've been trying to understand your code as an android novice. But when running it locally on android studio, I get a verify error at

PictureService service =new PictureService(); service.startCapturing(PictureActivity.this, PictureActivity.this);

Any help is appreciated

AndroidRuntime: FATAL EXCEPTION

AndroidRuntime: FATAL EXCEPTION: Thread-1116
java.lang.IllegalArgumentException: Surface had no valid native Surface.
at android.hardware.camera2.legacy.LegacyCameraDevice.nativeGetSurfaceId(Native Method)
at android.hardware.camera2.legacy.LegacyCameraDevice.getSurfaceId(LegacyCameraDevice.java:658)
at android.hardware.camera2.legacy.LegacyCameraDevice.containsSurfaceId(LegacyCameraDevice.java:678)
at android.hardware.camera2.legacy.RequestThreadManager$2.onPictureTaken(RequestThreadManager.java:220)
at android.hardware.Camera$EventHandler.handleMessage(Camera.java:1248)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:207)
at android.hardware.camera2.legacy.CameraDeviceUserShim$CameraLooper.run(CameraDeviceUserShim.java:136)
at java.lang.Thread.run(Thread.java:818)

Design contribution.

Hallo @hzitoun
I am a designer and want to make a logo for this projects.If you have any requirements then let me know. its free for open source projects.

Burst images?

Hi,

How can I make it support burst mode? ie. captureBurst.

Thank you!

Black photo

Device huawei honor 4 s. Android 6.0.
After clicking on the button, two photos of absolutely black color are saved. What's wrong?

UncaughtException

Hi,
getting this exception while clicking picture on press of power button..
UncaughtException: java.lang.IllegalStateException: CameraDevice was already closed.
Any solution to get rid of this?

Orientation Issue

Image orientation is not set, I tried to do it manually but got no success, can anyone help me?

Access denied finding property “persist.camera.cfa.packagelist”

Hi,
I am getting this issues: Access denied finding property “persist.camera.cfa.packagelist”
and captured image is black. Front Camera
Device Nokia 6.1, Os: Android One 8.1 and Hardware Supported Level: Level 3.
Please reply asap i am looking for solution from last 3 days.

Thanks.

Resolution of image is very bad?

http://imgur.com/a/33PCy
as you can see it takes photo with very bad resolution.
any help.
[Edit]
I tried other phones and it works fine, I take this bad images on Huawei Y6II only and I don't know why? the phone camera is 13 mpx and works fine with native camera app.

onCaptureCompleted being called BEFORE OnImageAvailable

Hi,

I'm using the code almost exactly as is and am having an asynchronous issue where the onCaptureCompleted is being called before the onImageAvailable callback. The problem here is that when onCaptureCompleted is being called, it shows the picturesTaken map as empty because the pictureUrl hasn't been set yet in the saveImageToDisk method in the onImageAvailable callback.

crash: supportsCameraApi: Unknown camera ID 1

2020-11-24 15:01:10.285 881-1948/? E/CameraService: supportsCameraApi: Unknown camera ID 1
2020-11-24 15:01:10.287 32188-32188/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.hzitoun.camera2secretpicturetaker, PID: 32188
java.lang.IllegalArgumentException: supportsCameraApi:2168: Unknown camera ID 1
at android.hardware.camera2.CameraManager.throwAsPublicException(CameraManager.java:811)
at android.hardware.camera2.CameraManager.getCameraCharacteristics(CameraManager.java:333)
at android.hardware.camera2.CameraManager.openCameraDeviceUserAsync(CameraManager.java:369)
at android.hardware.camera2.CameraManager.openCameraForUid(CameraManager.java:608)
at android.hardware.camera2.CameraManager.openCamera(CameraManager.java:536)
at com.hzitoun.camera2SecretPictureTaker.services.PictureCapturingServiceImpl.openCamera(PictureCapturingServiceImpl.java:118)
at com.hzitoun.camera2SecretPictureTaker.services.PictureCapturingServiceImpl.startCapturing(PictureCapturingServiceImpl.java:100)
at com.hzitoun.camera2SecretPictureTaker.activities.MainActivity.lambda$onCreate$0$MainActivity(MainActivity.java:58)
at com.hzitoun.camera2SecretPictureTaker.activities.-$$Lambda$MainActivity$P24AwWWVK6x_J4ZWyiyarnYMwY8.onClick(Unknown Source:2)
at android.view.View.performClick(View.java:7217)
at android.view.View.performClickInternal(View.java:7191)
at android.view.View.access$3500(View.java:828)
at android.view.View$PerformClick.run(View.java:27679)
at android.os.Handler.handleCallback(Handler.java:900)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:219)
at android.app.ActivityThread.main(ActivityThread.java:8347)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)
Caused by: android.os.ServiceSpecificException: supportsCameraApi:2168: Unknown camera ID 1 (code 3)
at android.os.Parcel.createException(Parcel.java:2085)
at android.os.Parcel.readException(Parcel.java:2039)
at android.os.Parcel.readException(Parcel.java:1987)
at android.hardware.ICameraService$Stub$Proxy.supportsCameraApi(ICameraService.java:857)
at android.hardware.camera2.CameraManager.supportsCameraApiLocked(CameraManager.java:864)
at android.hardware.camera2.CameraManager.supportsCamera2ApiLocked(CameraManager.java:840)
at android.hardware.camera2.CameraManager.getCameraCharacteristics(CameraManager.java:307)
at android.hardware.camera2.CameraManager.openCameraDeviceUserAsync(CameraManager.java:369) 
at android.hardware.camera2.CameraManager.openCameraForUid(CameraManager.java:608) 
at android.hardware.camera2.CameraManager.openCamera(CameraManager.java:536) 
at com.hzitoun.camera2SecretPictureTaker.services.PictureCapturingServiceImpl.openCamera(PictureCapturingServiceImpl.java:118) 
at com.hzitoun.camera2SecretPictureTaker.services.PictureCapturingServiceImpl.startCapturing(PictureCapturingServiceImpl.java:100) 
at com.hzitoun.camera2SecretPictureTaker.activities.MainActivity.lambda$onCreate$0$MainActivity(MainActivity.java:58) 
at com.hzitoun.camera2SecretPictureTaker.activities.-$$Lambda$MainActivity$P24AwWWVK6x_J4ZWyiyarnYMwY8.onClick(Unknown Source:2) 
at android.view.View.performClick(View.java:7217) 
at android.view.View.performClickInternal(View.java:7191) 
at android.view.View.access$3500(View.java:828) 
at android.view.View$PerformClick.run(View.java:27679) 
at android.os.Handler.handleCallback(Handler.java:900) 
at android.os.Handler.dispatchMessage(Handler.java:103) 
at android.os.Looper.loop(Looper.java:219) 
at android.app.ActivityThread.main(ActivityThread.java:8347) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055) 

Dosent works below 5.0

the was working fine in lollipop and above, but the app crashed in kitkat, can you please somehow make it compatible till api 19.

CameraDevice was already closed

Exception java.lang.IllegalStateException: CameraDevice was already closed
at android.hardware.camera2.impl.CameraDeviceImpl.checkIfCameraClosedOrInError (CameraDeviceImpl.java:2228)
at android.hardware.camera2.impl.CameraDeviceImpl.createCaptureRequest (CameraDeviceImpl.java:789)
at pk.com.informatica.inab.services.PictureCapturingServiceImpl.takePicture (PictureCapturingServiceImpl.java:256)
at pk.com.informatica.inab.services.PictureCapturingServiceImpl.access$800 (PictureCapturingServiceImpl.java:53)
at pk.com.informatica.inab.services.PictureCapturingServiceImpl$2.lambda$onOpened$0$pk-com-informatica-inab-services-PictureCapturingServiceImpl$2 (PictureCapturingServiceImpl.java:174)
at pk.com.informatica.inab.services.PictureCapturingServiceImpl$2$$ExternalSyntheticLambda0.run
at android.os.Handler.handleCallback (Handler.java:938)
at android.os.Handler.dispatchMessage (Handler.java:99)
at android.os.Looper.loop (Looper.java:223)
at android.app.ActivityThread.main (ActivityThread.java:7950)
at java.lang.reflect.Method.invoke
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:603)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:947)

Not Able to change the WhiteBalance

Hi,
I am changing the AWB and other settings of the camera but was not able change accept the FlashMode
Here is what I m doing

` /*Settings for Camera/
// captureBuilder.set(CaptureRequest.CONTROL_MODE, CameraMetadata.CONTROL_MODE_AUTO);
captureBuilder.set(CaptureRequest.JPEG_ORIENTATION, getOrientation());

    /**HDR*/
    captureBuilder.set(CaptureRequest.CONTROL_SCENE_MODE, CameraMetadata.CONTROL_SCENE_MODE_HDR);
    
    /**Settings for Flash*/
        captureBuilder.set(CaptureRequest.FLASH_MODE, CameraMetadata.FLASH_MODE_TORCH);

// captureBuilder.set(CaptureRequest.CONTROL_AWB_MODE, CaptureRequest.CONTROL_AWB_MODE_AUTO);

/**for White Balance */

        captureBuilder.set(CaptureRequest.CONTROL_AWB_MODE, CaptureRequest.CONTROL_AWB_MODE_AUTO);
            captureBuilder.set(CaptureRequest.COLOR_CORRECTION_MODE, CaptureRequest.CONTROL_AWB_MODE_AUTO);
            captureBuilder.set(CaptureRequest.COLOR_CORRECTION_GAINS, colorTemperature(CaptureRequest.CONTROL_AWB_MODE_AUTO));

        //for Incandescent
            captureBuilder.set(CaptureRequest.COLOR_CORRECTION_MODE, CaptureRequest.CONTROL_AWB_MODE_INCANDESCENT);
            captureBuilder.set(CaptureRequest.COLOR_CORRECTION_GAINS, colorTemperature(CaptureRequest.CONTROL_AWB_MODE_INCANDESCENT));

// captureBuilder.set(CaptureRequest.COLOR_CORRECTION_GAINS, CameraCapabilities.colorTemperature(Integer.parseInt(awbMode)));
//for Daylight
captureBuilder.set(CaptureRequest.COLOR_CORRECTION_MODE, CaptureRequest.CONTROL_AWB_MODE_DAYLIGHT);
captureBuilder.set(CaptureRequest.COLOR_CORRECTION_GAINS, colorTemperature(CaptureRequest.CONTROL_AWB_MODE_DAYLIGHT));

//for fluorescent
captureBuilder.set(CaptureRequest.COLOR_CORRECTION_MODE, CaptureRequest.CONTROL_AWB_MODE_FLUORESCENT);
captureBuilder.set(CaptureRequest.COLOR_CORRECTION_GAINS, colorTemperature(CaptureRequest.CONTROL_AWB_MODE_FLUORESCENT));}
//for cloudy
captureBuilder.set(CaptureRequest.COLOR_CORRECTION_MODE, CaptureRequest.CONTROL_AWB_MODE_CLOUDY_DAYLIGHT);
captureBuilder.set(CaptureRequest.COLOR_CORRECTION_GAINS, colorTemperature(CaptureRequest.CONTROL_AWB_MODE_CLOUDY_DAYLIGHT));

/*For ISO/
captureBuilder.set(CaptureRequest.CONTROL_MODE, CameraMetadata.INFO_SUPPORTED_HARDWARE_LEVEL_FULL);
CameraCharacteristics mCameraCharacteristics = characteristics;
List keys_list = characteristics.getKeys();
Range range2 = characteristics.get(CameraCharacteristics.SENSOR_INFO_SENSITIVITY_RANGE);
int iso = ((200 * (200 - 100)) / 100 + 100);
if (range2 != null) {
int max1 = range2.getUpper();//10000
int min1 = range2.getLower();//100
iso = ((max1 * (max1 - min1)) / 100 + min1);
}
captureBuilder.set(CaptureRequest.SENSOR_SENSITIVITY, iso);
`
How can I change settings and the Image i get is too dark ....

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.