problema con tomar fotos usando la cámara de Android

Tengo una aplicación donde estoy usando la cámara de Android para tomar fotos. He construido mi propia cámara de Android. Y las fotos se toman presionando un botón.

Algo como esto

  public void onClick(View arg0) {
  mCamera.takePicture(null, mPictureCallback, mPictureCallback);
  }


Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() {
    public void onPictureTaken(byte[] imageData, Camera c) {

        if (imageData != null) {
            Intent mIntent = new Intent();


            Bundle b = new Bundle();
            b.putByteArray("imageData", imageData);
            Intent i = new Intent(mContext, ViewPhoto.class);
            i.putExtras(b);
            startActivity(i);

            setResult(FOTO_MODE, mIntent);
            finish();

        }
    }
};

Una vez que se toma la foto, uso una intención y envío los bytes a otra actividad.

El gran problema es que si tomo varias fotos, una por una presionando el botón, mi aplicación se bloquea en esta línea:

mCamera.takePicture(null, mPictureCallback, mPictureCallback);

Así se ve mi logcat:

java.lang.RuntimeException: takePicture failed
at android.hardware.Camera.native_takePicture(Native Method)
at android.hardware.Camera.takePicture(Camera.java:746)
at android.hardware.Camera.takePicture(Camera.java:710)
at com.Xperiaproject.TakePhoto.onClick(TakePhoto.java:216)
at android.view.View.performClick(View.java:2534)
at android.view.View$PerformClick.run(View.java:9210)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:3701)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:862)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
at dalvik.system.NativeStart.main(Native Method)

¿Alguna idea de como resolver esto

EDIT: también he intentado:

mCamera.takePicture(null, null, mPictureCallback);

pero se bloquea después de varias fotos !!!

!!!!!!!! Este es mi código completo:http: //pastebin.com/0U1pQSa

Respuestas a la pregunta(3)

Su respuesta a la pregunta