Android Camera2学习笔记——API

Android Camera2学习笔记——API

      • CameraManager
        • 获取某颗Camera的特性API
        • 是否支持多颗Camera同时创建Session的API
        • 枚举Camera API
        • 打开Camera API
        • 监控Camera是否可用API
        • Torch控制API
      • CameraCharacteristics
      • CameraDevice
        • 关闭相机API
        • 获取Camera ID API
        • 创建CaptureRequest API
        • 创建CameraCaptureSession API
        • 音频限制 API
      • SessionConfiguration
      • CameraCaptureSession
        • 送CaptureRequest给Camera底层 API
        • 停止Repeating CaptureRequest API
        • 切换到离线会话API
        • 图像数据再处理API
        • 启动性能优化API
        • 动态更新OutputConfiguration API
        • 关闭会话 API
      • CaptureRequest
      • CaptureResult
      • TotalCaptureResult

Android Camera2学习笔记——API_第1张图片

CameraManager

一个系统服务,通过Context.getSystemService来获取
例如在Activity中获取

val cameraManager = getSystemService(CAMERA_SERVICE)

该服务提供以下功能:

  • 获取某颗Camera的特性
  • 是否支持多颗Camera同时创建Session
  • 枚举Camera
  • 打开Camera
  • 监控Camera是否可用
  • Torch控制
获取某颗Camera的特性API
Description Added API
getCameraCharacteristics 查询某颗Camera的能力,对象不可更改 API 21
getCameraExtensionCharacteristics 查询某颗Camera的Extension能力 API 31
是否支持多颗Camera同时创建Session的API
Description Added API
getConcurrentCameraIds 获取支持同时配置Session的Camera列表 API 30
getConcurrentSessionConfigurationSupported 指定的Camera和SessionConfiguration组合是否支持同时配置Session API 30
枚举Camera API
Description Added API
getCameraIdList 获取当前可用的Camera ID列表 API 21
打开Camera API
Description Added API
openCamera 打开指定ID的Camera设备 API 21
监控Camera是否可用API
Description Added API
registerAvailability 注册一个Callback,监听Camera可用状态 API 21
unregisterAvailability 注销Callback API 21
Torch控制API
Description Added API
registerTorchCallback 注册一个Callback,监听Torch Flash模式状态 API 23
unregisterTorchCallback 注销Callback API 23
setTorchMode 打开/关闭指定Camera的Flash Torch模式 API 23

CameraCharacteristics

描述一个CameraDevice的属性/能力

Description Added API
get(Key key) 根据Key获取对应的Value值 API 21
getKeys() 获取所有CameraCharacteristics支持的Key列表 API 21
getAvailableCaptureRequestKeys() 获取所有CaptureReuqest支持的Key列表 API 21
getAvailableCaptureResultKeys() 获取所有CaptureResult支持的Key列表 API 21
getAvailableSessionKeys() 获取初始化Session时可设置的Key列表,是CaptureRequest支持的Key列表的子集 API 28
getPhysicalCameraIds() 获取当前Logical Camera对应的Physical Camera列表 API 28
getAvailablePhysicalCameraRequestKeys() 获取当前Physical Camera可独立设置的Key列表 API 28
getKeysNeedingPermission() 获取需要Camera权限才能访问的Key列表 API 29
getRecommendedStreamConfigurationMap(int usecase) 指定usecase下,推荐使用的Stream配置信息 API 29

CameraDevice

代表一个已打开的Camera设备,提供如下功能:

  • 关闭相机
  • 获取Camera ID
  • 创建CaptureRequest
  • 创建CameraCaptureSession
  • 音频限制
关闭相机API
Description Added API
close 以最快的速度关闭Camera API 21
获取Camera ID API
Description Added API
getId 获取当前Camera对应的ID API 21
创建CaptureRequest API
Description Added API
createCaptureRequest(int templateType) 根据templateType创建CaptureRequest.Builder API 21
createCaptureRequest(int templateType, Set physicalCameraIdSet) 根据templateType和physicalCameraIdSet创建CaptureRequest.Builder API 28
createReprocessCaptureRequest(int templateType) 根据TotalCaptureResult创建用于再处理的CaptureRequest.Builder API 23
创建CameraCaptureSession API
Description Added API
createCaptureSession(SessionConfiguration config) 根据SessionConfiguration创建CameraCaptureSession API 28
createExtensionSession(ExtensionSessionConfiguration extensionConfiguration) 创建CameraExtensionSession API 31
isSessionConfigurationSupported 指定的SessionConfiguration是否支持 API 29
音频限制 API
Description Added API
setCameraAudioRestriction(int mode) 设置音频限制模式,可屏蔽ringtones,alarms or notifications 的震动和声音 API 30
getCameraAudioRestriction() 获取当前使用的音频限制模式 API 30

用途:

  • 支持OIS设备对震动很敏感,通常情况下不允许震动,可以通过setCameraAudioRestriction来屏蔽震动和声音
  • 录像过程中不想被不可预制的声音干扰

SessionConfiguration

创建Session时使用的配置参数

Description Added API
SessionConfiguration 根据SessionType和OutputConfiguration创建SessionConfiguration API 28
setInputConfiguration 为支持再处理(Reprocess)的Session设置输入配置信息 API 28
setSessionParameters 设置初始化Session时要使用的参数 API 28
getInputConfiguration 获取InputConfiguration API 28
getOntputConfigurations 获取OntputConfiguration列表 API 28
getSessionParameters 获取SessionParameters参数(CaptureRequest) API 28
getSessionType 获取Session类型,可以为SESSION_REGULAR或SESSION_HIGH_SPEED API 28
getStateCallback 获取Session的状态Callback API 28

CameraCaptureSession

代表一个具体的相机回话
建立了与Camera设备的通道,之后对于Camera设备的控制都是通过该通道来完成

  • CameraCaptureSession
    • 从Camera设备获取数据流
    • 对图像数据进行再处理(Reprocess)
  • CameraConstrainedHighSpeedCaptureSession
    • 从Camera设备获取高帧率的数据流(通常是功能受限的)
  • CameraOffineSession
    • 离线的相机会话,应用场景:快拍

提供如下功能:

  1. 送CaptureRequest给Camera底层
  2. 停止Repeating CaptureRequest
  3. 切换到离线会话
  4. 图像数据再处理(Reprocess)
  5. 启动性能优化
    - 延迟Surface
    - 预分配Buffer
  6. 动态更新Output Configuration
  7. 关闭会话
送CaptureRequest给Camera底层 API
Description Added API
capture 送一个CaptureRequest给Camera底层,通过Handler指定回调线程 API 21
captureSingleRequest 送一个CaptureRequest给Camera底层,通过Executor指定回调线程 API 28
captureBurst 送一组CaptureRequest给Camera底层,通过Handler指定回调线程 API 21
captureBurstRequests 送一组CaptureRequest给Camera底层,通过Executor指定回调线程 API 28
setRepeatingRequest 送一个Repeating CaptureRequest给Camera底层,通过Handler指定回调线程 API 21
setSingleRepeatingRequest 送一个Repeating CaptureRequest给Camera底层,通过Executor指定回调线程 API 28
setRepeatingBurst 送一组Repeating CaptureRequest给Camera底层,通过Handler指定回调线程 API 21
setRepeatingBurstRequests 送一组Repeating CaptureRequest给Camera底层,通过Executor指定回调线程 API 28
停止Repeating CaptureRequest API
Description Added API
stopRepeating 通知CameraService停止向HAL送Repeating CaptureRequest API 21
abortCaptures 通知CameraService停止向HAL送Repeating CaptureRequest; HAL放弃还未处理完的CaptureRequest API 21
切换到离线会话API
Description Added API
supportsOffineProcessing(Surface surface) 指定的Surface是否支持离线处理模式 API 30
switchToOffine 将CameraCaptureSession切换到离线处理模式 API 30
图像数据再处理API
Description Added API
isReprocessable 是否支持再处理 API 23
getInputSurface 获取再处理的Buffer输入Surface API 23
启动性能优化API
Description Added API
prepare(Surface surface) 预分配指定Surface中的所有Buffer API 23
finalizeOutputConfiguration 将已Ready的延迟Surface配置下去,必须在送CaptureRequest前调用 API 26
动态更新OutputConfiguration API
Description Added API
updateOutputConfiguration 动态更新OutputConfiguration API 28
关闭会话 API
Description Added API
close 关闭CameraCaptureSession API 21

CaptureRequest

表示一次图像请求

Description Added API
getKeys 获取当前CaptureRequest包含的Key列表 API 21
getTag 获取CaptureRequest的Tag, 这个Tag通常是App用来标识某个CaptureRequest API 21
get 获取指定key的值 API 21
isReprocess 是否是一个再处理的CaptureRequest API 23

CaptureResult

Description Added API
getKeys 获取当前CaptureResult包含的Key列表 API 21
get 获取指定key的值 API 21
getRequest 获取当前CaptureResult对应的CaptureRequest API 21
getFrameNumber 获取Frame Number,从0开始单调递增 API 21
getSequenceId 获取Sequence ID, 从0开始单调递增,当有一组新的CaptureRequest送给CameraDevice时会+1(调用CameraDeviceClient.submitRequestList时,函数内部会++) API 21
getCameraId 获取Camera ID API 31

TotalCaptureResult

每当通过CameraDevice完成一次CaptureRequest之后会生成一个TotalCaptureResult对象,该对象包含了此次抓取动作所产生的所有信息

Description Added API
getPartialResults 获取Partial CaptureResult列表 API 21
getPhysicalCameraResults 获取Physical Camera的CaptureResult列表,已过时 API 28
getPhysicalCameraTotalResults 获取Physical Camera的TotalCaptureResult API 31

你可能感兴趣的:(Android,Camera,android,java)