GoogleCamera代码流程分析之相机切换

最近一直在看GoogleCamera的代码,虽然是googleCamera公司自己的camera,没有经过MTK进行二次封装,感觉看起来应该简单一点,事实上,一点也不简单。由于GoogleCamera在相机的预览、拍照录像方面均使用了Camera API2的接口,不熟悉这个接口使用的开发人员可能连开始预览的接口都找不到(还是习惯了使用Camera API1)。

本编博客主要介绍一下GoogleCamera的camera切换流程!
首先看一下相关的类之间的关系:
GoogleCamera代码流程分析之相机切换_第1张图片

googleCamera的相机切换具体的实现实在具体的相机的module中,在这里以CaptureModule为例,在CaptureModule中实现了ButtonCallBack这个接口,在这个接口的实现中,开始相机的切换动作!!

GoogleCamera代码流程分析之相机切换_第2张图片

在googleCamera中有太多的类都继承类SafeCloseable这个接口,googleCamera中的camera的关闭都是通过AndroidCameraDeviceProxy这个类完成。
相机的切换流程大致可以分为:
同步相机UI—->关闭当前camera—->打开指定的camera—->刷新相机UI

时序图如下所示:GoogleCamera代码流程分析之相机切换_第3张图片

相机的切换流程还是很简单的,主要是通过使用一个CameraId这个类,这个类可以适配Camera API1和Camera API2的接口,在API1的时候会返回一个整数,在API2的时候会返回一个字符串,其实就是代表一个传入到framework层的id。

有兴趣的可以自己去看一下googleCamera的源码,这些东西都是在网上可以搜索到的,我就不再详细叙述了,有兴趣的朋友可以关注我一下,有什么问题大家可以相互讨论!!

你可能感兴趣的:(Android)