diff --git a/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp b/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp
index 7b065c8c46d18cd0759c40d68c6cddd720d11a71..df9f0367b45928020f2682944fb5d8e83dae78e4 100644
--- a/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp
+++ b/src/plugins/android/src/mediacapture/qandroidcamerasession.cpp
@@ -261,17 +261,28 @@ void QAndroidCameraSession::adjustViewfinderSize(const QSize &captureSize, bool
         // search for viewfinder resolution with the same aspect ratio
         const qreal aspectRatio = qreal(captureSize.width()) / qreal(captureSize.height());
         QList<QSize> previewSizes = m_camera->getSupportedPreviewSizes();
+        qreal minAspectDiff = 1;
+        QSize closestResolution;
         for (int i = previewSizes.count() - 1; i >= 0; --i) {
             const QSize &size = previewSizes.at(i);
-            if (qAbs(aspectRatio - (qreal(size.width()) / size.height())) < 0.01) {
+            const qreal sizeAspect = qreal(size.width()) / size.height();
+            if (qFuzzyCompare(aspectRatio, sizeAspect)) {
                 adjustedViewfinderResolution = size;
                 break;
+            } else if (minAspectDiff > qAbs(sizeAspect - aspectRatio)) {
+                closestResolution = size;
+                minAspectDiff = qAbs(sizeAspect - aspectRatio);
             }
         }
 
         if (!adjustedViewfinderResolution.isValid()) {
             qWarning("Cannot find a viewfinder resolution matching the capture aspect ratio.");
-            return;
+            if (closestResolution.isValid()) {
+                adjustedViewfinderResolution = closestResolution;
+                qWarning("Using closest viewfinder resolution.");
+            } else {
+                return;
+            }
         }
     }