banks
banks

Reputation: 35

Android takepicture failed at Android version 4.1.1 but succeed in version 4.0.0

I got the LogCat :

 java.lang.RuntimeException: takePicture failed
at android.hardware.Camera.native_takePicture(Native Method)
at android.hardware.Camera.takePicture(Camera.java:1061)
at android.hardware.Camera.takePicture(Camera.java:1006)
at com.cidtech.portraitcatch.service.MyService.takePic(MyService.java:168)
at com.cidtech.portraitcatch.service.MyService$1.onClick(MyService.java:78)
at android.view.View.performClick(View.java:4088)
at android.view.View$PerformClick.run(View.java:16984)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4745)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)

the curial code is below:

public void takePic(){
    home_takePic.setEnabled(false);
    camera = Camera.open();
    if(bitmapList == null){
        bitmapList = new ArrayList<Bitmap>();
    }
    for(int i=0; i<5; i++){

        camera.takePicture(null, null, new MyPictureCallback());
        SystemClock.sleep(1000);
    }

            saveBitmapToSdcard();

    releaseResource();
    home_takePic.setEnabled(true);
}

I also do this:

public void takePic(){
    home_takePic.setEnabled(false);
    camera = Camera.open();
    ***camera.startPreview();***
    if(bitmapList == null){
        bitmapList = new ArrayList<Bitmap>();
    }
    for(int i=0; i<5; i++){

        camera.takePicture(null, null, new MyPictureCallback());
        SystemClock.sleep(1000);
    }

    //      saveBitmapToSdcard();

    releaseResource();
    home_takePic.setEnabled(true);
}

but still get the same Exception

the method camera.takePicture have been performed in version 4.0.4 but faild in version 4.1.1, who can tell me how to solve it ,please help me ,thanks

Upvotes: 1

Views: 1411

Answers (1)

Mike P.
Mike P.

Reputation: 1930

You need to be making a call to startPreview() before you attempt the call to takePicture(). Do this after you call Camera.open().

As per Android documentation:

Important: Call startPreview() to start updating the preview surface. Preview must be started before you can take a picture.

startPreview documentation

Upvotes: 2

Related Questions