Take Picture without preview Android

17,295

Use this permissions :

 <uses-permission android:name="android.permission.CAMERA" />
 <uses-feature android:name="android.hardware.camera" />

And you can instantiate a Camera object using this

Camera mycamera = Camera.open();

You can try the method described here is very simple if you are into simplicity:

http://developer.android.com/training/camera/photobasics.html

Share:
17,295
113408
Author by

113408

Software engineer with focus on product value, fan of new technologies. Like to try out new tech and see how it can be integrated into on-going projects.

Updated on July 27, 2022

Comments

  • 113408
    113408 almost 2 years

    I would like to take a picture without any preview. I used this code but I'm getting an error:

     public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    
        Camera.Parameters parameters = camera.getParameters();
        parameters.setPictureFormat(PixelFormat.JPEG);
        camera.setParameters(parameters);
        SurfaceView mview = new SurfaceView(getBaseContext());
        try {
            camera.setPreviewDisplay(mview.getHolder());
            camera.startPreview();
            camera.takePicture(null,null,photoCallback);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    
    
    
    
    }
    
     Camera.PictureCallback photoCallback=new Camera.PictureCallback() {
        public void onPictureTaken(byte[] data, Camera camera) {
    
            Uri uriTarget = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, new ContentValues());
            OutputStream imageFileOS;
    
            try {
    
                imageFileOS = getContentResolver().openOutputStream(uriTarget);
                imageFileOS.write(data);
                imageFileOS.flush();
                imageFileOS.close();
    
                Toast.makeText(AndroidTestJNIActivity.this, "Image saved: " + uriTarget.toString(), Toast.LENGTH_LONG).show();
    
            } catch (FileNotFoundException e) {
                e.printStackTrace();
    
            } catch (IOException e) {
                e.printStackTrace();
    
            }
            finish();
    
        }
    };
    

    I get a NullPointerException when I try to access camera. I don't know how to initialize it. I think the problem is that camera is never initialized.

     05-29 14:40:20.330: E/AndroidRuntime(15571): FATAL EXCEPTION: main
     05-29 14:40:20.330: E/AndroidRuntime(15571): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.achillessecurity.androidtestjni/com.achillessecurity.androidtestjni.AndroidTestJNIActivity}: java.lang.RuntimeException: Fail to connect to camera service
     05-29 14:40:20.330: E/AndroidRuntime(15571):   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1768)
     05-29 14:40:20.330: E/AndroidRuntime(15571):   at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1784)
    05-29 14:40:20.330: E/AndroidRuntime(15571):    at android.app.ActivityThread.access$1500(ActivityThread.java:123)
     05-29 14:40:20.330: E/AndroidRuntime(15571):   at android.app.ActivityThread$H.handleMessage(ActivityThread.java:939)
     05-29 14:40:20.330: E/AndroidRuntime(15571):   at android.os.Handler.dispatchMessage(Handler.java:99)
     05-29 14:40:20.330: E/AndroidRuntime(15571):   at android.os.Looper.loop(Looper.java:130)
     05-29 14:40:20.330: E/AndroidRuntime(15571):   at android.app.ActivityThread.main(ActivityThread.java:3835)
     05-29 14:40:20.330: E/AndroidRuntime(15571):   at java.lang.reflect.Method.invokeNative(Native Method)
     05-29 14:40:20.330: E/AndroidRuntime(15571):   at java.lang.reflect.Method.invoke(Method.java:507)
     05-29 14:40:20.330: E/AndroidRuntime(15571):   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847)
     05-29 14:40:20.330: E/AndroidRuntime(15571):   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605)
     05-29 14:40:20.330: E/AndroidRuntime(15571):   at dalvik.system.NativeStart.main(Native Method)
     05-29 14:40:20.330: E/AndroidRuntime(15571): Caused by: java.lang.RuntimeException: Fail to connect to camera service
     05-29 14:40:20.330: E/AndroidRuntime(15571):   at android.hardware.Camera.native_setup(Native Method)
     05-29 14:40:20.330: E/AndroidRuntime(15571):   at android.hardware.Camera.<init>(Camera.java:258)
     05-29 14:40:20.330: E/AndroidRuntime(15571):   at android.hardware.Camera.open(Camera.java:235)
     05-29 14:40:20.330: E/AndroidRuntime(15571):   at com.achillessecurity.androidtestjni.AndroidTestJNIActivity.onCreate(AndroidTestJNIActivity.java:42)
     05-29 14:40:20.330: E/AndroidRuntime(15571):   at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
     05-29 14:40:20.330: E/AndroidRuntime(15571):   at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1722)
    

    I initialize camera by: camera= Camera.open();

  • 113408
    113408 almost 12 years
    thanks for the response. I initialize camera and now i get a new error see my edit
  • opc0de
    opc0de almost 12 years
    @HamzaKarmouda have you set the permissions in your manifest file ?
  • 113408
    113408 almost 12 years
    yes of course. i don't know why it can't connect camera to service
  • 113408
    113408 almost 12 years
    you're right, to initialize the camera we have to do Camera.open()and don't forget to close the camera to avoid Fail to connect service Error