简单的拍照dome

刚学习了了个简单的拍照的dome,跟大家分享下,步骤如下

(1)获取id

main_sv = (SurfaceView) findViewById(R.id.main_sv);

(2)SurfaceView接受摄像头界面变化的信息

main_sv.getHolder().addCallback(new SurfaceHolder.Callback() {
    @Override
    public void surfaceCreated(SurfaceHolder surfaceHolder) {
        camera = Camera.open();

        Camera.Parameters parameters=camera.getParameters();
        //设置保存的格式
        parameters.setPictureFormat(PixelFormat.JPEG);
        //设置质量
        parameters.set("jpeg-quality",85);
        //给相机设置参数
        camera.setParameters(parameters);
        //展示到sv
        try {
            camera.setPreviewDisplay(main_sv.getHolder());
            camera.startPreview();
        } catch (IOException e) {
            e.printStackTrace();
        }

    }

    @Override
    public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i1, int i2) {

    }

    @Override
    public void surfaceDestroyed(SurfaceHolder surfaceHolder) {

    }
});

(2)写方法

camera.takePicture(null, null, new Camera.PictureCallback() {
    @Override
    public void onPictureTaken(byte[] bytes, Camera camera) {
        //
       Bitmap bitmap=BitmapFactory.decodeByteArray(bytes,0,bytes.length);
        try {
            FileOutputStream fos=new FileOutputStream("/mnt/sdcard/DCIM/camera/G150825_"+System.currentTimeMillis()+".png");
            bitmap.compress(Bitmap.CompressFormat.JPEG,85,fos);
            camera.stopPreview();
            camera.startPreview();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
    }
});
(注意权限)
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

猜你喜欢

转载自blog.csdn.net/qq_37612068/article/details/56713204