Camera2 API 映射

本页总结了 Camera2 API 如何替换核心增强型视觉系统 (EVS) API。

IEvsEnumerator API

IEvsEnumerator Camera2 NDK API Camera2 Java API

openCamera

EVS openCamera 将打开和数据流配置合并在一起;Camera2 将它们分开。

ACameraManager_openCamera 然后 ACameraDevice_createCaptureSessionAImageReader 然后 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 获取图片

onImageAvailable 行,共 AImageReader_ImageListener

onImageAvailable 行(共 ImageReader.OnImageAvailableListener 行)

notify

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

ACameraCaptureSession_captureCallbacksV2

CameraCaptureSession.CaptureCallback

IEvsDisplay API

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