diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 0e506183..602d11b2 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip diff --git a/android/src/main/java/com/github/rmtmckenzie/qrmobilevision/QrCameraC2.java b/android/src/main/java/com/github/rmtmckenzie/qrmobilevision/QrCameraC2.java index db9f20d7..3e2368a6 100644 --- a/android/src/main/java/com/github/rmtmckenzie/qrmobilevision/QrCameraC2.java +++ b/android/src/main/java/com/github/rmtmckenzie/qrmobilevision/QrCameraC2.java @@ -28,6 +28,7 @@ import java.util.ArrayList; import java.util.Arrays; +import java.util.Collections; import java.util.Comparator; import java.util.HashSet; import java.util.List; @@ -400,6 +401,8 @@ private Size getAppropriateSize(Size[] sizes) { } private Size[] sortSizesAscending(Size[] sizes) { + // Java code not supported on older versions of Android + /* Comparator compareWidth = new Comparator() { public int compare(Size a, Size b) { return Integer.compare(a.getWidth(), b.getWidth()); @@ -412,6 +415,27 @@ public int compare(Size a, Size b) { }; Arrays.sort(sizes, compareWidth.thenComparing(compareHeight)); + */ + Comparator areaComparator = new Comparator() { + + public int compare(Size size, Size size2) { + if (size.equals(size2)) { + return 0; + } + + long width = size.getWidth(); + long width2 = size2.getWidth(); + long area = width * size.getHeight(); + long area2 = width2 * size2.getHeight(); + + if (area == area2) { + return (width > width2) ? 1 : -1; + } + + return (area > area2) ? 1 : -1; + } + }; + Collections.sort(Arrays.asList(sizes), areaComparator); return sizes; } } diff --git a/android/src/main/java/com/github/rmtmckenzie/qrmobilevision/QrDetector.java b/android/src/main/java/com/github/rmtmckenzie/qrmobilevision/QrDetector.java index 0b6379bd..c99ee284 100644 --- a/android/src/main/java/com/github/rmtmckenzie/qrmobilevision/QrDetector.java +++ b/android/src/main/java/com/github/rmtmckenzie/qrmobilevision/QrDetector.java @@ -1,9 +1,6 @@ package com.github.rmtmckenzie.qrmobilevision; -import android.util.Log; - -import androidx.annotation.GuardedBy; -import androidx.annotation.NonNull; +import java.util.List; import com.google.android.gms.tasks.OnFailureListener; import com.google.android.gms.tasks.OnSuccessListener; @@ -13,7 +10,9 @@ import com.google.mlkit.vision.barcode.common.Barcode; import com.google.mlkit.vision.common.InputImage; -import java.util.List; +import android.util.Log; +import androidx.annotation.GuardedBy; +import androidx.annotation.NonNull; /** * Allows QrCamera classes to send frames to a Detector @@ -74,7 +73,8 @@ private void processFrame(Frame frame) { .addOnSuccessListener(this) .addOnFailureListener(this); } - frame.close(); + // commented out as it was causing an issue with "IllegalStateException: Image is already closed" error + //frame.close(); } @Override diff --git a/example/android/app/src/main/AndroidManifest.xml b/example/android/app/src/main/AndroidManifest.xml index 22b1f888..c380d429 100644 --- a/example/android/app/src/main/AndroidManifest.xml +++ b/example/android/app/src/main/AndroidManifest.xml @@ -17,7 +17,7 @@ android:label="qr_mobile_vision_example" android:allowBackup="false"> =3.0.0 <5.0.0' false_secrets: