Android Don';t在纵向模式下拉伸相机预览内表面视图

Android Don';t在纵向模式下拉伸相机预览内表面视图,android,android-camera,surfaceview,Android,Android Camera,Surfaceview,我的代码所做的是从相机中拍摄图像,并在surfaceview中全屏显示,但预览是向上拉伸的(所以像瓶子这样的对象看起来比现实更高、更薄)。这是我的代码: public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { Camera.Parameters params = mCamera.getParameters(); Camera.Size result

我的代码所做的是从相机中拍摄图像,并在surfaceview中全屏显示,但预览是向上拉伸的(所以像瓶子这样的对象看起来比现实更高、更薄)。这是我的代码:

public void surfaceChanged(SurfaceHolder holder, int format, int width,
        int height) {
    Camera.Parameters params = mCamera.getParameters();
    Camera.Size result = getBestPreviewSize(params, width, height);

    params.setPreviewSize(result.width, result.height);

    params.setPictureFormat(ImageFormat.JPEG);
    params.setJpegQuality(100);
    params.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
    params.setPictureSize(dpWidth, dpWidth);
    params.setRotation(90);
    mCamera.setParameters(params);

    mCamera.startPreview();

}

public Camera.Size getBestPreviewSize(Camera.Parameters params, int width,
        int height) {

    Camera.Size result = null;
    for (Camera.Size size : params.getSupportedPreviewSizes()) {
        Log.d("size: ", size.width + ":" + size.height);
        if (size.width <= width && size.height <= height) {
            if (result == null) {
                result = size;
            } else {
                int resultArea = result.width * result.height;
                int newArea = size.width * size.height;

                if (newArea > resultArea) {
                    result = size;
                }
            }
        }
    }
    return result;
}
public void surfaceChanged(SurfaceHolder holder,int格式,int宽度,
整数高度){
Camera.Parameters params=mCamera.getParameters();
Camera.Size结果=getBestPreviewSize(参数、宽度、高度);
params.setPreviewSize(result.width、result.height);
参数setPictureFormat(ImageFormat.JPEG);
参数设置质量(100);
参数设置聚焦模式(相机参数聚焦模式连续图像);
参数setPictureSize(dpWidth,dpWidth);
参数设置旋转(90);
mCamera.setParameters(参数);
mCamera.startPreview();
}
公共摄像机.Size getBestPreviewSize(摄像机.Parameters参数,int-width,
整数高度){
Camera.Size结果=null;
对于(Camera.Size大小:params.getSupportedPreviewSizes()){
Log.d(“大小:,大小.宽度+:”+大小.高度);

如果(size.width)你的意思是像这个问题吗?是的,类似的,但我不使用横向模式,只使用纵向模式。你只是想减小SurfaceView的大小以保持相机输入的纵横比吗?我会全屏显示相机预览(在默认android相机内发生)不失真image@giozh你找到你问题的答案了吗?我也面临同样的问题