Android Multimedia框架总结(十六)Camera2框架之openCamera及session过程

转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/52942533

前言:前一篇介绍了Camera2相关类作用及功能,并未对源码部分了解,今天了解了在Camera2框架中openCamera及session过程,Agenda如下:

  • CameraManager的openCamera方法
  • openCameraDeviceUserAsync
  • CameraDeviceImpl
  • getCameraService
  • 创建Session相关回调

在Activity或Fragement的onResume()时调用openCamera,

CameraManager中的openCamera方法:

Android Multimedia框架总结(十六)Camera2框架之openCamera及session过程_第1张图片

接着看下openCameraDeviceUserAsync方法,从名字上理解,用户异步打开Camera device,

Android Multimedia框架总结(十六)Camera2框架之openCamera及session过程_第2张图片
Android Multimedia框架总结(十六)Camera2框架之openCamera及session过程_第3张图片

查询给定的CameraDevice的容量,cameraId,表示传入是有摄像头,还是后摄像头,这个容量是不可变的。

Android Multimedia框架总结(十六)Camera2框架之openCamera及session过程_第4张图片
Android Multimedia框架总结(十六)Camera2框架之openCamera及session过程_第5张图片

android.hardware.camera2.impl.CameraDeviceImpl的构造函数:

Android Multimedia框架总结(十六)Camera2框架之openCamera及session过程_第6张图片

接着看下CameraManagerGlobal.get().getCameraService();

Android Multimedia框架总结(十六)Camera2框架之openCamera及session过程_第7张图片

获取ICameraService,可能为空,当camera service不可用时,如果上次用Camera Service就已经挂了,将会重启这个service。

Android Multimedia框架总结(十六)Camera2框架之openCamera及session过程_第8张图片
Android Multimedia框架总结(十六)Camera2框架之openCamera及session过程_第9张图片

当服务可用时,连接Camera Serivce,并设置一些对应的listeners,如果服务已经启动,什么也不做,设置mCameraService指向合理的引用,如果连接不成功时。

Android Multimedia框架总结(十六)Camera2框架之openCamera及session过程_第10张图片
Android Multimedia框架总结(十六)Camera2框架之openCamera及session过程_第11张图片

当openCamera后,开始可以创建Session了,看下CameraCaptureSession$StateCallback的回调

Android Multimedia框架总结(十六)Camera2框架之openCamera及session过程_第12张图片

第一时间获得博客更新提醒,以及更多android干货,源码分析,欢迎关注我的微信公众号,扫一扫下方二维码或者长按识别二维码,即可关注。


Android Multimedia框架总结(十六)Camera2框架之openCamera及session过程_第13张图片

如果你觉得好,随手点赞,也是对笔者的肯定,也可以分享此公众号给你更多的人,原创不易

你可能感兴趣的:(Android Multimedia框架总结(十六)Camera2框架之openCamera及session过程)