- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
android摄像头获取图像
android摄像头获取图像——第二弹
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?使用android内的Camera对象(1)Camera是控制着摄像头的api,拥有一系列控制摄像头的上层方法;camera类能够调用底层的摄像头接口,完成启动摄像头、预览摄像头图像、拍照等功能;(2)功能首先,可以在主activity中通过sufaceView接收camera的图像,并开启camera的startpreview方法,达到图像显示的目的;如果不想在主activity中预览,只想得到图像或使用其他方式在activity中显示,可以通过重写callback函数,通过其中传入的?数据,生成相应的图像并返回Bitmap格式(具体的调用方法将在下文提到)然后,可以调用takePicture函数,进行拍照处理;使用autofocus方法可以先自动对焦再进行拍照;最后,可以捕获相关的视频,本文主要讲解如何捕获图像,详细内容还是看头部连接,^_^ ;
(3)一般调用步骤·检测并访问摄像头 —— 创建代码以检查摄像头存在与否并请求访问。·创建预览类 —— 创建继承自SurfaceView 并实现SurfaceHolder 接口的摄像预览类。此类能预览摄像的实时图像。·建立预览布局Preview Layout —— 一旦有了摄像预览类,即可创建一个view layout,用于把预览画面与设计好的用户界面控?件融合在一起。·为捕获设置侦听器Listener —— 将用户界面控件连接到listener,使其能响应用户操作开始捕获图像或视频,比如按下按钮?。·捕获并保存文件 —— 建立捕获图片或视频并保存到输出文件的代码。·释放摄像头 —— 摄像头使用完毕后,应用程序必须正确地将其释放,便于其它程序的使用。
(4)主要类型与方法介绍——surfaceView:SurfaceView为一个显示面板,可以用于显示图像;相当于mvc中view;——SurfaceHolder:控制surface中的图像显示;相当于mvc模式中的的control;——用户可以通过surfaceView的getHolder()方法得到该surfaceView的控制器对象:SurfaceHolder;并调用SurfaceHolder的?addCallback方法加入用户重写的继承自SurfaceHolder.Callback接口的对象:
mSurfaceView = (SurfaceView) findViewById(R.id.mSurfaceView);
holder = mSurfaceView.getHolder();
holder.addCallback(EX07_16);//
——SurfaceHolder.Callback接口的主要方法有:public void surfaceCreated(SurfaceHolder surfaceholder)//在surfaceView创建时调用其他两个方法分别为改动和销毁时调用。——将SurfaceHolder加入camera中,以便预览时调用该对象显示图像:mCamera.setPreviewDisplay(holder);误区:开始时觉得cam必须加入surfaceView的功能才能实现预览,但是后来的测试证明不需要加入surfaceView,即可实现camera?的预览功能,只是图片不会显示。(这是理所应当的,因为camera有没有获得图像与是否有显示图像的面板没有任何关系;这证?明了androidAPI还是比较开放的)
——Camera类的open()/opent(int i)方法用于打开摄像机——Camera类中的一些处理都是通过callback来进行的:/* 自动对焦后拍照 */mCamera.autoFocus(mAutoFocusCallback);其中mAutoFocusCallback继承自Camera.AutoFocusCallback接口,用户可以自定义的是对焦完成后的操作(比如延迟拍照等);同样这里面preview和takepicture操作都需要放入callback进行用户自定义操作。——mCamera.takePicture(shutterCallback, rawCallback, jpegCallback);在takePicture方法里输入几个callback方法,实现?用户的自定义操作。——mCamera.setPreviewCallback(pre);设置相机的预览回调函数,每当相机获取一幅图像的时候,都会调用这个对象的函数(这是最为重要的一个方法)
(5)实
文档评论(0)