在Android Camera2 API中,createCaptureSession
方法已被标记为弃用,并且建议使用setRepeatingRequest
方法替代。下面是一个示例解决方法,展示如何使用setRepeatingRequest
方法创建CameraCaptureSession。
private CameraDevice mCameraDevice;
private void createCameraSession() {
try {
// 创建CameraCaptureSession
mCameraDevice.createCaptureSession(Arrays.asList(mPreviewSurface), new CameraCaptureSession.StateCallback() {
@Override
public void onConfigured(@NonNull CameraCaptureSession cameraCaptureSession) {
// CameraCaptureSession创建成功后的回调方法
// 可以在这里进行后续操作,比如设置需要的参数、开始预览等
try {
// 创建CaptureRequest.Builder对象
CaptureRequest.Builder captureRequestBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
// 设置预览的Surface作为CaptureRequest的目标
captureRequestBuilder.addTarget(mPreviewSurface);
// 设置连续预览请求,并开始预览
cameraCaptureSession.setRepeatingRequest(captureRequestBuilder.build(), null, null);
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
@Override
public void onConfigureFailed(@NonNull CameraCaptureSession cameraCaptureSession) {
// CameraCaptureSession创建失败后的回调方法
}
}, null);
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
在上面的代码示例中,mCameraDevice
是一个已经打开的CameraDevice对象,mPreviewSurface
是用于预览的Surface对象。首先,我们通过createCaptureSession
方法创建CameraCaptureSession,并在回调方法onConfigured
中设置预览的相关参数,并使用setRepeatingRequest
方法开始预览。如果创建CameraCaptureSession失败,会调用回调方法onConfigureFailed
。
请注意,上述示例只是一个简单的使用setRepeatingRequest
方法的示例,你可以根据自己的实际需求进行修改和扩展。