¿Cómo puedo configurar el tamaño de la vista previa de la cámara en relación de aspecto al cuadrado en un SurfaceView cuadrado (como Instagram)

Estoy tratando de desarrollar mi propia actividad con la cámara, pero tengo un problema que no puedo resolver ...

Lo que quiero es algo muy similar al marco de fotos de instagram, y esto es lo que obtengo:

Cuando debería obtener algo como esto:

y...

cuando debería obtener algo como:

Creo que estoy administrando bien la vista previa de SurfaceView y la cámara, solo usando

Camera.Parameters parameters = camera.getParameters();
camera.setDisplayOrientation(90);

y SurfaceView personalizado:

public class SquaredSurfaceView extends SurfaceView {

private int width;
private int height;

public SquaredSurfaceView(Context context) {
    super(context);
}

public SquaredSurfaceView(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public SquaredSurfaceView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    width = MeasureSpec.getSize(widthMeasureSpec);
    height = width;
    setMeasuredDimension(width, width);
}

public int getViewWidth() {
    return width;
}

public int getViewHeight() {
    return height;
}

}

¿Qué estoy haciendo mal? :-(

Respuestas a la pregunta(6)

Su respuesta a la pregunta