视频通话也有打开本地摄像头预览的场景,但打开本地Camera预览逻辑,并非在Dailer APP中实现,具体流程图如下。
Dialer app中只调用
1、setCamera用于打开摄像头
相关动作在Ims apk中实现,open函数最后调用了VTSource.java中的doOpenCamera函数,最后调用CameraManager的openCamera函数.
2、requestCameraCapabilities获取Camera相关尺寸,用于设置相关SurfaceView控件大小
ImsVTProvider.java调用requestCameraCapabilitiesInternal返回预览相关参数
3、setPreviewSurface 将Local预览控件设置到CameraSession中
VTSource.java中会直接创建CameraDevice Session,并设置重复执行,使本地Camera预览能沟通正常执行。
调用VTSource.jav中createSession用于预览请求
当session成功创建后,设置session重复执行
到此,视频通话本端显示完成,相关Log打印如下
虽然视频通话不是APP直接调用Camera接口,但是本地调用Camera相关接口时跨进程调用而已,具体使用同app调用Camera接口一样,参考
Camera2 学习总结_右手吉他的博客-CSDN博客