`

Android Camera 方法分析

 
阅读更多

Android Camera源码分析

android通过android.hardware.Camera类来控制摄像头设备的,要使用只有通过android.hardware.Camera.open()来打开,这样就会创建一个新的Camera对象。

android提供了一些接口来给予回调,控制Camera的状态,

分别是:
1.android.hardware.Camera.ErrorCallback:摄像头出错的时候调用,这个接口具有一个void onError(int error,Camera camera)函数;其中,

前者表示数据类型,取值是Camera类中的常量CAMERA_ERROR_UNKNOWN或者是 CAMERA_ERROR_SERVICE_DIED;

前者是不明错误,后者是表示服务已经关闭,

在这种情况下需要释放当前的Camera对象,然后再初 始化一个。

2.android.hardware.camera.PreviewCallback: 在图像预览时调用,这个接口有一个void onPreviewFrame(byte[] data,Camera camera);参数data为每帧图像的数据流。我们可以根据实际需要来实现这个接口。

3.android.hardware.Camera.ShutterCallback:在图像预览的时候调用,这个接口具有一个void onShutter();
可以在改函数中通知用户快门已经关闭,例如播放一个声音。

4.android.hardware.Camera.PictureCallback: 当拍摄相片的时候调用,该接口具有一个void onPictureTaken(byte[] data,Camera camera)函数;参数和预览的一样。在android中主要有三个类实现了这个接口,分别是PostViewPictureCallback、 RawPictureCallback、JepgPictureCallback。我们可以根据需要定义自己需要的类。

5.android.hardware.Camera.AutoFocusCallback:当自动对焦时候调用,该接口具有一个void onAutoFocus(boolean success,Camera camera)函数;

6.还提供了放大缩小的监听器android.hardware.Camera.OnZoomChangeListener。

private final class ZoomListener implements android.hardware.Camera.OnZoomChangeListener {
public void onZoomChange(int value, boolean stopped, android.hardware.Camera camera) ;

当取得照片的数据流后可以通过BitmapFactory的decodeByteArray()函数来解析图片。

另外还可以通过Camera对象的getParameters()函数来得到一个android.hardware.Camera.Parameters 对象,Parameters提供了一些接口来设置Camera的属性:

1.setPictureFormat(int pixel_format):设置图片的格式,其取值为PixelFormat YCbCr_420_SP、PixelFormatRGB_565或者PixelFormatJPEG。

2.setPreviewFormat(int pixel_format):设置图片的预览格式,取值如上。

3.setPictureSize(int width,int height):设置图片的高度和宽度,单位为像素。

4.setPreviewSize(int width,int height):设置预览的高度和宽度,取值如上。

5.setPreviewFrameRate(int fps):设置图片预览的帧速。 在设置好Camera的参数后,可以通过函数void startPreview()开始预览图像、void stopPreview()结束预览,通过autoFocus(AutoFocusCallback cb)来自动对焦,最后可以通过takePicture(ShutterCallback shutter, PictureCallback raw, PictureCallback jpeg)函数来拍照。

该函数有三个参数,分别为快门回调接口、原生图像数据接口和压缩格式图片数据接口。

如果数据格式不存在的话数据流为空,如果不需要 实现这些接口则这些参数取值可以为null。

来自:http://blog.csdn.net/itachi85/article/details/6759975

分享到:
评论

相关推荐

    Android Camera架构及源码解析

    自己总结的Android Camera系统架构及源码分析,以framework和hal为主。

    android_Camera框架分析

    android_Camera框架分析

    android Camera模块分析

    在Android系统中,Camera模块是实现拍照、录像等相机功能的核心组件。本文将详细解析Android Camera模块的架构和底层通信机制。 首先,Android应用程序主要使用Java编写,但系统的一些核心服务,如Camera服务,通常...

    android framework camera分析

    通过上述分析可以看出,Android Camera模块的设计十分灵活且高效。它不仅提供了一套完整的框架供开发人员使用,还允许针对特定硬件进行定制化开发。开发者可以通过实现`CameraHardwareInterface`接口来适配不同的...

    Android Camera开发与设置偏好值

    在提供的压缩包文件AndroidCamera-EnableSettings-master中,可能包含了实现以上步骤的示例代码,通过学习和分析这些代码,你可以更好地理解和实践Android相机开发。 总的来说,Android相机开发涉及多方面知识,...

    Android Camera问题资料

    这个压缩包文件包含了一系列与Android Camera问题相关的文档,涵盖了从基础问题解决到深入的技术分析。以下是对这些文档内容的概览: 1. **解决Android 2.2 Camera问题**: 这份文档可能提供了针对Android 2.2版本...

    Android CameraX Demo : 实现预览/拍照/录制视频/图片分析/对焦/切换摄像头等操作

    我自己写的Android CameraX Demo,实现了预览/拍照/录制视频/图片分析/对焦/切换摄像头等操作。 具体详见我的博客 : https://blog.csdn.net/EthanCo/article/details/125603671

    androidCamera框架分析.pdf

    以下是对Android Camera框架的详细分析: 一、Camera构架分析 1. **客户端与服务器**:Android Camera框架分为客户端(Client)和服务器(Server)两部分。客户端通常是在应用程序中,通过Camera类的API来控制相机...

    android Camera框架分析.pdf

    Android Camera 框架分析 Android 的 Camera 系统是一个复杂的系统,包括取景(preview)和拍摄照片(take picture)的功能。 Camera 框架分析可以分为两个部分:Camera 构架分析和 Camera 工作流程概述。 一、...

    Android Camera2 API

    《深入解析Android Camera2 API》 在Android平台上,相机功能是开发者和用户都非常关注的部分,尤其是在移动设备上,高质量的拍照体验对用户来说至关重要。随着Android系统的不断演进,Camera API也经历了从早期的...

    android 原生人脸识别Camera和Camera2的示例

    本文将详细讲解如何利用Android原生的`Camera`和`Camera2` API来实现这一功能。 首先,我们从`Camera` API开始。`Camera` API是Android早期版本提供的人脸检测接口,通过`FaceDetector`类来实现。以下是一些关键...

    Android camera2预览和取数据

    在Android平台上,Camera2 API是自Android 5.0(API级别21)引入的全新相机接口,旨在提供更高级别的控制和性能。这个API允许开发者深入到相机硬件的细节,实现专业级的拍照和视频录制功能。本文将详细介绍如何使用...

    android Camera源码(可用)

    在Android平台上,Camera API是开发人员用来访问和控制设备摄像头的关键接口。这个“android Camera源码(可用)”提供...通过阅读和分析源码,不仅可以学习到Camera API的使用,还能了解如何优化性能和提高用户体验。

    Android camera架构介绍

    ### Android Camera 架构...通过以上分析,我们可以看到 Android Camera 架构是如何通过不同层次的协同工作来实现相机功能的。这种分层的设计不仅提高了系统的可扩展性,也为开发者提供了更加灵活和高效的开发接口。

    android-Camera-Code.zip_android 相机_android 相机_camera_camera and

    通过学习和分析这个示例,开发者可以快速掌握Android相机功能的开发,为自己的应用添加丰富的相机特性。同时,随着Android版本的更新,不断关注新的API和最佳实践,可以使你的相机功能更加先进和高效。

    android8.0_Camera深入分析

    本文将深入分析Android 8.0中的Camera API,包括其新特性、工作原理以及如何利用这些特性进行应用开发。 1. Camera2 API的提升 在Android 8.0中,Camera2 API成为了主要的相机接口,它取代了早期的Camera API,提供...

Global site tag (gtag.js) - Google Analytics