如何解决如何在Android的camera2中正确使用新的createCaptureSession()?
已弃用的 createCaptureSession()
方法在旧代码中的使用方式如下:
cameraDevice.createCaptureSession(Arrays.asList(surface),new CameraCaptureSession.StateCallback() {
@Override
public void onConfigured(@NonNull CameraCaptureSession session) {
if (mycameraDevice == null){
return;
}
cameraCaptureSession = session;
if (cameraDevice == null){
return;
}
captureRequestBuilder.set(CaptureRequest.CONTROL_MODE,CameraMetadata.CONTROL_MODE_AUTO);
try {
cameraCaptureSession.setRepeatingRequest(captureRequestBuilder.build(),null,mBackgroundHandler);
} catch (CameraAccessException e) {
e.printStackTrace();
}
}
@Override
public void onConfigureFailed(@NonNull CameraCaptureSession session) {
Toast.makeText(MainActivity.this,"Configuration Failed! :(",Toast.LENGTH_SHORT).show();
}
},null);
我还发现了 this question on StackOverflow,其中规定我们必须执行以下操作:
SessionConfiguration sessionConfiguration = new SessionConfiguration(SessionConfiguration.SESSION_REGULAR,Collections.singletonList(outputConfiguration),new HandlerExecutor(mCameraHandler.getLooper()),mCameraSessionListener);
cameraDevice.createCaptureSession(sessionConfiguration);
首先,这是正确的使用方式,如果是,那么什么是 outputConfiguration 以及如何正确声明它?在 Youtube 教程中,从未创建任何 outputConfiguration!
那么我需要做哪些更改才能再次使用代码?
解决方法
您没有理由不能继续使用已弃用的 createCaptureSession 版本 - 它和以前一样有效。您只需忽略 Android Studio 弃用警告。
基本上,随着时间的推移,我们不得不不断添加更多 createCaptureSession 的重载,以及越来越多的参数和可选参数的变化,而且它变得越来越多。
因此,我们创建了 SessionConfiguration 作为随着时间的推移更加灵活的配置对象(更容易向其添加新参数),设置另一个接受它的 createCaptureSession,并弃用所有先前版本以将人们引导到如果我们再次设计 API,我们今天会添加一个。
如果你想使用最新的选项,那么你可以看看 OutputConfiguration(它只是包装了输出表面列表加上一些其他可选设置) - 你可以只用 {{1 }} 在示例代码中加入 surface
调用。
但是您可以继续使用您拥有的东西 - 我们实际上不会破坏旧方法。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。