如何解决Camera2:如何在逻辑多摄像头中禁用本机物理摄像头切换
我有一个老化的应用,它使用来自相同物理相机的两个流(一个用于预览,另一个用于处理)
我最近发现使用华为 P40,我的目标表面的物理相机源(使用 OutputConfigurations
和 SessionConfiguration
设置)会根据图像中物体的距离以某种方式切换。
这款手机有一个逻辑摄像头和三个物理后置摄像头。我只对使用其中一个物理相机感兴趣,但由于我想使用手电筒,而物理相机本身没有这种功能,我需要通过逻辑相机。
我只打开逻辑相机:
...
CameraManager manager = (CameraManager) mActivity.getSystemService(Context.CAMERA_SERVICE);
...
manager.openCamera(cameraId,mStateCallback,backgroundHandler);
我像这样创建捕获会话:
...
OutputConfiguration previewOC = new OutputConfiguration(surface);
previewOC.setPhysicalCameraId(mDesiredPhysicalCameraId);
OutputConfiguration processingOC = new OutputConfiguration(mYUVImageReader.get().getSurface());
processingOC.setPhysicalCameraId(mDesiredPhysicalCameraId);
...
SessionConfiguration sessionConfiguration = new SessionConfiguration(SessionConfiguration.SESSION_REGULAR,outputList,mBackgroundProcessingExecutor,stateCallback);
mCameraDevice.createCaptureSession(sessionConfiguration);
mDesiredPhysicalCameraId
是我要使用的物理相机的 ID。
我像这样创建捕获请求:
mRequestBuilder = mCameraDevice.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW);
mRequestBuilder.addTarget(surface);
mRequestBuilder.addTarget(mYUVImageReader.get().getSurface());
...
cameraCaptureSession.setRepeatingRequest(mRequestBuilder.build(),mCaptureCallback,mBackgroundProcessingHandler);
根据我在文档中阅读的内容,我在表面上获得的图像应由所选的物理相机提供
我制作了一个简单的应用程序来选择和尝试不同的输出,我观察到根据相机聚焦的内容,输出的源相机会切换。
这是一个尝试显示效果的 gif(对于低质量感到抱歉)。从普通话(那个小橙色的东西)到香蕉再回来使源在“常规”相机(“2”)和长焦相机(“6”)之间交替!!!!
这怎么可能?就好像光学变焦功能始终处于开启状态并覆盖所有内容。那么有没有办法禁用这种行为?是华为特有的还是bug?
干杯
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。