Camera介绍(高级).pdf

上传人:韩长文 文档编号:3329703 上传时间:2019-08-13 格式:PDF 页数:30 大小:2.74MB
返回 下载 相关 举报
Camera介绍(高级).pdf_第1页
第1页 / 共30页
Camera介绍(高级).pdf_第2页
第2页 / 共30页
Camera介绍(高级).pdf_第3页
第3页 / 共30页
Camera介绍(高级).pdf_第4页
第4页 / 共30页
Camera介绍(高级).pdf_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《Camera介绍(高级).pdf》由会员分享,可在线阅读,更多相关《Camera介绍(高级).pdf(30页珍藏版)》请在三一文库上搜索。

1、CameraCamera介绍介绍 Android平台手机应用开发技术培训 高级.第4讲 学习目标: 目标学员: 课程时长:45分钟 有Android中级水平的开发者或在校 计算机相关专业大学生 掌握在Android中使用摄像头进行预览图 像的方法 掌握在Android中使用摄像头拍摄的方法 软件功能分析软件功能分析 Camera简介 Camera的使用 项目演练 课程目录课程目录 软件功能分析 首先将实现一个Camera预览功能。 手指点击预览屏幕,即可开始自动对焦。 自动对焦完成之后会进行拍照,并将拍 摄结果展示出来。 软件功能分析 CameraCamera简介简介 Camera的使用 项目

2、演练 课程目录课程目录 Camera概述 目前,摄像头基本已经成为手机的标准配置。智能手机更是如此。目前上市 的Android手机毫不例外的都带有摄像头。 Android系统在android.hardware包中有一个Camera类,可以用来操作摄像 头。下面将对Camera及其内部类或接口做一个整体的概述: android.hardware.Camera类 用来控制摄像头设备,它可以设置摄像头的各种属性,控制图像预览或拍照。 android.hardware.Camera.Parameters类 用于控制Camera的各种属性。 android.hardware.Camera.Size类 用

3、于控制Camera的尺寸规格。 Camera概述 android.hardware.Camera.AutoFocusCallback接口 Camera自动对焦的回调接口 android.hardware.Camera.Camera.ErrorCallback接口 Camera出错时的回调接口 android.hardware.Camera.PictureCallback接口 Camera拍摄快照时的回调接口 android.hardware.Camera.PreviewCallback接口 Camera预览时的回调接口 android.hardware.Camera. ShutterCallb

4、ack接口 Camera拍摄结束,快门关闭时的回调接口 Camera类介绍 创建Camera,必须使用静态方法Camera.open() 锁定Camera,防止其它进程访问Camera服务 解除锁定 释放Camera,断开Camera服务并且释放资源 Camera camera = Camera.open(); camera.lock(); camera.unlock(); camera.release(); Camera类介绍 自动对焦(可能会持续几秒钟) 取消自动对焦 开始预览 结束预览 void autoFocus(Camera.AutoFocusCallback cb); void c

5、ancelAutoFocus(); void startPreview(); void stopPreview(); Camera类介绍 设置预览显示控件(只能使用SurfaceView) 拍摄快照 shutter,代表快门回调接口。 raw,该快照回调返回未加工的图像数据(argb数组)。 postview,该快照回调返回高质量图像。 jpeg,该快照回调返回一个jpeg图像格式的数据。 void takePicture(Camera.ShutterCallback shutter, Camera.PictureCallback raw, Camera.PictureCallback pos

6、tview, Camera.PictureCallback jpeg) void setPreviewDisplay(SurfaceHolder holder) Camera.Parameters参数含义 ANTIBANDING,反Banding噪声(明暗条纹) EFFECT,彩色效果 ANTIBANDING_50HZ ANTIBANDING_60HZ ANTIBANDING_AUTO ANTIBANDING_OFF EFFECT_AQUA(浅绿) EFFECT_BLACKBOARD(黑板) EFFECT_MONO(单色) EFFECT_NEGATIVE(底片) EFFECT_NONE(无)

7、EFFECT_POSTERIZE(色调分离) EFFECT_SEPIA(褐色) EFFECT_SOLARIZE(过度曝光) EFFECT_WHITEBOARD(白板) Camera.Parameters参数含义 FLASH ,闪光模式 FOCUS,焦点模式 FLASH_MODE_AUTO(自动) FLASH_MODE_OFF(关闭闪光) FLASH_MODE_ON(开启闪光) FLASH_MODE_RED_EYE(红眼) FLASH_MODE_TORCH(强光) FOCUS_MODE_AUTO(自动) FOCUS_MODE_FIXED(修正) FOCUS_MODE_INFINITY(无限远)

8、FOCUS_MODE_MACRO(微距) Camera.Parameters参数含义 SCENE ,场景模式 SCENE_MODE_ACTION(行动) SCENE_MODE_AUTO(自动) SCENE_MODE_BEACH(沙滩) SCENE_MODE_NIGHT(夜间) SCENE_MODE_PARTY(聚会) SCENE_MODE_SNOW(雪景) SCENE_MODE_SPORTS(运动) SCENE_MODE_SUNSET(日光) SCENE_MODE_STEADYPHOTO(静态) SCENE_MODE_CANDLELIGHT(微光) SCENE_MODE_FIREWORKS(烟

9、火) SCENE_MODE_LANDSCAPE(风景画) SCENE_MODE_PORTRAIT(人像) SCENE_MODE_NIGHT_PORTRAIT(夜间人像) SCENE_MODE_THEATRE(剧场) Camera.Parameters参数含义 WHITE_BALANCE ,白平衡 WHITE_BALANCE_AUTO(自动) WHITE_BALANCE_CLOUDY_DAYLIGHT(日间多云) WHITE_BALANCE_DAYLIGHT(日光) WHITE_BALANCE_FLUORESCENT(荧光) WHITE_BALANCE_INCANDESCENT(强光) WHIT

10、E_BALANCE_SHADE(阴天) WHITE_BALANCE_TWILIGHT(微光) WHITE_BALANCE_WARM_FLUORESCENT(暖光) Camera回调介绍 Camera.AutoFocusCallback,自动对焦回调 当调用camera.autoFocus方法时,会向Camera服务发起自动对焦请求,然 后Camera服务开始执行请求。 当请求执行完毕时,Camera服务会回调onAutoFocus方法,返回成功标志, 以及发起请求的Camera实例。 Camera.ErrorCallback,Camera错误回调 这个回调用于监听Camera服务的错误状态。例

11、如: 当返回错误码为CAMERA_ERROR_SERVER_DIED时,应用必须释放当前 的Camera,并且重新获取一个新的实例。 onAutoFocus(boolean success, Camera camera) onError(int error, Camera camera) Camera回调介绍 Camera.PictureCallback ,拍摄回调 当调用camera.takePicture方法时,会向Camera服务发起拍摄请求, Camera服务完成拍摄后,则通过onPictureTaken方法返回图片数据。 Camera.PreviewCallback,预览回调 当调用

12、camera.startPreview方法后,Camera服务会开启预览,同时不停的将 预览的帧(frame)数据,通过onPreviewFrame方法返还回来。 此回调由于其执行频率高,所以不适合在回调方法中做耗时的工作。 onPictureTaken(byte data, Camera camera) onPreviewFrame(byte data, Camera camera) Camera回调介绍 Camera.ShutterCallback ,快门回调 这个回调发生在快门关闭后,Camera服务返回拍摄结果之前。 可以利用此方法播放拍摄快门关闭的声音,以提示用户拍摄完毕。 onSh

13、utter() 软件功能分析 Camera简介 CameraCamera的使用的使用 项目演练 课程目录课程目录 声明权限和特征 在AndroidManifest.xml中声明许可权限 在AndroidManifest.xml中声明特征 Camera使用步骤 分别实现Camera的回调接口并重写其回调方法。 创建一个SurfaceView,用于显示预览。 首先继承SurfaceView类,然后继承SurfaceHolder.Callback接口并重写其 surfaceCreated(创建), surfaceDestroyed(销毁), surfaceChanged (屏幕尺寸改变)等方法。这样

14、就可以得到一个自定义的SurfaceView了。 创建并设置Camera,使用Camera.setPreviewDisplay把刚才定义的 SurfaceView设置为Camera的预览显示控件。 使用Camera.startPreview启动预览,然后就可以使用Camera类的功能进行 自动对焦,拍摄等功能了。 结束时别忘了释放Camera的资源。 软件功能分析 Camera简介 Camera的使用 项目演练项目演练 课程目录课程目录 项目演练 在AndroidManifest.xml中声明权限和特征 创建Preview类使其继承SurfaceView并实现一系列回调接口 public cl

15、ass Preview extends SurfaceView implements SurfaceHolder.Callback,Camera.AutoFocusCallback, Camera.ShutterCallback,Camera.PictureCallback, Camera.PreviewCallback, Camera.ErrorCallback 项目演练 重写SurfaceHolder.Callback的surfaceCreated方法 重写SurfaceHolder.Callback的surfaceDestroyed方法 public void surfaceCreate

16、d(SurfaceHolder holder) mCamera = Camera.open(); mCamera.setPreviewCallback(this); mCamera.setPreviewDisplay(holder); public void surfaceDestroyed(SurfaceHolder holder) mCamera.cancelAutoFocus(); mCamera.setPreviewCallback(null); mCamera.stopPreview(); mCamera.release(); 项目演练 重写SurfaceHolder.Callbac

17、k的surfaceChanged方法 public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) Camera.Parameters param = mCamera.getParameters(); param.setPreviewSize(w, h); mCamera.setParameters(param); mCamera.startPreview(); 项目演练 重写onTouchEvent函数,当点击屏幕时,调用自动对焦功能。 处理自动对焦回调事件onAutoFocus,不论成功失败,调用拍摄功

18、能 public boolean onTouchEvent(MotionEvent event) if (event.getAction() = MotionEvent.ACTION_DOWN) mCamera.autoFocus(this); return true; return false; public void onAutoFocus(boolean success, Camera camera) mCamera.takePicture(Preview.this, null, this); 项目演练 处理拍摄回调事件onPictureTaken,将返回的数据传递给ImageActiv

19、ity ImageActivity的关键代码 public void onPictureTaken(byte data, Camera camera) Intent intent = new Intent(context, ImageActivity.class); intent.putExtra(“imageData“, data); context.startActivity(intent); byte imageData = getIntent().getExtras().getByteArray(“imageData“); Bitmap image = BitmapFactory.de

20、codeByteArray( imageData, 0, imageData.length); ImageView imageView = new ImageView(this); imageView.setImageBitmap(image); 项目演练 拍摄结束的回调 预览回调 Camera错误回调 public void onShutter() System.out.println(“onShutter“); public void onPreviewFrame(byte data, Camera camera) System.out.println(“onPreviewFrame“); public void onError(int error, Camera camera) System.out.println(“onError“ + error); 项目演练 模拟器的预览效果如图,此时点击屏幕 将会开始自动对焦。 自动对焦过程很短暂(可以看到倾斜的 方格)。完成对焦后,会开始拍摄。 拍摄完成后,自动展示拍摄结果。 总结 如何使用摄像头进行预览 如何操作摄像头进行自动对焦及拍摄 本课程到此结束,谢谢!

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/环境 > 装饰装潢


经营许可证编号:宁ICP备18001539号-1