Android 在更改曲面尺寸之前是否应重新打开摄影机

Android 在更改曲面尺寸之前是否应重新打开摄影机,android,android-camera,Android,Android Camera,我正在开发一个定制的摄像头应用程序,并使用FrameLyout显示预览。在应用程序的一部分中,我必须动态更改预览大小和框架布局大小。这是我在更改Framelayoutsize之前遵循的步骤 停止预览 更改预览和framelyout大小 再次启动预览 我成功地做到了这一点,但预览比以前的预览更暗,请让我知道可能的原因 在更改框架布局尺寸之前是否应重新打开相机?您可以尝试复制启动预览所做的一切,并在代码放大时将其放置在框架布局中,ecxept更改预览和框架布局,并在需要进行更改时调用新方法。这样

我正在开发一个定制的摄像头应用程序,并使用
FrameLyout
显示预览。在应用程序的一部分中,我必须动态更改
预览
大小和
框架布局
大小。这是我在更改
Framelayout
size之前遵循的步骤

  • 停止
    预览

  • 更改
    预览
    framelyout
    大小

  • 再次启动
    预览
我成功地做到了这一点,但预览比以前的预览更暗,请让我知道可能的原因


在更改
框架布局
尺寸之前是否应重新打开相机?

您可以尝试复制启动预览所做的一切,并在代码放大时将其放置在框架布局中,ecxept更改预览和框架布局,并在需要进行更改时调用新方法。这样,一切看起来都应该是一样的,因为您正在完全重新启动预览。

启动相机预览包括以下步骤:-

1.通过以下方式获取摄影机实例:
Camera-Camera=Camera.open(camerRAID)

2.将一个曲面传递给此摄影机实例,该实例将用于通过
camera.setPreviewDisplay(SurfaceHolder)

3.如果需要设置一些参数,如
Camera.Parameters params=Camera.getParameters()
params.setFlashMode(字符串)

params.setPreviewSize(int,int)

camera.setParameters(参数)

4.通过调用以下命令启动相机预览:-
camera.startPreview

这就是开始相机预览所需要做的一切

根据您的要求,如果要更改曲面和预览大小,请执行以下操作:-
a) 停止预览:-
camera.stopReview()

b) 重复上述步骤2-4。

可能不需要关闭摄像头,除非从后/前或后切换 反之亦然


你甚至不必在这里停止预览;SurfaceView会自动将相机的输出缩放到其大小,因此只要保持相同的纵横比,就可以更改帧布局大小

如果要更改纵横比,则至少需要停止预览,将预览大小更改为与Camera.Parameters.setPreviewSize匹配的纵横比,然后再次启动预览


停止和启动预览而不更改布局是否会更改预览亮度?如果是这样的话,这听起来像是该特定设备的摄像头实现中的一个bug。

您可以发布代码吗?我很难想象这会是什么样子。是的,然后运行你的新代码,控制摄像机,但至少它会工作。除此之外,请查看您的代码,看看是否有任何问题可能会扰乱预览。此问题仅在我的nexus 5(Android L)设备中出现。在进行更改之前,您可以尝试获取相机亮度,然后再次启动相机时,您可以将亮度设置为以前的状态。使用此选项可更改亮度屏幕亮度与相机亮度无关,因为我的照片变暗了我尝试过这样做。。除非我释放相机并再次打开,否则它将无法工作。您可以将代码发布到正在执行各种相机操作的位置吗?我正在更改预览大小和曲面大小,并重新启动预览,但预览仍然变暗