So I can never make camera images that are higher resolution then
277x184? :S
If I stuff all the camera code into my main activity, then it should
work. But that's a little messy. Are you sure there isn't another way
to pass the camera images?

Thanks


On Feb 16, 10:05 pm, Streets Of Boston <[email protected]>
wrote:
> Binary data works upto about 100KByte. Anything larger, you very
> likely get that error.
>
> For images in RGB_565, this is about 277 x 184 pixels max (277 x 184 *
> 2 = 101936)
>
> On Feb 16, 4:17 am, Bart <[email protected]> wrote:
>
> > Hi, I have a problem with an app that lets the user take a picture.
> > I've posted it on some forums already, but nobody seems to recognize
> > the problem. Hopefully someone here knows a solution :)
>
> > I've put the code of taking a picture in a seperate activity. Then I
> > call the camera intent from my main activity using activityForResult.
> > In the camera intent, I use putExtra to return the camera image (as a
> > byte[] without doing anything to it). But when the program transitions
> > back from the camera intent to the parent intent that called it I get
> > aFailedBinderTransaction error in the logcat because the byte[] is
> > too big. But I don't understand this, because the image is not even
> > taken using the maximum resolution :S
>
> > The code of my camera intent is:
>
> > package example.imaging.ape;
>
> > import java.io.IOException;
> > import java.util.Iterator;
> > import java.util.Set;
>
> > import android.app.Activity;
> > import android.content.Intent;
> > import android.graphics.Bitmap;
> > import android.graphics.BitmapFactory;
> > import android.graphics.PixelFormat;
> > import android.hardware.Camera;
> > import android.hardware.Camera.AutoFocusCallback;
> > import android.os.Bundle;
> > import android.util.Log;
> > import android.view.MotionEvent;
> > import android.view.SurfaceHolder;
> > import android.view.SurfaceView;
> > import android.view.View;
> > import android.view.Window;
> > import android.view.WindowManager;
> > import android.view.View.OnTouchListener;
>
> > public class TakePicture extends Activity implements
> > SurfaceHolder.Callback{
> >      Camera mCamera;
> >      Boolean mPreviewRunning = false;
> >      int imageLayoutHeight;
> >      int imageLayoutWidth;
>
> >     �...@override
> >      public void onCreate(Bundle savedInstanceState) {
> >           super.onCreate(savedInstanceState);
>
> >           //setup camera surface
> >           getWindow().setFormat(PixelFormat.TRANSLUCENT);
> >           requestWindowFeature(Window.FEATURE_NO_TITLE);
>
> > getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
> > WindowManager.LayoutParams.FLAG_FULLSCREEN);
> >           setContentView(R.layout.cameralayout);
>
> >           SurfaceView mSurfaceView = (SurfaceView)
> > findViewById(R.id.hist_surface_camera);
> >           SurfaceHolder mSurfaceHolder = mSurfaceView.getHolder();
> >           mSurfaceHolder.addCallback(this);
>
> > mSurfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
> >           Bundle extras = getIntent().getExtras();
> >           imageLayoutHeight = extras.getInt("layoutHeight");
> >           imageLayoutWidth = extras.getInt("layoutWidth");
>
> >           OnTouchListener touchListener = new View.OnTouchListener() {
> >                public boolean onTouch(View v, MotionEvent e) {
>
> >                     System.out.println("MAKING PICTURE");
> >                     mCamera.autoFocus(cb);
> >                     return false;
> >                }
> >           };
>
> >           //setup touch listener
> >           mSurfaceView.setOnTouchListener(touchListener);
>
> >      }
>
> >      AutoFocusCallback cb = new AutoFocusCallback() {
> >           public void onAutoFocus(boolean success, Camera c) {
> >                c.takePicture(null, null, mPictureCallback);
> >           }
> >      };
>
> >      Camera.PictureCallback mPictureCallback = new
> > Camera.PictureCallback() {
> >           public void onPictureTaken(byte[] imageData, Camera c) {
> >                System.out.println("Picture taken, now
> > returning");
> >                Intent resultIntent = new Intent();
> >                resultIntent.putExtra("cameraImage", imageData);
> >                System.out.println("put Extra");
> >                setResult(Activity.RESULT_OK, resultIntent);
> >                finish();
> >           }
> >      };
>
> >      //initialize camera
> >      public void surfaceCreated(SurfaceHolder holder) {
> >           mCamera = Camera.open();
> >      }
>
> >      public void surfaceChanged(SurfaceHolder holder, int format, int
> > w, int h) {
> >           if (mPreviewRunning) {
> >                mCamera.stopPreview();
> >           }
>
> >           Camera.Parameters p = mCamera.getParameters();
>
> >           p.setPreviewSize(h, w);
> >           System.out.println("PreviewSize: " + h + "," + w);
> >           p.setPictureSize(h*3,w*3); // is around 1200x900
> >           p.set("rotation", 90);
> >           mCamera.setParameters(p);
>
> >           try {
> >                mCamera.setPreviewDisplay(holder);
> >           } catch (IOException e) {
> >                e.printStackTrace();
> >           }
>
> >           mCamera.startPreview();
> >           mPreviewRunning = true;
> >      }
>
> >      public void surfaceDestroyed(SurfaceHolder holder) {
> >           mCamera.stopPreview();
> >           mPreviewRunning = false;
> >           mCamera.release();
> >      }
>
> > }
>
> > And this is how I call the camera activity:
>
> > Intent intent = new Intent(mainActivity.this, TakePicture.class);
> > intent.putExtra("layoutWidth",layoutWidth);
> > intent.putExtra("layoutHeight",layoutHeight);
> > startActivityForResult(intent,0);
>
> > The onActivityResult is never reached because the error occurs during
> > the transition between intents.
>
>

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to