diff --git a/README.md b/README.md index adf9c5e..98849bb 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,6 @@ ZXingLite for Android 是ZXing的精简极速版,基于ZXing库优化扫码和 repositories { //... mavenCentral() - maven { url 'https://jitpack.io' } } ``` @@ -39,7 +38,7 @@ ZXingLite for Android 是ZXing的精简极速版,基于ZXing库优化扫码和 ```gradle // AndroidX 版本 - implementation 'com.github.jenly1314:zxing-lite:3.0.1' + implementation 'com.github.jenly1314:zxing-lite:3.1.0' ``` @@ -47,7 +46,9 @@ ZXingLite for Android 是ZXing的精简极速版,基于ZXing库优化扫码和 #### 关于ZXingLite版本与编译的SDK版本要求 -> 使用 **v3.x** 以上版本时,要求 **compileSdkVersion >= 33** +> 使用 **v3.1.x** 以上版本时,要求 **compileSdkVersion >= 34** + +> 使用 **v3.0.x** 以上版本时,要求 **compileSdkVersion >= 33** > 如果 **compileSdkVersion < 33** 请使用 [**v2.x版本**](https://github.com/jenly1314/ZXingLite/tree/2.x/) @@ -167,7 +168,7 @@ public class QRCodeScanActivity extends BarcodeCameraScanActivity { > **BarcodeCameraScanFragment** 的使用方式与之类似。 -更多使用详情,请查看[app](app)中的源码使用示例或直接查看[API帮助文档](https://jenly1314.github.io/projects/ZXingLite/doc/) +更多使用详情,请查看[app](app)中的源码使用示例或直接查看[API帮助文档](https://jitpack.io/com/github/jenly1314/ZXingLite/latest/javadoc/) ### 其他 @@ -188,7 +189,7 @@ compileOptions { ```gradle dependencies { - coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.2.2' + coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.2.3' } ``` @@ -201,6 +202,12 @@ dependencies { ## 版本记录 +#### v3.1.0:2023-12-31 +* 更新CameraScan至v1.1.0 +* 更新zxing至v3.5.2 +* 更新compileSdkVersion至34 +* 更新Gradle至v8.0 + #### v3.0.1:2023-9-13 * 更新CameraScan至v1.0.1 * 更新ViewfinderView至v1.1.0 diff --git a/app/build.gradle b/app/build.gradle index f04cd7a..1556d96 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -23,16 +23,17 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } - - lintOptions { - abortOnError false - } - compileOptions { coreLibraryDesugaringEnabled true sourceCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11 } + kotlinOptions { + jvmTarget = JavaVersion.VERSION_11.toString() + } + lintOptions { + abortOnError false + } } dependencies { diff --git a/app/release/app-release.apk b/app/release/app-release.apk index 8ffa951..11da161 100644 Binary files a/app/release/app-release.apk and b/app/release/app-release.apk differ diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json index a01f1af..3e1dfdd 100644 --- a/app/release/output-metadata.json +++ b/app/release/output-metadata.json @@ -11,8 +11,8 @@ "type": "SINGLE", "filters": [], "attributes": [], - "versionCode": 39, - "versionName": "3.0.1", + "versionCode": 40, + "versionName": "3.1.0", "outputFile": "app-release.apk" } ], diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 435e287..beb35dd 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,12 +1,19 @@ - + - - - - - + + + + + + + + + ) { super.initCameraScan(cameraScan) @@ -54,11 +54,8 @@ class MultiFormatScanActivity : BarcodeCameraScanActivity() { } private fun showToast(text: String) { - if(toast == null) { - toast = Toast.makeText(this, text, Toast.LENGTH_SHORT) - } else { - toast?.setText(text) - } + toast?.cancel() + toast = Toast.makeText(this, text, Toast.LENGTH_SHORT) toast?.show() } } \ No newline at end of file diff --git a/build.gradle b/build.gradle index f9ffa60..479e20d 100644 --- a/build.gradle +++ b/build.gradle @@ -1,10 +1,10 @@ buildscript { apply from: 'versions.gradle' -}// Top-level build file where you can add configuration options common to all sub-projects/modules. +} +// Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { - id 'com.android.application' version '7.4.2' apply false - id 'com.android.library' version '7.4.2' apply false - id 'org.jetbrains.kotlin.android' version '1.8.0' apply false -// id 'org.jetbrains.dokka' version '1.7.0' apply false - id 'com.vanniktech.maven.publish' version '0.22.0' apply false + id 'com.android.application' version '8.1.2' apply false + id 'com.android.library' version '8.1.2' apply false + id 'org.jetbrains.kotlin.android' version '1.8.10' apply false + id 'com.vanniktech.maven.publish' version '0.25.3' apply false } \ No newline at end of file diff --git a/change_log.md b/change_log.md index 5413532..10cc12a 100644 --- a/change_log.md +++ b/change_log.md @@ -1,5 +1,11 @@ ## 版本记录 +#### v3.1.0:2023-12-31 +* 更新CameraScan至v1.1.0 +* 更新zxing至v3.5.2 +* 更新compileSdkVersion至34 +* 更新Gradle至v8.0 + #### v3.0.1:2023-9-13 * 更新CameraScan至v1.0.1 * 更新ViewfinderView至v1.1.0 diff --git a/gitpack.yml b/gitpack.yml deleted file mode 100644 index adb3fe1..0000000 --- a/gitpack.yml +++ /dev/null @@ -1,2 +0,0 @@ -jdk: - - openjdk11 diff --git a/gradle.properties b/gradle.properties index 4c60c92..bcf1d1d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -14,8 +14,12 @@ org.gradle.jvmargs = -Xmx1536m android.useAndroidX=true android.enableJetifier=true -VERSION_NAME=3.0.1 -VERSION_CODE=39 +android.defaults.buildfeatures.buildconfig=true +android.nonTransitiveRClass=false +android.nonFinalResIds=false + +VERSION_NAME=3.1.0 +VERSION_CODE=40 GROUP=com.github.jenly1314 POM_DESCRIPTION=ZXingLite for Android @@ -47,3 +51,4 @@ RELEASE_SIGNING_ENABLED=false + diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 4fc80b3..5093892 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/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-7.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip diff --git a/jitpack.yml b/jitpack.yml new file mode 100644 index 0000000..efde7bf --- /dev/null +++ b/jitpack.yml @@ -0,0 +1,2 @@ +jdk: + - openjdk17 diff --git a/versions.gradle b/versions.gradle index 5ea7229..d6d30fd 100644 --- a/versions.gradle +++ b/versions.gradle @@ -1,52 +1,43 @@ -//App +// App def app_version = [:] -app_version.versionCode = 39 -app_version.versionName = "3.0.1" +app_version.versionCode = 40 +app_version.versionName = "3.1.0" ext.app_version = app_version -//build version +// build version def build_versions = [:] build_versions.minSdk = 21 -build_versions.targetSdk = 33 -build_versions.compileSdk = 33 -build_versions.buildTools = "33.0.0" +build_versions.targetSdk = 34 +build_versions.compileSdk = 34 +build_versions.buildTools = "34.0.0" ext.build_versions = build_versions ext.deps = [:] // App dependencies def versions = [:] -//AndroidX +// AndroidX versions.material = "1.2.0" versions.appcompat = "1.1.0" versions.constraintLayout = "2.0.4" -//test +// test versions.junit = "4.13.2" versions.androidExtJunit = "1.1.3" versions.test = "1.2.0" versions.runner = "1.2.0" versions.espresso = "3.4.0" -versions.bintray_release = "0.9.2" -versions.mavenPublish = '0.22.0' -versions.gralde = "7.4.2" - -//zxing -versions.zxing = "3.5.1" -versions.desugar_jdk_libs = "1.2.2" - - ext.versions = versions -//androidx +// androidx def androidx = [:] androidx.design = "com.google.android.material:material:$versions.material" androidx.appcompat = "androidx.appcompat:appcompat:$versions.appcompat" androidx.constraintlayout = "androidx.constraintlayout:constraintlayout:$versions.constraintLayout" deps.androidx = androidx -//test +// test def test = [:] test.junit = "junit:junit:$versions.junit" test.android_ext_junit = "androidx.test.ext:junit:$versions.androidExtJunit" @@ -55,14 +46,16 @@ test.runner = "androidx.test:runner:$versions.runner" test.espresso = "androidx.test.espresso:espresso-core:$versions.espresso" deps.test = test -//zxing -deps.zxing = "com.google.zxing:core:$versions.zxing" +// zxing +deps.zxing = "com.google.zxing:core:3.5.2" -deps.camera_scan = "com.github.jenly1314:camera-scan:1.0.1" +// CameraScan +deps.camera_scan = "com.github.jenly1314:camera-scan:1.1.0" +// ViewfinderView deps.viewfinderview = "com.github.jenly1314:viewfinderview:1.1.0" -//desugar_jdk -deps.desugar_jdk = "com.android.tools:desugar_jdk_libs:$versions.desugar_jdk_libs" +// desugar_jdk +deps.desugar_jdk = "com.android.tools:desugar_jdk_libs:1.2.3" ext.deps = deps diff --git a/zxing-lite/src/main/AndroidManifest.xml b/zxing-lite/src/main/AndroidManifest.xml index 259e164..8bdb7e1 100644 --- a/zxing-lite/src/main/AndroidManifest.xml +++ b/zxing-lite/src/main/AndroidManifest.xml @@ -1,5 +1,4 @@ - + diff --git a/zxing-lite/src/main/java/com/king/zxing/analyze/ImageAnalyzer.java b/zxing-lite/src/main/java/com/king/zxing/analyze/ImageAnalyzer.java index b222d98..6d2294d 100644 --- a/zxing-lite/src/main/java/com/king/zxing/analyze/ImageAnalyzer.java +++ b/zxing-lite/src/main/java/com/king/zxing/analyze/ImageAnalyzer.java @@ -6,8 +6,8 @@ import com.google.zxing.Result; import com.king.camera.scan.AnalyzeResult; import com.king.camera.scan.FrameMetadata; import com.king.camera.scan.analyze.Analyzer; +import com.king.camera.scan.util.ImageUtils; -import java.nio.ByteBuffer; import java.util.Queue; import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.atomic.AtomicBoolean; @@ -38,7 +38,7 @@ public abstract class ImageAnalyzer implements Analyzer { public abstract Result analyze(byte[] data, int width, int height); @Override - public void analyze(@NonNull ImageProxy imageProxy, @NonNull OnAnalyzeListener> listener) { + public void analyze(@NonNull ImageProxy imageProxy, @NonNull OnAnalyzeListener listener) { if (!joinQueue.get()) { int imageSize = imageProxy.getWidth() * imageProxy.getHeight(); @@ -56,7 +56,7 @@ public abstract class ImageAnalyzer implements Analyzer { int width = imageProxy.getWidth(); int height = imageProxy.getHeight(); - yuv_420_888toNv21(imageProxy, nv21Data); + ImageUtils.yuv_420_888toNv21(imageProxy, nv21Data); Result result; if (rotation == 90 || rotation == 270) { @@ -88,59 +88,4 @@ public abstract class ImageAnalyzer implements Analyzer { } } - - /** - * YUV420_888转NV21 - * - * @param image - * @param nv21 - */ - private void yuv_420_888toNv21(@NonNull ImageProxy image, byte[] nv21) { - ImageProxy.PlaneProxy yPlane = image.getPlanes()[0]; - ImageProxy.PlaneProxy uPlane = image.getPlanes()[1]; - ImageProxy.PlaneProxy vPlane = image.getPlanes()[2]; - - ByteBuffer yBuffer = yPlane.getBuffer(); - ByteBuffer uBuffer = uPlane.getBuffer(); - ByteBuffer vBuffer = vPlane.getBuffer(); - yBuffer.rewind(); - uBuffer.rewind(); - vBuffer.rewind(); - - int ySize = yBuffer.remaining(); - - int position = 0; - - // Add the full y buffer to the array. If rowStride > 1, some padding may be skipped. - for (int row = 0; row < image.getHeight(); row++) { - yBuffer.get(nv21, position, image.getWidth()); - position += image.getWidth(); - yBuffer.position(Math.min(ySize, yBuffer.position() - image.getWidth() + yPlane.getRowStride())); - } - - int chromaHeight = image.getHeight() / 2; - int chromaWidth = image.getWidth() / 2; - int vRowStride = vPlane.getRowStride(); - int uRowStride = uPlane.getRowStride(); - int vPixelStride = vPlane.getPixelStride(); - int uPixelStride = uPlane.getPixelStride(); - - // Interleave the u and v frames, filling up the rest of the buffer. Use two line buffers to - // perform faster bulk gets from the byte buffers. - byte[] vLineBuffer = new byte[vRowStride]; - byte[] uLineBuffer = new byte[uRowStride]; - for (int row = 0; row < chromaHeight; row++) { - vBuffer.get(vLineBuffer, 0, Math.min(vRowStride, vBuffer.remaining())); - uBuffer.get(uLineBuffer, 0, Math.min(uRowStride, uBuffer.remaining())); - int vLineBufferPosition = 0; - int uLineBufferPosition = 0; - for (int col = 0; col < chromaWidth; col++) { - nv21[position++] = vLineBuffer[vLineBufferPosition]; - nv21[position++] = uLineBuffer[uLineBufferPosition]; - vLineBufferPosition += vPixelStride; - uLineBufferPosition += uPixelStride; - } - } - } - }