Качество предварительного просмотра камеры в Android плохое

Я создаю приложение «Камера» в Android и использую следующую функцию для получения размера предварительного просмотра:

private Size getOptimalPreviewSize(List<Size> sizes, int w, int h) {
    final double ASPECT_TOLERANCE = 0.1;
    double targetRatio = (double) w / h;
    if (sizes == null) return null;

    Size optimalSize = null;
    double minDiff = Double.MAX_VALUE;

    int targetHeight = h;

    // Try to find an size match aspect ratio and size
    for (Size size : sizes) {
        double ratio = (double) size.width / size.height;
        if (Math.abs(ratio - targetRatio) > ASPECT_TOLERANCE) continue;
        if (Math.abs(size.height - targetHeight) < minDiff) {
            optimalSize = size;
            minDiff = Math.abs(size.height - targetHeight);
        }
    }

    // Cannot find the one match the aspect ratio, ignore the requirement
    if (optimalSize == null) {
        minDiff = Double.MAX_VALUE;
        for (Size size : sizes) {
            if (Math.abs(size.height - targetHeight) < minDiff) {
                optimalSize = size;
                minDiff = Math.abs(size.height - targetHeight);
            }
        }
    }
    return optimalSize;
}

И я установил размер следующим образом:

Size s = getOptimalPreviewSize(parameters.getSupportedPreviewSizes(), w, h);
parameters.setPreviewSize(s.width, s.height);

Но проблема в том, что когда я запускаю свое приложение, качество предварительного просмотра камеры действительно плохое. Как получить такое же качество предварительного просмотра, как и при запуске приложения камеры по умолчанию на телефоне, другими словами, я хочу, чтобы в моем приложении был предварительный просмотр камеры с высоким разрешением.

Я даже не уверен, является ли размер предварительного просмотра причиной этой проблемы.

ПРИМЕЧАНИЕ. Функция получения размера предварительного просмотра взята из примеров программ из Android Docs.

Ответы на вопрос(1)

Ваш ответ на вопрос