android中,camera hal3与cameraservice之间通信使用哪些binder接口? binder接口都有什么方法,并说明方法功能
时间: 2024-03-11 19:44:16 浏览: 15
在 Android 中,Camera HAL3 与 CameraService 之间通信使用了 `ICameraDeviceUser` 和 `ICameraDeviceCallbacks` 两个 Binder 接口。
1. `ICameraDeviceUser` 接口
该接口的方法如下:
- `disconnect()`: 断开相机设备连接
- `submitRequest(CaptureRequest request, boolean streaming, int* surfaceId):` 向相机设备提交捕获请求
- `submitRequestList(ACaptureRequest[] requestList, boolean streaming, int* surfaceId):` 向相机设备提交捕获请求列表
- `cancelRequest(int requestId):` 取消指定的捕获请求
- `beginConfigure():` 开始相机设备的配置
- `endConfigure(int operatingMode, ACameraMetadata* outMetadata):` 结束相机设备的配置,并返回相机设备的元数据
- `createStream(OutputConfiguration outputConfiguration, int* surfaceId):` 创建一个相机数据流
- `createInputStream(int width, int height, int format, int *inputId):` 创建一个相机输入流
- `getInputSurface():` 获取输入流的 Surface
- `setInFlightRequestCount(int count):` 设置正在执行的捕获请求的数量
- `getCaptureRequestMetadataQueue():` 获取捕获请求的元数据队列
2. `ICameraDeviceCallbacks` 接口
该接口的方法如下:
- `onDeviceError(int errorCode, CaptureResultExtras resultExtras):` 相机设备出错时的回调方法
- `onDeviceIdle():` 相机设备空闲时的回调方法
- `onCaptureStarted(CaptureResultExtras resultExtras, long timestamp):` 捕获开始时的回调方法
- `onResultReceived(CameraMetadataNative result):` 捕获结果接收时的回调方法
- `onPrepared(int streamId):` 数据流准备好时的回调方法
- `onRequestQueueEmpty():` 请求队列为空时的回调方法
上述两个接口的方法主要用于控制相机设备的连接、捕获请求和数据流的处理。其中,`ICameraDeviceUser` 接口提供了相机设备的基本操作,`ICameraDeviceCallbacks` 接口则用于接收相机设备的回调信息。