文章标题

来源:互联网 发布:知乎 圣诞 编辑:程序博客网 时间:2024/06/09 18:30

这是我个人写的一些小技术`这里写图片描述

public class CameraActivity extends AppCompatActivity {

private SurfaceView sv_camera_surfaceview;private Camera camera;@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_camera);    sv_camera_surfaceview = (SurfaceView) findViewById(R.id.sv_camera_surfaceview);    sv_camera_surfaceview.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);            //将照相机捕捉的画面展示到SurfaceView            try {                camera.setPreviewDisplay(sv_camera_surfaceview.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) {            //关闭        }    });}public void takePhoto(View view){    //拍照    camera.takePicture(null, null, new Camera.PictureCallback() {        @Override        public void onPictureTaken(byte[] bytes, Camera camera) {            //将字节数组转成图片            //实例化输出流对象,将bytes写入即可            //压缩            //将字节数组转成图片            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.PNG,85,fos);                camera.stopPreview();                camera.startPreview();            } catch (FileNotFoundException e) {                e.printStackTrace();            }        }    });}

}
这里写图片描述
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_media_recorder);
sv_media_recoder_surface = (SurfaceView) findViewById(R.id.sv_media_recoder_surface);

    //实例化媒体录制器    mediaRecorder = new MediaRecorder();}public void start(View view){    mediaRecorder.reset();    //设置视频和音频的来源    mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);    mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);    //设置保存的格式    mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);    //设置编码格式    mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263);    mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);    mediaRecorder.setVideoFrameRate(3);    //设置保存的路径    mediaRecorder.setOutputFile("mnt/sdcard/G150825_"+System.currentTimeMillis()+".mp4");    //将画面展示到SurfaceView    mediaRecorder.setPreviewDisplay(sv_media_recoder_surface.getHolder().getSurface());    //准备    try {        mediaRecorder.prepare();        mediaRecorder.start();    } catch (IOException e) {        e.printStackTrace();    }}public void stop(View view){    mediaRecorder.stop();}

}

0 0