Android中的捕获请求和捕获会话
我正在使用Camera2API,并遵循一个教程。我设置了Android中的捕获请求和捕获会话,android,android-camera2,Android,Android Camera2,我正在使用Camera2API,并遵循一个教程。我设置了TextureView,并且在TextureView上设置了SurfaceTextureListener。调用侦听器时,我使用CameraManager获取要使用的摄影机id,并使用提供给我的宽度和高度设置预览大小。我还使用CameraManager打开相机,指定相机id和相机设备状态回调。在onOpenedoverride方法上,我调用了一个名为startPreview()的方法: 什么是捕获请求和捕获会话?Android状态create
TextureView
,并且在TextureView
上设置了SurfaceTextureListener
。调用侦听器时,我使用CameraManager
获取要使用的摄影机id,并使用提供给我的宽度和高度设置预览大小。我还使用CameraManager
打开相机,指定相机id和相机设备状态回调。在onOpened
override方法上,我调用了一个名为startPreview()
的方法:
什么是捕获请求和捕获会话?Android状态createCaptureRequest:
为新捕获请求创建CaptureRequest.Builder
好的,那么什么是CaptureRequest.Builder?文件:
用于捕获请求的生成器
两个定义都引用了其他定义,但没有给出任何含义 ACaptureRequest定义相机设备的参数(例如曝光、分辨率)。Camera2 API提供了模板,可以更轻松地准备最佳CaptureRequest,并针对特定相机和特定用途进行了微调 要将捕获请求传递给相机设备,我们使用CameraCaptureSession,它为单个(例如拍照)或重复(例如显示实时预览)请求提供上下文 创建会话是一项昂贵的操作,可能需要几百毫秒,因为它需要配置相机设备的内部管道并分配内存缓冲区,以便将图像发送到所需的目标
你能提供构建的源代码吗?任何链接
private void startPreview() {
SurfaceTexture surfaceTexture = mTextureView.getSurfaceTexture();
surfaceTexture.setDefaultBufferSize(mPreviewSize.getWidth(), mPreviewSize.getHeight());
Surface previewSurface = new Surface(surfaceTexture);
try {
mCaptureRequestBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
mCaptureRequestBuilder.addTarget(previewSurface);
mCameraDevice.createCaptureSession(Arrays.asList(previewSurface, mImageReader.getSurface()),
new CameraCaptureSession.StateCallback() {
@Override
public void onConfigured(CameraCaptureSession session) {
Log.d(TAG, "onConfigured: startPreview");
mPreviewCaptureSession = session;
try {
mPreviewCaptureSession.setRepeatingRequest(mCaptureRequestBuilder.build(),
null, mBackgroundHandler);
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
@Override
public void onConfigureFailed(CameraCaptureSession session) {
Log.d(TAG, "onConfigureFailed: startPreview");
}
}, null);
} catch (CameraAccessException e) {
e.printStackTrace();
}
}