照相机

来源:互联网 发布:淘宝烽火体育sneaker 编辑:程序博客网 时间:2024/04/20 02:20
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical" android:layout_width="match_parent"    android:layout_height="match_parent">    <SurfaceView        android:layout_width="match_parent"        android:layout_height="match_parent"        android:id="@+id/sv_camera_surface"        />    <Button        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="拍照"        android:onClick="takePhoto"        />

</LinearLayout>

import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.PixelFormat;import android.hardware.Camera;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v7.app.AppCompatActivity;import android.view.SurfaceHolder;import android.view.SurfaceView;import android.view.View;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.util.Calendar;/** * Created by Administrator on 2017/7/21 0021. */public class CameraActivity extends AppCompatActivity {    private Camera camera;    private SurfaceView sv_camera_surface;    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.camera);        sv_camera_surface = (SurfaceView) findViewById(R.id.sv_camera_surface);        sv_camera_surface.getHolder().addCallback(new SurfaceHolder.Callback() {            @Override            public void surfaceCreated(SurfaceHolder holder) {                //打开摄像头                camera = Camera.open();                //设置摄像参数                Camera.Parameters parameters = camera.getParameters();                parameters.setPictureFormat(PixelFormat.JPEG);                parameters.set("jpeg-quality", 100);                camera.setParameters(parameters);                //开启预览效果                camera.startPreview();                try {                    camera.setPreviewDisplay(sv_camera_surface.getHolder());                } catch (IOException e) {                    e.printStackTrace();                }            }            @Override            public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {            }            @Override            public void surfaceDestroyed(SurfaceHolder holder) {            }        });    }    public void takePhoto(View view) {        camera.takePicture(null, null, new Camera.PictureCallback() {            @Override            public void onPictureTaken(byte[] data, Camera camera) {                Bitmap bitmap= BitmapFactory.decodeByteArray(data,0,data.length);                //时间戳                Calendar calendar=Calendar.getInstance();                int year=calendar.get(Calendar.YEAR);                int month=calendar.get(Calendar.MONTH);                int day=calendar.get(Calendar.DAY_OF_MONTH);                try {                    FileOutputStream fos=new FileOutputStream("/mnt/sdcard/dcim/camera/G160628_"+year+(month+1)+day+"_"+System.currentTimeMillis()+".jpg");                    //压缩                    bitmap.compress(Bitmap.CompressFormat.JPEG,80,fos);                    camera.stopPreview();                    camera.startPreview();                } catch (FileNotFoundException e) {                    e.printStackTrace();                }            }        });    }}