wang_peng1 发表于 2013-1-15 02:23:20

camera preview覆盖图片

摘自:http://groups.google.com/group/android-developers/browse_thread/thread/0d8587b4b2139a85/6e1f453ac051f6bd?#6e1f453ac051f6bd
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();   } }  
页: [1]
查看完整版本: camera preview覆盖图片