发布v3.1.0

This commit is contained in:
Jenly
2023-12-31 16:28:46 +08:00
parent 7eb0543085
commit 094734276f
16 changed files with 88 additions and 125 deletions

View File

@@ -31,7 +31,6 @@ ZXingLite for Android 是ZXing的精简极速版基于ZXing库优化扫码和
repositories { repositories {
//... //...
mavenCentral() mavenCentral()
maven { url 'https://jitpack.io' }
} }
``` ```
@@ -39,7 +38,7 @@ ZXingLite for Android 是ZXing的精简极速版基于ZXing库优化扫码和
```gradle ```gradle
// AndroidX 版本 // 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版本要求 #### 关于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/) > 如果 **compileSdkVersion < 33** 请使用 [**v2.x版本**](https://github.com/jenly1314/ZXingLite/tree/2.x/)
@@ -167,7 +168,7 @@ public class QRCodeScanActivity extends BarcodeCameraScanActivity {
> **BarcodeCameraScanFragment** 的使用方式与之类似。 > **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 ```gradle
dependencies { 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.02023-12-31
* 更新CameraScan至v1.1.0
* 更新zxing至v3.5.2
* 更新compileSdkVersion至34
* 更新Gradle至v8.0
#### v3.0.12023-9-13 #### v3.0.12023-9-13
* 更新CameraScan至v1.0.1 * 更新CameraScan至v1.0.1
* 更新ViewfinderView至v1.1.0 * 更新ViewfinderView至v1.1.0

View File

@@ -23,16 +23,17 @@ android {
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
} }
} }
lintOptions {
abortOnError false
}
compileOptions { compileOptions {
coreLibraryDesugaringEnabled true coreLibraryDesugaringEnabled true
sourceCompatibility JavaVersion.VERSION_11 sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11 targetCompatibility JavaVersion.VERSION_11
} }
kotlinOptions {
jvmTarget = JavaVersion.VERSION_11.toString()
}
lintOptions {
abortOnError false
}
} }
dependencies { dependencies {

Binary file not shown.

View File

@@ -11,8 +11,8 @@
"type": "SINGLE", "type": "SINGLE",
"filters": [], "filters": [],
"attributes": [], "attributes": [],
"versionCode": 39, "versionCode": 40,
"versionName": "3.0.1", "versionName": "3.1.0",
"outputFile": "app-release.apk" "outputFile": "app-release.apk"
} }
], ],

View File

@@ -1,12 +1,19 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android">
package="com.king.zxing.app">
<uses-permission android:name="android.permission.INTERNET"/> <uses-feature
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> android:name="android.hardware.camera"
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> android:required="false" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.FLASHLIGHT" />
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission
android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<application <application
android:allowBackup="true" android:allowBackup="true"

View File

@@ -18,6 +18,9 @@ package com.king.zxing.app;
import android.Manifest; import android.Manifest;
import android.content.Intent; import android.content.Intent;
import android.graphics.Bitmap; import android.graphics.Bitmap;
import android.graphics.ImageDecoder;
import android.net.Uri;
import android.os.Build;
import android.provider.MediaStore; import android.provider.MediaStore;
import android.os.Bundle; import android.os.Bundle;
import android.view.View; import android.view.View;
@@ -29,6 +32,7 @@ import com.king.camera.scan.util.LogUtils;
import com.king.camera.scan.util.PermissionUtils; import com.king.camera.scan.util.PermissionUtils;
import com.king.zxing.util.CodeUtils; import com.king.zxing.util.CodeUtils;
import java.io.IOException;
import java.util.concurrent.ExecutorService; import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors; import java.util.concurrent.Executors;
@@ -78,11 +82,10 @@ public class MainActivity extends AppCompatActivity {
} }
private void showToast(String text) { private void showToast(String text) {
if (toast == null) { if(toast != null) {
toast = Toast.makeText(this, text, Toast.LENGTH_SHORT); toast.cancel();
}else {
toast.setText(text);
} }
toast = Toast.makeText(this, text, Toast.LENGTH_SHORT);
toast.show(); toast.show();
} }

View File

@@ -15,7 +15,7 @@ import com.king.zxing.analyze.MultiFormatAnalyzer
*/ */
class MultiFormatScanActivity : BarcodeCameraScanActivity() { class MultiFormatScanActivity : BarcodeCameraScanActivity() {
var toast: Toast? = null private var toast: Toast? = null
override fun initCameraScan(cameraScan: CameraScan<Result>) { override fun initCameraScan(cameraScan: CameraScan<Result>) {
super.initCameraScan(cameraScan) super.initCameraScan(cameraScan)
@@ -54,11 +54,8 @@ class MultiFormatScanActivity : BarcodeCameraScanActivity() {
} }
private fun showToast(text: String) { private fun showToast(text: String) {
if(toast == null) { toast?.cancel()
toast = Toast.makeText(this, text, Toast.LENGTH_SHORT) toast = Toast.makeText(this, text, Toast.LENGTH_SHORT)
} else {
toast?.setText(text)
}
toast?.show() toast?.show()
} }
} }

View File

@@ -1,10 +1,10 @@
buildscript { buildscript {
apply from: 'versions.gradle' apply from: 'versions.gradle'
}// Top-level build file where you can add configuration options common to all sub-projects/modules. }
plugins { // Top-level build file where you can add configuration options common to all sub-projects/modules.
id 'com.android.application' version '7.4.2' apply false plugins {
id 'com.android.library' version '7.4.2' apply false id 'com.android.application' version '8.1.2' apply false
id 'org.jetbrains.kotlin.android' version '1.8.0' apply false id 'com.android.library' version '8.1.2' apply false
// id 'org.jetbrains.dokka' version '1.7.0' apply false id 'org.jetbrains.kotlin.android' version '1.8.10' apply false
id 'com.vanniktech.maven.publish' version '0.22.0' apply false id 'com.vanniktech.maven.publish' version '0.25.3' apply false
} }

View File

@@ -1,5 +1,11 @@
## 版本记录 ## 版本记录
#### v3.1.02023-12-31
* 更新CameraScan至v1.1.0
* 更新zxing至v3.5.2
* 更新compileSdkVersion至34
* 更新Gradle至v8.0
#### v3.0.12023-9-13 #### v3.0.12023-9-13
* 更新CameraScan至v1.0.1 * 更新CameraScan至v1.0.1
* 更新ViewfinderView至v1.1.0 * 更新ViewfinderView至v1.1.0

View File

@@ -1,2 +0,0 @@
jdk:
- openjdk11

View File

@@ -14,8 +14,12 @@ org.gradle.jvmargs = -Xmx1536m
android.useAndroidX=true android.useAndroidX=true
android.enableJetifier=true android.enableJetifier=true
VERSION_NAME=3.0.1 android.defaults.buildfeatures.buildconfig=true
VERSION_CODE=39 android.nonTransitiveRClass=false
android.nonFinalResIds=false
VERSION_NAME=3.1.0
VERSION_CODE=40
GROUP=com.github.jenly1314 GROUP=com.github.jenly1314
POM_DESCRIPTION=ZXingLite for Android POM_DESCRIPTION=ZXingLite for Android
@@ -47,3 +51,4 @@ RELEASE_SIGNING_ENABLED=false

View File

@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists 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

2
jitpack.yml Normal file
View File

@@ -0,0 +1,2 @@
jdk:
- openjdk17

View File

@@ -1,52 +1,43 @@
//App // App
def app_version = [:] def app_version = [:]
app_version.versionCode = 39 app_version.versionCode = 40
app_version.versionName = "3.0.1" app_version.versionName = "3.1.0"
ext.app_version = app_version ext.app_version = app_version
//build version // build version
def build_versions = [:] def build_versions = [:]
build_versions.minSdk = 21 build_versions.minSdk = 21
build_versions.targetSdk = 33 build_versions.targetSdk = 34
build_versions.compileSdk = 33 build_versions.compileSdk = 34
build_versions.buildTools = "33.0.0" build_versions.buildTools = "34.0.0"
ext.build_versions = build_versions ext.build_versions = build_versions
ext.deps = [:] ext.deps = [:]
// App dependencies // App dependencies
def versions = [:] def versions = [:]
//AndroidX // AndroidX
versions.material = "1.2.0" versions.material = "1.2.0"
versions.appcompat = "1.1.0" versions.appcompat = "1.1.0"
versions.constraintLayout = "2.0.4" versions.constraintLayout = "2.0.4"
//test // test
versions.junit = "4.13.2" versions.junit = "4.13.2"
versions.androidExtJunit = "1.1.3" versions.androidExtJunit = "1.1.3"
versions.test = "1.2.0" versions.test = "1.2.0"
versions.runner = "1.2.0" versions.runner = "1.2.0"
versions.espresso = "3.4.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 ext.versions = versions
//androidx // androidx
def androidx = [:] def androidx = [:]
androidx.design = "com.google.android.material:material:$versions.material" androidx.design = "com.google.android.material:material:$versions.material"
androidx.appcompat = "androidx.appcompat:appcompat:$versions.appcompat" androidx.appcompat = "androidx.appcompat:appcompat:$versions.appcompat"
androidx.constraintlayout = "androidx.constraintlayout:constraintlayout:$versions.constraintLayout" androidx.constraintlayout = "androidx.constraintlayout:constraintlayout:$versions.constraintLayout"
deps.androidx = androidx deps.androidx = androidx
//test // test
def test = [:] def test = [:]
test.junit = "junit:junit:$versions.junit" test.junit = "junit:junit:$versions.junit"
test.android_ext_junit = "androidx.test.ext:junit:$versions.androidExtJunit" 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" test.espresso = "androidx.test.espresso:espresso-core:$versions.espresso"
deps.test = test deps.test = test
//zxing // zxing
deps.zxing = "com.google.zxing:core:$versions.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" deps.viewfinderview = "com.github.jenly1314:viewfinderview:1.1.0"
//desugar_jdk // desugar_jdk
deps.desugar_jdk = "com.android.tools:desugar_jdk_libs:$versions.desugar_jdk_libs" deps.desugar_jdk = "com.android.tools:desugar_jdk_libs:1.2.3"
ext.deps = deps ext.deps = deps

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android">
package="com.king.zxing">
</manifest> </manifest>

View File

@@ -6,8 +6,8 @@ import com.google.zxing.Result;
import com.king.camera.scan.AnalyzeResult; import com.king.camera.scan.AnalyzeResult;
import com.king.camera.scan.FrameMetadata; import com.king.camera.scan.FrameMetadata;
import com.king.camera.scan.analyze.Analyzer; 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.Queue;
import java.util.concurrent.ConcurrentLinkedQueue; import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.atomic.AtomicBoolean; import java.util.concurrent.atomic.AtomicBoolean;
@@ -38,7 +38,7 @@ public abstract class ImageAnalyzer implements Analyzer<Result> {
public abstract Result analyze(byte[] data, int width, int height); public abstract Result analyze(byte[] data, int width, int height);
@Override @Override
public void analyze(@NonNull ImageProxy imageProxy, @NonNull OnAnalyzeListener<AnalyzeResult<Result>> listener) { public void analyze(@NonNull ImageProxy imageProxy, @NonNull OnAnalyzeListener<Result> listener) {
if (!joinQueue.get()) { if (!joinQueue.get()) {
int imageSize = imageProxy.getWidth() * imageProxy.getHeight(); int imageSize = imageProxy.getWidth() * imageProxy.getHeight();
@@ -56,7 +56,7 @@ public abstract class ImageAnalyzer implements Analyzer<Result> {
int width = imageProxy.getWidth(); int width = imageProxy.getWidth();
int height = imageProxy.getHeight(); int height = imageProxy.getHeight();
yuv_420_888toNv21(imageProxy, nv21Data); ImageUtils.yuv_420_888toNv21(imageProxy, nv21Data);
Result result; Result result;
if (rotation == 90 || rotation == 270) { if (rotation == 90 || rotation == 270) {
@@ -88,59 +88,4 @@ public abstract class ImageAnalyzer implements Analyzer<Result> {
} }
} }
/**
* 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;
}
}
}
} }