扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
Android应用中拍照和录制视频都需要Surface,所以需要创建在Activiy中存在SurfaceView或者VideoView,可以在xml中配置,在代码中加载。同时主Activity中需要implements SurfaceHolder.Callback,实现其中的surfaceCreate, surfaceChanged, surfaceDestoryed三个方法。具体流程如下
创新互联-专业网站定制、快速模板网站建设、高性价比沈阳网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式沈阳网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖沈阳地区。费用合理售后完善,十年实体公司更值得信赖。
First:
SurfaceView mSurfaceView = (SurfaceView)findViewById(R.id.surfaceview);
SurfaceHolder mHolder = mSurfaceView.getHolder();
mHolder.addCallback(this);
当调用addCallback的时候,就会触发SurfaceHolder.Callback回调,执行surfaceCreate方法,可以在surfaceCreate中做一些初始化。
Second:
打开摄像头,进行初始化。如:
Camera mCamera = Camera.open();
mCamera.setPreviewDisplay(mHolder);
当surfaceview被覆盖或者应用结束退出时,surface会destory,执行surfaceDestoryed回调,可以在该回调中释放Camera,如:
mCamera.stopPrevew();
mCamera.release();
mCamera = null;
Thrid:
进行拍照时,调用takePicture接口,传入callback参数,并在最后一个callback中获取byte[] data,并将数据以jpg文件格式保存,如下所示:
mCamera.takePicture(new ShutterCallback(){}, new PictureCallback(){},new PictureCallback(){}, new PictureCallback(){public void onPictureTaken(byte[] data, Camera camera) {save(data)} });
在save方法中通过流输出到指定路径:
File mediaStoragePath = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "PicFiles");
String fileName = mediaStoragePath.getPath() + File.sperator + "PIC_" + System.currentTimeMills() + ".jpg";
File pictureFile = new File(fileName);
FileOutputStream fos = new FileOutputStream(picture);
fos.write(data);
fos.close();
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流