Camera 功能概览

来源:互联网 发布:xnview mac 中文版 编辑:程序博客网 时间:2024/06/09 19:44

Camera 的功能概览

中文名称 English Name 描述(Description) 实现方式 高动态范围图像 HDR(High-Dynamic Range) 不同曝光时间的LDR(Low-Dynamic)图像, 利用每个曝光时间相对应最佳细节的LDR图像来合成最终的HDR图像, 能够更好的反映出真实环境中的视觉效果. 在表现上可以使过暗的区域变亮,过亮的区域变暗,使得细节更加清晰. 底层支持 闪光灯模式调节 Flash Mode 闪光灯的模式调节, 在正常拍照模式下,可以支持: 开(on), 关(off), 自动(auto). 在视频录制模式下只支持: 开(on), 关(off). 闪光灯的支持实际有多种模式, 其在Android的Framework层有相关的描述.闪光灯总共支持5种模式: 中文名称 Paramater Value Destription 自动 FLASH_MODE_AUTO auto 闪光灯根据环境光的明暗来自动决定闪光灯的模式 开 FLASH_MODE_ON on 始终打开闪光灯 关 FLASH_MODE_OFF off 始终关闭闪光灯 消除红眼 FLASH_MODE_RED_EYE red-eye 打开夜光灯的过程中消除红眼 手电筒 FLASH_MODE_TORCH Torch 以手电筒的方式打开闪光灯. 底层支持 摄像头切换 Camera Switch 设备有多个摄像头时,在不同摄像头之间的切换. 通过Camera.open 来打开一个摄像头. 底层支持 人脸检测 Face Detect 自动识别人脸, Android原生支持人脸信息检测, 但是支持功能比较少, 只支持检测到人脸的区域, 可靠度, 左眼的坐标, 右眼的坐标, 嘴部的坐标, 还有一些没有对上层开放的信息,如微笑角度, 微笑程度, 还有个 faceRecognised数据(不确定具体什么意思). 如果想实现更加详细的信息检测,只能依靠其他的方法来实现, 比如检测人的年龄信息, 等等. 第三方支持 连拍 Continuous Picture 连续拍照. 连续拍照在高通和MTK的实现机制是不一样的, 在MTK下 相机的 Paramater 通过设置一个参数 Continuous , 相机自动进入连续拍照模式. 这是MTK自己实现的, 在高通下,没有这样的参数, 高通实现连拍是连续调整takePicture实现的. 高通或是MTK 相机对焦模式 Focus Mode 在Camera的Framework层的代码中可以查到Camera的对焦方式可以分为以下的 9 种: 中文名称 English Name Value Destription 自动 FOCUS_MODE_AUTO auto 自动对焦模式,在这种模式下应用程序应当调用`autoFocus(AutoFocusCallbace)`方法,来开启对焦 无限远 FOCUS_MODE_INFINITY infinity 聚光区为无限远 大镜头 FOCUS_MODE_MACRO macro 大镜头模式使得焦点处的图像清晰, 离焦点越远越模糊. 使得图像重点突出.在这种模式下,应用程序应该调用`autoFocus(AutoFocusCallback)` 方法开始聚焦. 固定焦点 FOCUS_MODE_FIXED fixed 焦点是因定的. 当焦点不可调整的时候, Camera应当处于这种模式. 如果Camera有自动聚焦. 这个模式可以固定焦点, 经常用于超焦距.在这种模式下, 应用程序不应当调用`autoFocus(AutoFocusCallback)`. 正常模式 FOCUS_MODE_NORMAL normal 正常模式,应用程序应当调用`autoFocus(AutoFocusCallback)`开始对焦 全幅聚焦 FOCUS_MODE_EDOF EDOF(Extended depth of field) 数字化完成对焦,并且是待续的. 在这种模式下,应用程序不应当调用`autoFocus(AutoFocusCallback)` 视频连续对焦 FOCUS_MODE_CONTINUOUS_VIDEO continuous-video        视频录制连续对焦, Camera 持续性地尝试对焦. 这对于视频录视频是一种很好的选择, 因为焦点的变化是平滑的. 在这种模式下应用程序同时可以 调用`takePicture(Camera.ShutterCallback, Camera.PictureCallback, Camera.PictureCallback)`, 但是物体可以不在焦点上. 自动对焦在这个参数设置后立即生效.
        从 API 14 开始, 在这种模式下应用程序可以调用`autoFocus(AutoFocusCallback)`. 焦点的回调会立即返回一个`boolean`值, 来指明焦点是否清晰. 当`autoFocus`调用之后,焦点的位置被锁定. 如果应用程序想重新回到`continuous-video` 模式, 必须要调用`cancelAutoFocus`. 重启预览也不行. 要想停止持续对焦, 应用程序可以改变当前的聚焦模式到其他的模式. 图像连续对焦 FOCUS_MODE_CONTINUOUS_PICTURE continuous-picture         拍照连续自动对焦. Camera连续的尝试对焦.焦点变化的速度比`continuous-picture` 更具有侵略性. 当参数设置之后立马生效.
        在这种模式下, 应用程序可以调用`autoFocus(AutoFocusCallback)`. 如果自动对焦正在扫描, 焦点的回调会在对焦完成之后返回. 如果自动对焦没有扫描, 焦点的回调会立即返回一个 `boolean`值,指明焦点是否清晰. 应用程序可以根据这个信息,来决定是否立即拍摄一张图片, 或是改变聚焦模式到`AUTO`, 并且运行一个完整 的自动聚焦的周期. 在调用 `autoFocus` 之后,焦点被锁定. 如果应用程序想回到持续的对焦, 必须要调用`cancelAutoFocus`, 重启预览是没有效果的. 如果想要结束持续对焦, 应用程序可以改变当前聚焦模式到其他模式. 手动 FOCUS_MODE_MANUAL_POSITION manual 这个参数目前在SDK中是被设为隐藏的 底层支持 场景模式 Scene Mode         在相机的Framework中定义的场景模式有以下几种. 中文名称 Paramater Value Description 自动检测 SCENE_MODE_ASD asd 自动检测. 关闭场景模式 自动 SCENE_MODE_AUTO auto 关闭场景模式 行为模式 SCENE_MODE_ACTION action 为快速移动的物体拍照, 与`SCENE_MODE_SPORTS` 效果相同 肖像模式 SCENE_MODE_PORTRAIT portrait 为人物拍摄肖像 远景模式 SCENE_MODE_LANDSCAPE landscape 为远处的物体拍摄 夜景模式 SCENE_MODE_NIGHT night 在夜里拍摄 夜肖像模式 SCENE_MODE_NIGHT_PORTRAIT night-portrait 在夜里拍摄人物 剧场模式 SCENE_MODE_THEATRE theatre 在影院拍摄, 此时闪光灯是关闭的 海滩模式 SCENE_MODE_BEACH beach 在海边拍摄 雪花模式 SCENE_MODE_SNOW snow 在雪花中拍摄 日落模式 SCENE_MODE_SUNSET sunset 拍摄日落图像 防抖模式 SCENE_MODE_STEADYPHOTO steadyphoto 避免模糊的图片, 例如手部的抖动 烟花模式 SCENE_MODE_FIREWORKS fireworks 拍摄烟火表演 运动模式 SCENE_MODE_SPORTS sports 为快速移动物体拍摄, 与`SCENE_MODE_ACTION` 效果相同 聚会模式 SCENE_MODE_PARTY party 在室内弱光下拍摄 暖光模式 SCENE_MODE_CANDLELIGHT candlelight 拍摄由蜡烛产生的自然暖光 逆光模式 SCENE_MODE_BACKLIGHT backlight 在逆光场景下拍摄, 该参数被设为隐藏, 不对外开放 鲜花模式 SCENE_MODE_FLOWERS flowers 在鲜花中拍摄, 该参数被设为隐藏, 不对外开放 条形码模式 SCENE_MODE_BARCODE barcode 扫描条形码. Camera驱动将会对读取条形码进行优化 HDR模式 SCENE_MODE_HDR hdr 使用高动态范围成像技术的拍摄场景. Camera 会返回一张比普通图片具有扩展动态范围的图片. 拍摄这样一张图片, 将会花费比普通图片更加长的时间 底层支持 白平衡 White Balance Camera在Framework中定义了如下几种白平衡模式: 中文名称 Paramater Value Description 自动 WHITE_BALANCE_AUTO auto 自动模式,关闭白平衡 白炽光 WHITE_BALANCE_INCANDESCENT incandescent 白炽光照 荧光灯 WHITE_BALANCE_FLUORESCENT fluorescent 荧光灯 暖荧光 WHITE_BALANCE_WARM_FLUORESCENT warm-fluorescent 暖荧光 日光灯 WHITE_BALANCE_DAYLIGHT daylight 日光灯 暮光 WHITE_BALANCE_TWILIGHT twilight

Camera 的设置有很多, 有的值是开关, 有的值是枚举. 但都是以 Key-Value 的方式来设置. 以下列出Camera相关的设置kEY,及描述.

Notice: 通过以下机制来设置Camera属性的方法, 在Android5.0及以上版本
中不再建议使用, 推荐Android Camera2的接口. 但作为学习之用,这一套接口
更加简单,同时也更好理解.
关于Android Camera2的接口的解释, 会以后再给出.
其相关的源代码是放在:frameworks/base/core/java/android/hardware/camera2/ 下.

Key Value-type Desciption KEY_PREVIEW_SIZE enum 设置Camera的预览大小. 可以通过`getSupportedPreviewSizes()`方法来获取设备所支持的所有预览大小的集合, 不同的摄像设备支持不同的预览大小, 在设置预览大小的时候,必须要设置设备支持的大小.否则可以会导致摄像头无法拍摄.通过`setPreviewSize(int width, int height)`来设置预览大小. KEY_PREVIEW_FORMAT enum 设置预览数据的格式. 可以通过`getSupportedPreviewFormats()` 来获取设备所支持的预览格式的集合. 通过`setPreviewFormat(int pixed_formal)` 来设置当前的预览格式. 在设置预览数据格式的时候,必须要设置设备支持的格式. KEY_PREVIEW_FRAME_RATE enum 设置预览帧率. 可以通过`getSupportedPreviewFrameRates()` 来获取设备所支持的预览帧率的集合. 通过`setPreviewFrameRate(int fps)` 来设置当前的预览帧率. 在设置预览帧率的时候,必须要设置设备支持的预览帧率 KEY_PREVIEW_FPS_RANGE enum 设置FPS的范围. 可以通过`getSupportedPreviewFpsRange()` 来获取设备所支持的FPS范围的集合, 每个元素是两个值构成, 一个最小的FPS, 一个最大的FPS, 通过`setPreviewFpsRange(int min, int max)` 来设置当前的预览帧率. 在设置预览FPS范围时,必须要设置设备支持的值. KEY_PICTURE_SIZE enum 设置Camera的图片大小. 可以通过`getSupportedPictureSizes()` 方法来获取设备所支持的所有图片大小的集合, 不同的摄像设备支持不同的图片大小, 在设置图片大小的时候,必须要设置设备支持的大小.否则可以会导致摄像头无法拍摄. 通过`setPictureSize(int width, int height)`来设置图片大小. KEY_PICTURE_FORMAT enum 设置预览数据的格式. 可以通过`getSupportedPictureFormats()` 来获取设备所支持的预览格式的集合. 通过`setPictureFormat(int pixed_formal)` 来设置当前的图片格式. 在设置图片数据格式的时候,必须要设置设备支持的大小 不行了,这种参数太多, 我一时半会写不完了, 我要换个方式来描述了 在Camera中, 要设置Camera的参数,首先要获取当前设备所支持的值, 才能对其进行设置, 获取设备的支持的集合用方法`getSupportedXXX()`来获取.
通过方法`setXXX()`来设置值.
通过方法`getXXX()`来获取当前的值.
支持这种机制的参数有以下列出: 反冲带 Antibanding 自动曝光 Autoexposure 零延时拍照模式 ZSLModes 预览大小 PreviewSizes 视频大小 VideoSizes 预览格式 PreviewFormats 图片大小 PicutreSizes 图片格式 PictureSizes 白平衡 WhiteBanlance 滤镜 ColorEffects 场景模式 SceneModes 闪光灯模式 FlashModes 聚焦模式 FocusModes HFR HfrSizes 感光度 IsoValues 具体不清楚 HistogramModes 用来检测`startPreview`方法是否被调用. 视频HDR VideoHDRModes 降噪模式 DenoiseModes Jpeg缩略图大小 JpegThumbnailSizes 预览帧率 PreviewFrameRates 预览帧率的范围 PreviewFpsRange 触摸AF/AEC TouchAfAec 场景检测 SceneDetectModes 镜头遮光 LensShadeModes 连续自动聚焦 ContinuousAfModes 可选区域的自动对焦 SelectableZoneAf 人脸检测模式 FaceDetectionModes 红眼处理 RedeyeReductionMode 视频旋转模式 VideoRotationValues 预览帧模式 PreviewFrameRateModes 还有一些其他的数据如: 设置曝光度,锐度,设置GPS位置信息数据, 调整镜头远近,等等 就列出这么多吧. 剩的请查看源码`/frameworks/base/core/java/android/hardware/Camera.java`.
0 0