Q:

adding image to the captured image in android

I am capturing an image using the following code
  public class PictureDemo extends Activity {
  private SurfaceView preview=null;
  private SurfaceHolder previewHolder=null;
  private Camera camera=null;
  private boolean inPreview=false;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    save=(Button)findViewById(R.id.save);
    save.setOnClickListener(this);
    image=(ImageView)findViewById(R.id.image);
    image.setImageResource(R.drawable.sofa);
    preview=(SurfaceView)findViewById(R.id.preview);
    previewHolder=preview.getHolder();
    previewHolder.addCallback(surfaceCallback);
    previewHolder.setType(SurfaceHolder. SURFACE_TYPE_PUSH_BUFFERS);
  }

  @Override
  public void onResume() {
  super.onResume();
  camera=CameraFinder. INSTANCE.open();
  }

  @Override
  public void onPause() {
    if (inPreview) {
    camera.stopPreview();
    }

    camera.release();
    camera=null;
    inPreview=false;

    super.onPause();
  }

  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
    new MenuInflater(this).inflate(R.menu.options, menu);

    return(super.onCreateOptionsMenu(menu));
  }

  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
    if (item.getItemId()==R.id.camera) {
      if (inPreview) {
        camera.takePicture(null, null, photoCallback);
        inPreview=false;
      }

      return(true);
    }

    return(super.onOptionsItemSelected(item));
  }

  @Override
  public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode==KeyEvent. KEYCODE_CAMERA ||
        keyCode==KeyEvent. KEYCODE_SEARCH) {

      return(true);
    }

    return(super.onKeyDown(keyCode, event));
  }

  private Camera. Size getBestPreviewSize(int width, int height,
                                         Camera. Parameters parameters) {
    Camera. Size result=null;

    for (Camera. Size size : parameters.getSupportedPreviewSizes()) {
      if (size.width<=width && size.height<=height) {
        if (result==null) {
          result=size;
        }
        else {
          int resultArea=result.width*result.height;
          int newArea=size.width*size.height;

          if (newArea>resultArea) {
            result=size;
          }
        }
      }
    }

    return(result);
  }

  SurfaceHolder. Callback surfaceCallback=new SurfaceHolder. Callback() {
    public void surfaceCreated(SurfaceHolder holder) {
      try {
        camera.setPreviewDisplay(previewHolder);
      }
      catch (Throwable t) {
        Log.e("PictureDemo-surfaceCallback",
              "Exception in setPreviewDisplay()", t);
        Toast
          .makeText(PictureDemo.this, t.getMessage(), Toast. LENGTH_LONG)
          .show();
      }
    }

    public void surfaceChanged(SurfaceHolder holder,
                               int format, int width,
                               int height) {
      Camera. Parameters parameters=camera.getParameters();
      Camera. Size size=getBestPreviewSize(width, height,
                                          parameters);

      if (size!=null) {
        parameters.setPreviewSize(size.width, size.height);
        parameters.setPictureFormat(PixelFormat. JPEG);

        camera.setParameters(parameters);
        camera.startPreview();
        inPreview=true;
      }
    }

    public void surfaceDestroyed(SurfaceHolder holder) {
      // no-op
    }
  };

  Camera. PictureCallback photoCallback=new Camera. PictureCallback() {
    public void onPictureTaken(byte[] data, Camera camera) {
      new SavePhotoTask().execute(data);
      camera.startPreview();
      inPreview=true;
    }
  };

  class SavePhotoTask extends AsyncTask<byte[], String, String> {
    @Override
    protected String doInBackground(byte[]... jpeg) {
      File photo=new File(Environment.getExternalStorageDirectory(),
                          "photo.jpg");

      if (photo.exists()) {
        photo.delete();
      }

      try {
        FileOutputStream fos=new FileOutputStream(photo.getPath());

        fos.write(jpeg[0]);
        fos.close();
      }
      catch (java.io. IOException e) {
        Log.e("PictureDemo", "Exception in photoCallback", e);
      }

      return(null);
    }
  }
}

and the xml file is
<? xml version="1.0" encoding="utf-8"? >
<FrameLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">

  <android.view. SurfaceView
  android:id="@+id/surface"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  />

  <ImageView
  android:id="@+id/image"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:scaleType="matrix"
  android:layout_centerInParent="true"
  />

  <Button
  android:id="@+id/save"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:text="save"
  android:layout_alignParentRight="true"
  />

</FrameLayout>

I can capture an image with this code but i need to add the image which was given to the ImageView to the captured image. 
How to do that. 
Thanks in advance. 

A:

Trying doing something like this:
Bitmap bitmap = new Bitmap(define the size and other params you like). 
Canvas canvas = new Canvas();
canvas.drawBitmap(your captured image);
canvas.drawBitmap(the overlay image);

// Now the bitmap will include both captured imaged and overlayed image

You can look in here and here

