Android Camera 实例

来源:互联网 发布:小米平板2windows 编辑:程序博客网 时间:2024/06/03 06:17
Android Camera 实例
2010-07-04 12:24
注:使用摄像头等媒体设备时必须连上存储卡
<uses-permission android:name="android.permission.CAMERA" />
CamMain.java:public class CamMain extends Activity implements SurfaceHolder.Callback {
//在SurfaceView上绘制应该实现SurfaceHolder.Callback接口private SurfaceHolder holder=null;private SurfaceView surface=null;private Button bt=null;private Camera cam=null;private ShutterCallback sc=new ShutterCallback(){         @Override         public void onShutter() {          // 按下快门后的回调函数         }};  private PictureCallback pc=new PictureCallback(){         @Override         public void onPictureTaken(byte[] arg0, Camera arg1) {          // 源数据         }};  private PictureCallback jpgcall=new PictureCallback(){         @Override         public void onPictureTaken(byte[] b, Camera c) {          // TODO Auto-generated method stub          try{           Bitmap bmp=BitmapFactory.decodeByteArray(b, 0, b.length);           File f=new File("/mnt/sdcard/photo.jpg");           BufferedOutputStream bos=new BufferedOutputStream(             new FileOutputStream(f));           bmp.compress(Bitmap.CompressFormat.JPEG, 80, bos);           bos.flush();           bos.close();          }catch(Exception e){          }         }};
          /** Called when the activity is first created. */          @Override          public void onCreate(Bundle savedInstanceState) {              super.onCreate(savedInstanceState);              setContentView(R.layout.main);              bt=(Button)findViewById(R.id.bt);              bt.setOnClickListener(new OnClickListener(){
          @Override          public void onClick(View v) {           // TODO Auto-generated method stub           if(cam!=null){            cam.takePicture(sc, pc, jpgcall);            cam.stopPreview();           }          }});
              surface=(SurfaceView)findViewById(R.id.sv);              holder=surface.getHolder();//设置Holder              holder.addCallback(this);              holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);          }
@Overridepublic void surfaceChanged(SurfaceHolder holder, int format, int width,         int height) {        // TODO Auto-generated method stub        try{         Parameters p=cam.getParameters();         p.setPictureSize(width, height);         cam.setParameters(p);         cam.setPreviewDisplay(holder);         cam.startPreview();        }catch(Exception e){        }}
@Overridepublic void surfaceCreated(SurfaceHolder holder) {        // TODO Auto-generated method stub        cam=Camera.open();}
@Overridepublic void surfaceDestroyed(SurfaceHolder holder) {        // TODO Auto-generated method stub  }}
main.xml:<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"       android:layout_width="fill_parent"       android:layout_height="fill_parent"       ><SurfaceView        android:id="@+id/sv"       android:layout_width="fill_parent"        android:layout_height="fill_parent"        /><Buttonandroid:id="@+id/bt"android:text="DONE"android:layout_alignParentTop="true"android:layout_alignParentRight="true"android:layout_width="wrap_content"android:layout_height="wrap_content"/></RelativeLayout>

原创粉丝点击