最近项目需要用到很多的摄像头,比如自己写一个照相机、人脸识别、图片识别等等。都要使用摄像头,变态的还有,截取视频流的某一帧。
好了,主题了吧。这里只有android.hardware.Camera包下的笔记和android.view.surfaceView的笔记。
新手看一下,大神绕道!
一、先总体的记一下
我们使用android的拍照等功能,本来是可以调用系统自带的,一般都是隐式的Intent实现的。但是,老板的诸多要求,系统自带操作不方便,于是我们就被逼着上了梁山,使用surfaceView自己画一个。
首先,我们需要记住就是摄像头的预览需要载体,那么这个载体是什么?android提供的载体就是surfaceView。
在这里,我简单的讲一下surfaceView,它是专门用来绘制的,用来呈现常规控件无法呈现内容的或者需要加入很多的个人色彩的东西的时候。
使用它和使用Button基本一样的,布局文件加一个,声明ID。但是,它和Button的区别在于,我们需要为它设置一个回调android.view.SurfaceHolder.Callback。
记住,这是一个接口(interface),里面有三个方法,需要实现。执行的顺序是:surfaceCreated()--->surfaceChanged()----->surfaceDestoryed()。
如果英语可以的人,一看就是知道是什么意思。具体的代码这样实现的:
//声明
private SurfaceView surfaceview;
private SurfaceHolder surfaceholder;
//初始化
surfaceview = (SurfaceView) findViewById(R.id.mSurfaceView);
surfaceholder = surfaceview.getHolder();
surfaceholder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
surfaceholder.addCallback(MainActivity.this);
注意:最后一句话就是用来添加回调的。
二、应该