Android camera主要结构如图所示。
我们可以从三个层次去使用它:JAVA层,service层和hardwareinterface。
流程都大同小异,不同编程语言具体实现上接口略有不同, 流程框架如下:
open,
getParameters,
parameters。set
setParameters,
addcallback,
startpreview(takepicture)
Java层具体例子:
android.hardware.Camera提供了一个接口对象: Camera,用户在程序内调用这个对象的各个功能就可以了. 值得注意的是它的callback, 是可以通过setPreviewCallbackWithBuffer来设置外部缓冲区接受Camera 帧数据的,接口名为PreviewCallback, 需要你在程序中设置实现。每当camera一帧数据采集到时,这个接口会被自动调用。用户可以从你自己所属的缓冲取出数据操作了。
service层:
接口:ICamera。
调用方法:    
    sp<IServiceManager> sm = defaultServiceManager();
    sp<IBinder> binder = sm->getService(String16("camera"));
    sp<ICameraService> service = interface_cast<ICameraService>(binder);
    sp<ICamera>camera= service->connect(const sp<ICameraClient>& cameraClient);
其中参数ICameraClient可以设定callback函数:
     notifyCallback(int32_t msgType, int32_t ext1, int32_t ext2)
     dataCallback(int32_t msgType, const sp<IMemory>& data)
     dataCallbackTimestamp(nsecs_t timestamp, int32_t msgType, const sp<IMemory>& data)
其他使用方法不再赘述。
HardwareInterface层:
接口:CameraHardwareInterface,
调用方法:
CameraHardwareInterface= openCameraHardware();
流程例子:
    camera_hw = openCameraHardware();
    if(camera_hw  == NULL){
        LOGE("openCameraHardware() failed/n");
        return -1;
    }
    
    camera_hw->setCallbacks(notify_cb,
                               data_cb,
                               data_cb_timestamp,
                               (void *)NULL);

CameraParameters parameters = camera_hw->getParameters();
    parameters.setPreviewSize(1024, 600);
    camera_hw->setParameters(parameters);
    camera_hw->startPreview();

萝卜和青菜--Android camera框架与使用相关推荐

  1. Android Camera框架

    总体介绍 Android Camera 框架从整体上看是一个 client/service 的架构, 有两个进程: client 进程,可以看成是 AP 端,主要包括 JAVA 代码与一些 nativ ...

  2. Treble 架构下的 Android Camera 框架

    Camera 子系统从上到下分别是 App/Framework,CameraService,HAL Impl App/Framework vs CameraService 之间,通过 AIDL bin ...

  3. 介绍 Android 的 Camera 框架

    总体介绍  Android Camera 框架从整体上看是一个 client/service 的架构,有两个进程: 一个是 client 进程,可以看成是 AP 端,主要包括 JAVA 代码与一些 n ...

  4. qcom Android Camera【转】

    本文转载自:http://blog.csdn.net/Wilsonboliu/article/details/54949196 1.总体架构 Android Camera 框架从整体上看是一个 cli ...

  5. Android Camera架构浅析

    原址 1.Camera成像原理介绍 Camera工作流程图 Camera的成像原理可以简单概括如下: 景物(SCENE)通过镜头(LENS)生成的光学图像投射到图像传感器(Sensor)表面上,然后转 ...

  6. 增加录像时间戳水印、 camera框架介绍

    最近项目上要在mtk6589机器上增加录像的水印功能,那个纠结呀--  一大通 度娘.google啊-- 最终整个变通的方案:做好10几个bmp(8位深度黑底白字)贴图,把文件使用ue去除掉bmp文件 ...

  7. Camera框架初探

    先解释一些概念,然后带着思考去解读 1.CameraService. 2.Camera 3.BnCameraClient 4.BnCamera 5.Client 不得不说的是android对于bind ...

  8. android camera(三):camera V4L2 FIMC

    关键词: android  camera CMM 模组 camera参数  CAMIF   V4L2   平台信息: 内核: linux 系统: android 平台:S5PV310(samsung ...

  9. Android 动画框架详解,第 1 部分

    2019独角兽企业重金招聘Python工程师标准>>> Android 平台提供了一套完整的动画框架,使得开发者可以用它来开发各种动画效果,本文将向读者阐述 Android 的动画框 ...

最新文章

  1. 点击空白处遮罩层关闭_如何手动关闭win10系统自带的windows defender
  2. 基于RDP开源许可rdesktop基本介绍
  3. 关于warning: Clock skew detected. Your build may be incomplete. 的解决方法【转】
  4. 深入理解Linux异步I/O框架 io_uring
  5. ReactiveCocoa简单介绍
  6. 在matlab中ungetfile后,11条Matlab实用小技巧
  7. 通俗讲解【重定向】及其实践
  8. linux下软件发布,Linux Kernel 5.12发布下载,附新特性及新功能介绍
  9. 使用media player控件播放歌曲 winform
  10. Vue组件学习之事件总线和消息发布订阅
  11. 找不到合适的创业路该怎么办
  12. 深度学习2.0-33.BatchNorm
  13. visio画图复制粘贴到word_怎么将visio绘图导入Word(visio绘图插入word后如何调整大小)...
  14. 基于 Direct3D 电子海图区域绘制方法
  15. 如何利用PS 更改图像背景颜色
  16. Python数据分析师工资怎么样?
  17. UVa Problem 10247 Complete Tree Labeling (完全树标号)
  18. 物联网技术栈之网关技术
  19. python 怎么爬桌软件数据_python爬虫怎么从软件界面抓取数据?
  20. 魔兽世界服务器分组信息五区,魔兽世界服务器 魔兽世界国服所有大区的所有服务器名...

热门文章

  1. 机器学习该怎么入门?
  2. 矿产资源储量动态监管服务
  3. 如何用excle制作黑人拉馆_手把手教你用excel2007做柏拉图pareto
  4. 《技术顾问聘用协议书》个人分享
  5. 文章标题专业板金优化分析软件
  6. C程序设计(第五版) 第四章选择结构程序设计(二)
  7. JS_02_函数_运算符_循环
  8. 计算机网络mask是什么意思,计算机网络-mask答案.ppt
  9. 树莓派局域网测速方法
  10. 关于各大输入法词库格式之间的转换