Agenda:

  • getSystemService(Context.CAMERA_SERVICE)
  • CameraManager.getCameraIdList()
  • ICameraService.aidl
  • ICameraService.cpp

camera2中从Java层到C++层,以获取摄像头数目为例。
1.当我们获取摄像头时,会调用 CameraManager manager = (CameraManager) activity.getSystemService(Context.CAMERA_SERVICE); 而在最早的Camera类中,是通过openCamera,传到jni中android_hardware_Camera.cpp的openCamera,再向下到达Camera.cpp中,而在Camera2中,换了一种形式,通过getSystemService方法,根据传入的NAME来取得对应的Object,然后转换成相应的服务对象。这里传入的是Context.CAMERA_SERVICE

android的后台运行在很多service,它们在系统启动时被SystemServer开启,支持系统的正常工作,相应的名字会注册到SystemServer中,当外部须要用到这些服务时,就会通过getSystemService(xxx.name)获取对应的服务。

传入的Name 返回的对象 说明
WINDOW_SERVICE WindowManager 管理打开的窗口程序
LAYOUT_INFLATER_SERVICE LayoutInflater 取得xml里定义的view
ACTIVITY_SERVICE ActivityManager 管理应用程序的系统状态
POWER_SERVICE PowerManger 电源的服务
ALARM_SERVICE AlarmManager 闹钟的服务
NOTIFICATION_SERVICE NotificationManager 状态栏的服务
KEYGUARD_SERVICE KeyguardManager 键盘锁的服务
LOCATION_SERVICE LocationManager 位置的服务,如GPS
SEARCH_SERVICE SearchManager 搜索的服务
VEBRATOR_SERVICE Vebrator 手机震动的服务
CONNECTIVITY_SERVICE Connectivity 网络连接的服务
WIFI_SERVICE WifiManager Wi-Fi服务
TELEPHONY_SERVICE TeleponyManager 电话服务

当通过getSystemService(Context.CAMERA_SERVICE)获取到CameraManager后,通过调用anager.getCameraIdList()方法,获取到可用的摄像头列表。

再看下getOrCreateDeviceIdListLocked方法,返加的是list

看下CameraManagerGlobal.get().getCameraService()方法,

下面开始连接Camera相关服务

以上代码总结为当把mCameraService返回到getCameraService,这样就建立了C/S模型,Service是实际背后操作者,他们通信就是binder,这样整个过程就清楚了。
接下来看下这个ICameraService.aidl,位于frameworks\base\core\java\android\hardware下

以上就有一个getNumberOfCameras,获取对应的摄像头是多少个。通过onTransact,最后来到ICameraService.cpp中,位于\frameworks\av\camera包下



这样一个从java到c++层过程就完成了,后面的过程就是c++中进行。后面继续分析。

Android Multimedia框架总结(十八)Camera2框架从Java层到C++层类关系相关推荐

  1. PyTorch框架学习十八——Layer Normalization、Instance Normalization、Group Normalization

    PyTorch框架学习十八--Layer Normalization.Instance Normalization.Group Normalization 一.为什么要标准化? 二.BN.LN.IN. ...

  2. 五十八、深入了解 Java 中的注解和自定义注解

    @Author:Runsen @Date:2020/7/9 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...

  3. Android产品研发(十八)--webview问题集锦

    转载请标明出处:一片枫叶的专栏 上一篇文章中我们介绍了hybrid开发相关的知识.重点介绍了hybrid开发的概念,hybrid开发的作用,Android中如何实现hybrid开发,Android中实 ...

  4. Android 天气APP(十八)常用城市

    上一篇:Android 天气APP(十七)热门城市 - 国内城市 完成此篇文章实现的效果图如下: 前言 常用城市对于那些经常在外面出差的朋友来说相信是不陌生的,因为涉及到在不同城市之间居住,所以对于其 ...

  5. python十大框架_python 十大web框架排名总结

    0 引言 python在web开发方面有着广泛的应用.鉴于各种各样的框架,对于开发者来说如何选择将成为一个问题.为此,我特此对比较常见的几种框架从性能.使用感受以及应用情况进行一个粗略的分析. 1 D ...

  6. Android学习笔记(十八)——使用意图筛选器和实现浏览网页(附源代码)

    使用意图筛选器 点击下载源代码 1.创建一个Intents项目,给该项目加入一个新类,命名为MyBrowserActivity.在res/layout目录下新增一个browser.xml: 2.在An ...

  7. 应用程序框架实战十八:DDD分层架构之聚合

    前面已经介绍了DDD分层架构的实体和值对象,本文将介绍聚合以及与其高度相关的并发主题. 我在之前已经说过,初学者第一步需要将业务逻辑尽量放到实体或值对象中,给实体"充血",这样可以 ...

  8. 微服务框架(十八)Dubbo领域模型、调用链及调用方式

    此系列文章将会描述Java框架Spring Boot.服务治理框架Dubbo.应用容器引擎Docker,及使用Spring Boot集成Dubbo.Mybatis等开源框架,其中穿插着Spring B ...

  9. Django框架(十八)—— auth框架:用户登录、注册、认证

    auth模块 一.什么是author模块 Auth模块是Django自带的用户认证模块,可以实现包括用户注册.用户登录.用户认证.注销.修改密码等功能.默认使用 auth_user 表来存储用户数据. ...

  10. 六十、基础框架(十八)辞典物件

    辞典物件  就是  一种数据集合.这种数据集合  由若干对"关键字-物件"组合  构成.就像  你  可以  在辞典里  找到  某个词的定义,在objective-c里面的辞典物 ...

最新文章

  1. Log4cplus1.04的使用
  2. error: No curses/termcap library found的解决办法
  3. Linux的环境变量
  4. 连载MariaDB Crash Cource中文笔记(第二)
  5. pycharm 报黄(黄字、黄色)警告 Local variable 'xxx' might be referenced before assignment
  6. 甜甜的爱情+美食完美情人节海报,PSD分层模板轻松搞定设计,拿去用!
  7. Future和FutureTask实现异步计算
  8. 在ASP.NET中执行URL重写(一)
  9. UDP 协议报文格式
  10. 2018-2019赛季多校联合新生训练赛第三场题解和补题(中石油)
  11. 将一个D触发器转换成JK触发器
  12. 为什么window上没有php-fpm?
  13. Spring Boot 起步依赖
  14. 20-30岁怎么规划自己的人生呢?
  15. 揭秘“1200工程”:苏宁如何培养企业接班人? | 一点财经
  16. 期末复习操作系统---设备管理
  17. 小学语文阅读教学育人价值研究实施方案
  18. 摩杜云亮相CDEC2021中国数字智能生态大会,始终专注云+数据
  19. [量化-007]为什么股市会存在
  20. GETTING-STARTED

热门文章

  1. wextend matlab,小波学习之三(多孔算法与MATLAB swt剖析)转载
  2. dedecms关于访问量的修改
  3. KITTI激光雷达点云解析与图像反投影
  4. cartographer探秘第四章之代码解析(四) --- 后端优化 --- 约束计算
  5. opencv函数之saturate_cast(防止溢出)
  6. 论文简述 | PL-VINS:具有点和线特征的实时单目视觉惯性SLAM
  7. 数据分析------数据处理(2)及 AutoML 学习
  8. Junit第一次使用
  9. Unity之UGUI初探—按钮动画
  10. 考场自动安排工具开发手记