Jak ustawić rozmiar podglądu kamery na kwadratowy współczynnik proporcji w kwadratowym widoku powierzchni (np. Instagram)

Próbuję rozwinąć własną aktywność aparatu, ale mam problem, którego nie jestem w stanie rozwiązać ...

To, czego chcę, jest czymś bardzo podobnym do ramki na zdjęcia z instagramu i to właśnie otrzymuję:

Kiedy powinienem otrzymać coś takiego:

i...

kiedy powinienem dostać coś takiego:

Myślę, że dobrze zarządzam podglądem SurfaceView i kamerą, tylko używając

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

i niestandardowy widok powierzchni:

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;
}

}

Co robię źle? :-(

questionAnswers(6)

yourAnswerToTheQuestion