Skip to content

Commit aaecfa2

Browse files
committed
优化识别本地二维码的流程
1 parent bcda688 commit aaecfa2

7 files changed

Lines changed: 21 additions & 14 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ C++ port of ZXing for Android
1111
### 使用
1212
在gradle中:
1313
``` groovy
14-
implementation 'me.devilsen:CZXing:0.9.9'
14+
implementation 'me.devilsen:CZXing:0.9.10'
1515
```
1616
建议加入abiFilters
1717
```gradle

czxing/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ android {
66
defaultConfig {
77
minSdkVersion rootProject.ext.minSdkVersion
88
targetSdkVersion rootProject.ext.targetSdkVersion
9-
versionCode 21
10-
versionName "0.9.9"
9+
versionCode 22
10+
versionName "0.9.10"
1111

1212
externalNativeBuild {
1313
cmake {

czxing/src/main/java/me/devilsen/czxing/code/BarcodeReader.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,12 @@ public CodeResult read(Bitmap bitmap) {
4949
BarCodeUtil.e("bitmap is null");
5050
return null;
5151
}
52-
Bitmap grayBitmap = SaveImageUtil.getBinaryzationBitmap(bitmap);
53-
int imgWidth = grayBitmap.getWidth();
54-
int imgHeight = grayBitmap.getHeight();
52+
// 避免某些情况无法获取图片格式的问题
53+
Bitmap newBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, false);
54+
int imgWidth = newBitmap.getWidth();
55+
int imgHeight = newBitmap.getHeight();
5556
Object[] result = new Object[2];
56-
int resultFormat = NativeSdk.getInstance().readBarcode(_nativePtr, grayBitmap, 0, 0, imgWidth, imgHeight, result);
57+
int resultFormat = NativeSdk.getInstance().readBarcode(_nativePtr, newBitmap, 0, 0, imgWidth, imgHeight, result);
5758
if (resultFormat >= 0) {
5859
CodeResult decodeResult = new CodeResult(BarcodeFormat.values()[resultFormat], (String) result[0]);
5960
if (result[1] != null) {

czxing/src/main/java/me/devilsen/czxing/util/BitmapUtil.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ public static Bitmap getDecodeAbleBitmap(String picturePath) {
103103
BitmapFactory.Options options = new BitmapFactory.Options();
104104
options.inJustDecodeBounds = true;
105105
BitmapFactory.decodeFile(picturePath, options);
106-
int sampleSize = options.outHeight / 800;
106+
int sampleSize = options.outHeight / 700;
107107
if (sampleSize <= 0) {
108108
sampleSize = 1;
109109
}

sample/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,8 +57,8 @@ android {
5757
dependencies {
5858

5959
debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.0-beta-3'
60-
implementation project(':czxing')
61-
// implementation 'me.devilsen:CZXing:0.9.9'
60+
// implementation project(':czxing')
61+
implementation 'me.devilsen:CZXing:0.9.10'
6262

6363
implementation rootProject.ext.appcompat
6464
testImplementation rootProject.ext.junit

sample/src/main/java/me/sam/czxing/CustomizeActivity.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
import me.devilsen.czxing.compat.ActivityCompat;
2929
import me.devilsen.czxing.compat.ContextCompat;
3030
import me.devilsen.czxing.util.BarCodeUtil;
31+
import me.devilsen.czxing.util.BitmapUtil;
3132
import me.devilsen.czxing.util.ScreenUtil;
3233
import me.devilsen.czxing.util.SoundPoolUtil;
3334
import me.devilsen.czxing.view.ScanBoxView;
@@ -224,7 +225,7 @@ private void decodeImage(Intent intent) {
224225
String picturePath = cursor.getString(columnIndex);
225226
cursor.close();
226227

227-
Bitmap bitmap = BitmapFactory.decodeFile(picturePath);
228+
Bitmap bitmap = BitmapUtil.getDecodeAbleBitmap(picturePath);
228229
if (bitmap == null) {
229230
return;
230231
}
@@ -252,11 +253,14 @@ private void requestCameraPermission() {
252253
}
253254

254255
private void requestStoragePermission() {
255-
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)
256-
!= PackageManager.PERMISSION_GRANTED) {
256+
int permission = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE);
257+
if (permission != PackageManager.PERMISSION_GRANTED) {
257258
ActivityCompat.requestPermissions(this,
258259
new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},
259260
PERMISSIONS_REQUEST_STORAGE);
261+
} else {
262+
Intent albumIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
263+
startActivityForResult(albumIntent, CODE_SELECT_IMAGE);
260264
}
261265
}
262266

sample/src/main/java/me/sam/czxing/MainActivity.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import me.devilsen.czxing.code.BarcodeReader;
3030
import me.devilsen.czxing.code.CodeResult;
3131
import me.devilsen.czxing.util.BarCodeUtil;
32+
import me.devilsen.czxing.util.BitmapUtil;
3233
import me.devilsen.czxing.view.ScanActivityDelegate;
3334
import me.devilsen.czxing.view.ScanView;
3435

@@ -189,7 +190,8 @@ private void decodeImage(Intent intent) {
189190
String picturePath = cursor.getString(columnIndex);
190191
cursor.close();
191192

192-
Bitmap bitmap = BitmapFactory.decodeFile(picturePath);
193+
// 适当压缩图片
194+
Bitmap bitmap = BitmapUtil.getDecodeAbleBitmap(picturePath);
193195
if (bitmap == null) {
194196
return;
195197
}

0 commit comments

Comments
 (0)