package org.cn.gv; import org.cn.bean.MyPictureCallback; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.graphics.PixelFormat; import android.hardware.Camera; import android.hardware.Camera.Parameters; import android.os.Bundle; import android.view.SurfaceHolder; import android.view.SurfaceView; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup.LayoutParams; import android.widget.Button; public class TakePictureActivity extends Activity { private SurfaceView sv; private SurfaceHolder holder; private Camera camera; private Button btn0; private boolean isOn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.camera); isOn = false; sv = (SurfaceView)findViewById(R.id.surfaceview4cam); holder = sv.getHolder(); holder.setFixedSize(240, 320); holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); holder.addCallback(new MyAddCallback()); btn0 = (Button)findViewById(R.id.btn_cature); btn0.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { camera.autoFocus(null); camera.takePicture(null, null,new MyPictureCallback()); } }); } private class MyAddCallback implements SurfaceHolder.Callback{ @Override public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { } @Override public void surfaceCreated(SurfaceHolder holder) { try { camera = Camera.open(); Parameters parameters = camera.getParameters(); parameters.setPictureSize(768, 1024); parameters.setPictureFormat(PixelFormat.JPEG); //LayoutParams lp = getWindow().getAttributes(); //parameters.setPreviewSize(lp.width, lp.height); parameters.set("jpeg-quality",85); //parameters.set("orientation", "portrait"); //camera.setParameters(parameters); camera.setPreviewDisplay(holder); camera.startPreview(); isOn = true; } catch (Exception e) { e.printStackTrace(); } } @Override public void surfaceDestroyed(SurfaceHolder holder) { if (camera!=null) { if (isOn) { camera.stopPreview(); Intent itnt = new Intent(TakePictureActivity.this,SelectPicActivity.class); startActivity(itnt); } camera.release(); } } } }