发布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 {
//...
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.02023-12-31
* 更新CameraScan至v1.1.0
* 更新zxing至v3.5.2
* 更新compileSdkVersion至34
* 更新Gradle至v8.0
#### v3.0.12023-9-13
* 更新CameraScan至v1.0.1
* 更新ViewfinderView至v1.1.0

View File

@ -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 {

Binary file not shown.

View File

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

View File

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

View File

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

View File

@ -15,7 +15,7 @@ import com.king.zxing.analyze.MultiFormatAnalyzer
*/
class MultiFormatScanActivity : BarcodeCameraScanActivity() {
var toast: Toast? = null
private var toast: Toast? = null
override fun initCameraScan(cameraScan: CameraScan<Result>) {
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()
}
}

View File

@ -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
}

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
* 更新CameraScan至v1.0.1
* 更新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.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

View File

@ -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

2
jitpack.yml Normal file
View File

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

View File

@ -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

View File

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

View File

@ -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<Result> {
public abstract Result analyze(byte[] data, int width, int height);
@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()) {
int imageSize = imageProxy.getWidth() * imageProxy.getHeight();
@ -56,7 +56,7 @@ public abstract class ImageAnalyzer implements Analyzer<Result> {
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<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;
}
}
}
}