1.拍照实现步骤:
<1>界面使用SurfaceView控件,显示照相机的画面
<2>SurfaceView接受摄像头界面变化的信息
surfaceView.getHolder().addCallback()
<3>重写三个方法
surfaceDestroyed--->当预览界面关闭时,触发
一般在这里执行销毁照相机的操作,释放内存
camera.stopPreview();
camera.release();
camera = null;
surfaceCreated----->预览界面被创建时,调用
一般在这里打开照相机和设置照相机的一些参数
// 打开摄像头
camera = Camera.open();
// 给摄像头设置参数
Parameters parameters = camera.getParameters();
// 设置每秒3栈
parameters.setPreviewFrameRate(3);
// 设置照片的输出格式
parameters.setPictureFormat(PixelFormat.JPEG);
// 设置照片的质量
parameters.set("jpeg-quality", 85);
// 给照相机设置参数
camera.setParameters(parameters);
//将摄像头的画面显示到SurfaceView控件上
camera.setPreviewDisplay(sv_main_camera.getHolder());
// 开始预览
camera.startPreview();
surfaceChanged----->当预览界面的格式和大小发生改变时,触发
<4>保存
camera.takePicture
将照片保存到内存卡(压缩)
2.视频录制
实现步骤:
<1>将视频动画显示到SurfaceView控件上
<2>使用MediaRecorder类进行视频的录制
常用的方法:
mediaRecorder.reset();
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); //从照相机采集视频
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mediaRecorder.setVideoFrameRate(3); //每秒3帧
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263); //设置视频编码方式
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
File videoFile = new File(Environment.getExternalStorageDirectory(), System.currentTimeMillis()+".3gp");
mediaRecorder.setOutputFile(videoFile.getAbsolutePath());
mediaRecorder.setPreviewDisplay(surfaceView.getHolder().getSurface());
mediaRecorder.prepare();//预期准备
mediaRecorder.start();//开始刻录
mediaRecorder.stop();//停止刻录
注意:权限
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<1>界面使用SurfaceView控件,显示照相机的画面
<2>SurfaceView接受摄像头界面变化的信息
surfaceView.getHolder().addCallback()
<3>重写三个方法
surfaceDestroyed--->当预览界面关闭时,触发
一般在这里执行销毁照相机的操作,释放内存
camera.stopPreview();
camera.release();
camera = null;
surfaceCreated----->预览界面被创建时,调用
一般在这里打开照相机和设置照相机的一些参数
// 打开摄像头
camera = Camera.open();
// 给摄像头设置参数
Parameters parameters = camera.getParameters();
// 设置每秒3栈
parameters.setPreviewFrameRate(3);
// 设置照片的输出格式
parameters.setPictureFormat(PixelFormat.JPEG);
// 设置照片的质量
parameters.set("jpeg-quality", 85);
// 给照相机设置参数
camera.setParameters(parameters);
//将摄像头的画面显示到SurfaceView控件上
camera.setPreviewDisplay(sv_main_camera.getHolder());
// 开始预览
camera.startPreview();
surfaceChanged----->当预览界面的格式和大小发生改变时,触发
<4>保存
camera.takePicture
将照片保存到内存卡(压缩)
2.视频录制
实现步骤:
<1>将视频动画显示到SurfaceView控件上
<2>使用MediaRecorder类进行视频的录制
常用的方法:
mediaRecorder.reset();
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); //从照相机采集视频
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mediaRecorder.setVideoFrameRate(3); //每秒3帧
mediaRecorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263); //设置视频编码方式
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
File videoFile = new File(Environment.getExternalStorageDirectory(), System.currentTimeMillis()+".3gp");
mediaRecorder.setOutputFile(videoFile.getAbsolutePath());
mediaRecorder.setPreviewDisplay(surfaceView.getHolder().getSurface());
mediaRecorder.prepare();//预期准备
mediaRecorder.start();//开始刻录
mediaRecorder.stop();//停止刻录
注意:权限
<uses-permission android:name="android.permission.RECORD_AUDIO"/>