拍照加东西 在camera preview加东西

import android.app.Activity;
 
import android.content.Context;
 
import android.graphics.Canvas;
 
import android.graphics.Color;
 
import android.graphics.Paint;
 
import android.hardware.Camera;
 
import android.os.Bundle;
 
import android.view.SurfaceHolder;
 
import android.view.SurfaceView;
 
import android.view.View;
 
import android.view.Window;
 
import android.view.ViewGroup.LayoutParams;
 
 
 
public class TestCameraOverlay extends Activity {
 
    /** Called when the activity is first created. */
 
    @Override
 
    public void onCreate(Bundle savedInstanceState) {
 
        super.onCreate(savedInstanceState);
 
       
 
 
 
        requestWindowFeature(Window.FEATURE_NO_TITLE);
 
 
 
        Preview mPreview = new Preview(this);
 
        DrawOnTop mDraw = new DrawOnTop(this);
 
   
 
        setContentView(mPreview);
 
        addContentView(mDraw, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
 
       
 
    }
 
}
 
 
 
class DrawOnTop extends View {
 
 
 
        public DrawOnTop(Context context) {
 
                super(context);
 
                // TODO Auto-generated constructor stub
 
        }
 
 
 
        @Override
 
        protected void onDraw(Canvas canvas) {
 
                // TODO Auto-generated method stub
 
               
 
                Paint paint = new Paint();
 
                paint.setStyle(Paint.Style.FILL);
 
                paint.setColor(Color.BLACK);
 
                canvas.drawText("Test Text", 10, 10, paint);
 
               
 
                super.onDraw(canvas);
 
        }
 
       
 
}
 
 
 
//----------------------------------------------------------------------
 
 
 
class Preview extends SurfaceView implements SurfaceHolder.Callback {
 
    SurfaceHolder mHolder;
 
    Camera mCamera;
 
   
 
    Preview(Context context) {
 
        super(context);
 
       
 
        // Install a SurfaceHolder.Callback so we get notified when the
 
        // underlying surface is created and destroyed.
 
        mHolder = getHolder();
 
        mHolder.addCallback(this);
 
        mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
 
    }
 
 
 
    public void surfaceCreated(SurfaceHolder holder) {
 
        // The Surface has been created, acquire the camera and tell it where
 
        // to draw.
 
        mCamera = Camera.open();
 
        mCamera.setPreviewDisplay(holder);
 
    }
 
 
 
    public void surfaceDestroyed(SurfaceHolder holder) {
 
        // Surface will be destroyed when we return, so stop the preview.
 
        // Because the CameraDevice object is not a shared resource, it's very
 
        // important to release it when the activity is paused.
 
        mCamera.stopPreview();
 
        mCamera = null;
 
    }
 
 
 
    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
 
        // Now that the size is known, set up the camera parameters and begin
 
        // the preview.
 
        Camera.Parameters parameters = mCamera.getParameters();
 
        parameters.setPreviewSize(w, h);
 
        mCamera.setParameters(parameters);
 
        mCamera.startPreview();
 
    }
 
 
 
}