Camera2 API 映射

本页总结了 Camera2 API 如何替换核心 扩展视图系统 (EVS) API。

IEvsEnumerator API

IEvsEnumerator Camera2 NDK API Camera2 Java API

openCamera

EVS openCamera 将打开和流配置相结合;Camera2 将它们分开。

ACameraManager_openCamera ,然后是 ACameraDevice_createCaptureSession (使用 AImageReader ),然后是 ACameraDevice_createCaptureRequest

CameraManager.openCamera,然后是 CameraDevice.createCaptureSession(使用 ImageReader 或其他 Surface),然后是 CameraDevice.createCaptureRequest

closeCamera ACameraDevice_close CameraDevice.close
getCameraList ACameraManager_getCameraIdList,然后是 ACameraManager_getCameraCharacteristics(了解详情) CameraManager.getCameraIdList,然后是 CameraManager.getCameraCharacteristics(了解详情)
getStreamList ACameraManager_getCameraCharacteristics,读取 ACAMERA_SCALER_AVAILABLE_STREAM_CONFIGURATIONS 标记 CameraManager.getCameraCharacteristics,获取 CameraCharacteristics.SCALER_STREAM_CONFIGURATION_MAP
registerStatusCallback ACameraManager_registerAvailabilityCallback(使用 ACameraManager_AvailabilityListener CameraManager.registerAvailabilityCallback(使用 CameraManager.AvailabilityCallback
isHardware 不适用 不适用

getDisplayIdList

已废弃。

使用 DisplayManager.getDisplays

不适用 不适用

getDisplayState

已废弃。

使用 Display.getState

不适用 不适用

getDisplayStateById

已废弃。

使用 DisplayManager.getDisplay ,然后使用 Display.getState

不适用 不适用

openDisplay

已废弃。

在特定 Display 上使用 WindowManager.addView

不适用 不适用

closeDisplay

已废弃。

使用 WindowManager.removeView

不适用 不适用

openUltrasonicsArray

已废弃。

使用 VHAL 属性。

不适用 不适用

getUltrasonicsArrayList

已废弃。

使用 VHAL 属性。

不适用 不适用

closeUltrasonicsArray

已废弃。

使用 VHAL 属性。

不适用 不适用

IEvsCamera

IEvsCamera Camera2 NDK API Camera2 Java API
getCameraInfo ACameraManager_getCameraCharacteristics CameraManager.getCameraCharacteristics

getPhysicalCameraInfo

对于逻辑摄像头,请检查 getPhysicalCameraIds

ACameraManager_getCameraCharacteristics CameraManager.getCameraCharacteristics

setMaxFramesInFlight

无法在 Camera2 中动态更改;在创建 ImageReader 时设置

AImageReader_newAImageReader_newWithUsage 中设置 ImageReader.newInstance(width, height, format, maxImages) 中设置
startVideoStream ACameraCaptureSession_setRepeatingRequestV2 CameraCaptureSession.setSingleRepeatingRequest
stopVideoStream ACameraCaptureSession_stopRepeating CameraCaptureSession.stopRepeating

pauseVideoStream

无直接对等项。使用 stopRepeatingRequest

ACameraCaptureSession_stopRepeating CameraCaptureSession.stopRepeating

resumeVideoStream

无直接对等项;使用 setSingleRepeatingRequest

ACameraCaptureSession_setRepeatingRequestV2 CameraCaptureSession.setSingleRepeatingRequest

doneWithFrame

将缓冲区释放回队列

AImage_delete Image.close

importExternalBuffers

缓冲区管理由 Surface 处理。如需了解详情,请参阅 CameraCaptureSession.prepare

不适用 不适用
getParameterList ACameraMetadata_getAllTags CameraCharacteristics.getKeys
getIntParameter ACaptureRequest_getConstEntry CaptureRequest.get(key)

getIntParameterRange

范围是 CameraCharacteristics 的一部分

ACameraMetadata_getConstEntry CameraCharacteristics.get(key)
(CONTROL_AE_COMPENSATION_RANGE),依此类推
setIntParameter ACaptureRequest_setEntry_i32_u8,依此类推 CaptureRequest.Builder.set(key, value)

getExtendedInfo

使用供应商标记实现自定义数据。

ACaptureRequest
ACameraMetadata 上使用供应商标记
CaptureRequestCameraCharacteristics 上使用供应商标记

setExtendedInfo

使用供应商标记实现自定义数据。

ACaptureRequest 上使用供应商标记 CaptureRequest.Builder 上使用供应商标记

setPrimaryClient

已废弃。

在 Camera2 共享模式下,主要客户端状态基于优先级。

不适用 不适用

unsetPrimaryClient

已废弃。

不适用 不适用

forcePrimaryClient

已废弃。

不适用 不适用

IEvsCameraStream

IEvsCameraStream Camera2 NDK API Camera2 Java API

deliverFrame

用于接收新帧的回调。使用 ImageReader.acquireLatestImageImageReader.acquireNextImage 获取图片

onImageAvailableAImageReader_ImageListener

ImageReader.OnImageAvailableListeneronImageAvailable

notify

用于捕获事件(开始、进度、完成、失败)的回调,以及 CameraDevice.StateCallback 用于设备事件(错误、断开连接)。

ACameraCaptureSession_captureCallbacksV2

CameraCaptureSession.CaptureCallback

IEvsDisplay API

IEvsDisplay 接口中的所有 API 均已 废弃。OEM 应使用标准 Android 类: