通过变焦率切换摄像头的方法
Google从Android 9推出了一种新的使用多摄像头设备的方法,通过该方法可以使用单个逻辑摄像头ID下绑定的多个物理摄像头。这有助于应用程序开发者更容易实现对多摄像头设备的访问和控制,减少了应用直接打开多个摄像头,避免了复杂的摄像头选择逻辑。(支持多摄像头:https://source.android.google.cn/devices/camera/multi-camera)
在这方法之前,当应用程序想要使用不同的摄像头时,需要从支持的列表中枚举Camera ID,通过特性查找需要使用的摄像头。并且需要通过打开Camera ID的方式来进行摄像头之间的切换。 (比如,设备后置主摄像头的Camera ID 为0,后置UW摄像头Camera ID 为 2,等等)。 这需要打开、关闭不同的Camera ID来进行切换,需要花费处理时间。
通过支持多摄像头的新方法,可以更简单的实现。应用程序需要打开逻辑摄像头,并通过调整变焦比率来控制摄像头之间切换。例如,如果Camera被设为逻辑摄像头, 并将UW和Tele物理摄像头绑定在此逻辑摄像头下。然后,当应用打开此逻辑摄像头并将变焦率设置为1.0时,它将像往常一样打开主摄像头,但随着变焦比率低于1.0,UW摄像机将被打开,为用户提供“光学”缩小体验。 如果变焦比率高于3.0,它会自动打开我们的Tele摄像头,为用户提供“光学”放大体验。
通常,应用程序通过手势缩放来控制变焦率,因此,如果应用程序使用了控制变焦率关键值,则当用户手势缩放时,相机镜头将自动切换。通过这种方式,不需要从支持的列表里枚举不同的Camera IDs,也不用打开、关闭摄像头来切换不同的摄像头,这意味着它比原始方法快得多。
通过变焦率使用不同摄像头的详细逻辑如下:
1. 检查Camera ID是否支持逻辑多摄像头
如果相机设备具有 REQUEST_AVAILABLE_CAPABILITIES_LOGICAL_MULTI_CAMERA 能力,表明支持逻辑多摄像头。
2. 如果是逻辑摄像头,检查支持的变焦比率范围
public static final Key<Range<Float>> CONTROL_ZOOM_RATIO_RANGE
相机支持的最小和最大变焦比例 (minZoom, maxZoom)
https://developer.android.google.cn/reference/android/hardware/camera2/CameraCharacteristics#CONTROL_ZOOM_RATIO_RANGE
3. 在支持的范围内,通过控制变焦率来切换镜头
public static final Key<Float> CONTROL_ZOOM_RATIO
通过这个方法,APP可以更轻松的使用摄像头。