gpt4 book ai didi

android - 将参数设置为相机的问题

转载 作者:行者123 更新时间:2023-11-29 18:18:29 29 4
gpt4 key购买 nike

我有一个适用于相机的安卓应用程序。因此,在几次尝试之后,我开始通过创建一个实现 SurfaceHolder.Callback 的类来构建自己的相机。所有这一切的大问题是,在我的方法 surfaceChanged() 中,当我尝试将参数设置为相机时,我得到:FORCE CLOSE。

这是我的方法:

public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
Log.e(TAG, "surfaceChanged");
if (mPreviewRunning) {
mCamera.stopPreview();
}

Camera.Parameters p = mCamera.getParameters();
List<Size> sizes = p.getSupportedPictureSizes();

System.out.println("Lista de parametrii este urmatoarea:"+sizes);
Size size = sizes.get(0);
p.setPictureSize(size.width, size.height);

p.setPreviewSize(w, h);
mCamera.setParameters(p);
try {
mCamera.setPreviewDisplay(holder);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mCamera.startPreview();
mPreviewRunning = true;
}

如果我尝试上述方式:

Camera.Parameters p = mCamera.getParameters();
List<Size> sizes = p.getSupportedPictureSizes();
Size size = sizes.get(0);
p.setPictureSize(size.width, size.height);

然后 sizenull 并且我在这一行得到错误:

Size size = sizes.get(0);

如果我这样做:

public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
Log.e(TAG, "surfaceChanged");
if (mPreviewRunning) {
mCamera.stopPreview();
}

Camera.Parameters p = mCamera.getParameters();
p.setPreviewSize(w, h);
mCamera.setParameters(p);
try {
mCamera.setPreviewDisplay(holder);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mCamera.startPreview();
mPreviewRunning = true;
}

我收到以下错误:

FATAL EXCEPTION: main
java.lang.RuntimeException: setParameters failed
at android.hardware.Camera.native_setParameters(Native Method)
at android.hardware.Camera.setParameters(Camera.java:914)
at com.SplashScreen.EditPhoto.surfaceChanged(EditPhoto.java:535)
at android.view.SurfaceView.updateWindow(SurfaceView.java:554)
at android.view.SurfaceView.dispatchDraw(SurfaceView.java:353)
at android.view.ViewGroup.drawChild(ViewGroup.java:1719)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1448)
at android.view.ViewGroup.drawChild(ViewGroup.java:1719)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1448)
at android.view.View.draw(View.java:6971)
at android.widget.FrameLayout.draw(FrameLayout.java:361)

那么设置参数的正确方法是什么?谢谢!

编辑:这就是我实例化相机的方式:

public void surfaceCreated(SurfaceHolder holder) {
Log.e(TAG, "surfaceCreated");
mCamera = Camera.open();

}

最佳答案

你做的很对,我有一个类似的方法,和你的完全一样,效果很好。我可以想象您的方法失败的唯一原因是宽度和高度值。去看一下。还要检查 mCamera 对象是否已正确实例化。

我看到你调用了 getSupportedPictureSize(),你试过 getSupportedPreviewSizes() 了吗?

干杯

关于android - 将参数设置为相机的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6830723/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com