Camera(一)使用SurfaceView和Camera类实现拍照

来源:互联网 发布:航信数据维护 编辑:程序博客网 时间:2024/06/04 13:07
 
SecondActivity>java
package com.example.administrator.myapplication;import android.app.Activity;import android.content.Intent;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.widget.Toast;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;/** * Created by Administrator on 2015/9/21. */public class SecondActivity extends Activity {    private SurfaceView surfaceview;    private Camera camera;    private SurfaceHolder.Callback cameraPreviewCallBack = new SurfaceHolder.Callback() {        @Override        public void surfaceCreated(SurfaceHolder holder) {            startPreview();        }        @Override        public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {        }        @Override        public void surfaceDestroyed(SurfaceHolder holder) {            stopPreview();        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        requestWindowFeature(Window.FEATURE_NO_TITLE);        setContentView(R.layout.activity_main);        surfaceview = (SurfaceView) findViewById(R.id.camera_surfaceview);        surfaceview.getHolder().addCallback(cameraPreviewCallBack);        findViewById(R.id.btnTakePicture).setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                camera.takePicture(null, null, new Camera.PictureCallback() {                    @Override                    public void onPictureTaken(byte[] data, Camera camera) {                        String path = null;                        if ((path = savaTempFile(data)) != null) {                            Intent intent = new Intent(SecondActivity.this, ImageViewActivity.class);                            intent.putExtra("path", path);                            startActivity(intent);                        } else {                            Toast.makeText(SecondActivity.this, "没有保存照片", Toast.LENGTH_SHORT).show();                        }                    }                });            }        });    }    private String savaTempFile(byte[] bytes) {//保存临时文件        try {            File f = File.createTempFile("img", "");//创建临时文件            FileOutputStream fos = new FileOutputStream(f);            fos.write(bytes);            fos.flush();            fos.close();            return f.getAbsolutePath();        } catch (IOException e) {            e.printStackTrace();        }        return null;    }    private void startPreview() {        camera = Camera.open();        try {            camera.setPreviewDisplay(surfaceview.getHolder());            camera.setDisplayOrientation(90);            camera.startPreview();        } catch (IOException e) {            e.printStackTrace();        }    }    private void stopPreview() {        camera.stopPreview();        camera.release();    }}
ImageViewActivity.Java
package com.example.administrator.myapplication;import android.app.Activity;import android.net.Uri;import android.os.Bundle;import android.widget.ImageView;import java.io.File;/** * Created by Administrator on 2015/9/21. */public class ImageViewActivity extends Activity {    private ImageView imageView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        imageView = new ImageView(this);        setContentView(imageView);        String path = getIntent().getStringExtra("path");        if (path != null) {            imageView.setImageURI(Uri.fromFile(new File(path)));        }    }}
0 0
原创粉丝点击