setPhysicalCameraKey使用场景:Camera应用多摄同开,分别给对应cameraId下不同的参数
(比如AE,AF,OIS等参数);
android包位置:android.hardware.camera2.CaptureRequest.Builder
framework源码位置:sys\frameworks\base\core\java\android\hardware\camera2\CaptureRequest.java
流程:
1,创建CaptureRequest.Builder对象以便调用setPhysicalCameraKey方法:
createCaptureRequest(@RequestTemplate int templateType, Set physicalCameraIdSet),
templateType:根据预览/拍照/录像,需求传对应值。
physicalCameraIdSet:保存物理cameraId的set集合,可以将CameraCharacteristics.getPhysicalCameraIds()得到的参数传进去。
2,确认setPhysicalCameraKey能使用的key:
调用CameraCharacteristics.getAvailablePhysicalCameraRequestKeys()可以获取到List<CaptureRequest.Key>多摄流程中物理CameraId能下发参数到hal底层的list集合,
这list里面参数是底层配置的静态参数,只能生效int32请求。
3,调用setPhysicalCameraKey(@NonNull Key key, T value, @NonNull String physicalCameraId)方法,将对应的参数设置给CaptureRequest.Builder:
key:一定要是getAvailablePhysicalCameraRequestKeys里支持的key。
value:一定要是int32值。
physicalCameraId:一定要是physicalCameraIdSet里的cameraId。
4,调用CameraCaptureSession.setRepeatingBurst或setRepeatingRequest方法通知底层更新预览生效下发的key参数;CameraCaptureSession.captureBurst或capture方法通知底层拍照生效下发的key参数。