优化细节

This commit is contained in:
Jenly
2021-08-06 14:26:00 +08:00
parent 0fe3a2ef7e
commit b465c191b7
7 changed files with 95 additions and 10 deletions

View File

@@ -194,7 +194,7 @@ CameraScan配置示例
.setOnScanResultCallback(this)//设置扫码结果回调,需要自己处理或者需要连扫时,可设置回调,自己去处理相关逻辑 .setOnScanResultCallback(this)//设置扫码结果回调,需要自己处理或者需要连扫时,可设置回调,自己去处理相关逻辑
.setAnalyzer(new MultiFormatAnalyzer(new DecodeConfig()))//设置分析器,DecodeConfig可以配置一些解码时的配置信息如果内置的不满足您的需求你也可以自定义实现 .setAnalyzer(new MultiFormatAnalyzer(new DecodeConfig()))//设置分析器,DecodeConfig可以配置一些解码时的配置信息如果内置的不满足您的需求你也可以自定义实现
.setAnalyzeImage(true)//设置是否分析图片默认为true。如果设置为false相当于关闭了扫码识别功能 .setAnalyzeImage(true)//设置是否分析图片默认为true。如果设置为false相当于关闭了扫码识别功能
.startCamera();//启动预览 .startCamera();//启动预览如果是通过继承CaptureActivity或CaptureFragment实现扫码无需调用这句。
//设置闪光灯(手电筒)是否开启,需在startCamera之后调用才有效 //设置闪光灯(手电筒)是否开启,需在startCamera之后调用才有效
@@ -218,6 +218,64 @@ CameraScan配置示例只需识别二维码的配置示例
.setAnalyzer(new MultiFormatAnalyzer(decodeConfig));//设置分析器,如果内置实现的一些分析器不满足您的需求,你也可以自定义去实现 .setAnalyzer(new MultiFormatAnalyzer(decodeConfig));//设置分析器,如果内置实现的一些分析器不满足您的需求,你也可以自定义去实现
``` ```
通过继承CaptureActivity实现扫二维码完整示例
```java
public class QRCodeActivity extends CaptureActivity {
@Override
public int getLayoutId() {
return R.layout.qr_code_activity;
}
@Override
public void initCameraScan() {
super.initCameraScan();
//初始化解码配置
DecodeConfig decodeConfig = new DecodeConfig();
decodeConfig.setHints(DecodeFormatManager.QR_CODE_HINTS)//如果只有识别二维码的需求这样设置效率会更高不设置默认为DecodeFormatManager.DEFAULT_HINTS
.setFullAreaScan(false)//设置是否全区域识别默认false
.setAreaRectRatio(0.8f)//设置识别区域比例默认0.8,设置的比例最终会在预览区域裁剪基于此比例的一个矩形进行扫码识别
.setAreaRectVerticalOffset(0)//设置识别区域垂直方向偏移量默认为0为0表示居中可以为负数
.setAreaRectHorizontalOffset(0);//设置识别区域水平方向偏移量默认为0为0表示居中可以为负数
//在启动预览之前,设置分析器,只识别二维码
getCameraScan()
.setVibrate(true)//设置是否震动默认为false
.setNeedAutoZoom(true)//二维码太小时可自动缩放默认为false
.setAnalyzer(new MultiFormatAnalyzer(decodeConfig));//设置分析器,如果内置实现的一些分析器不满足您的需求,你也可以自定义去实现
}
/**
* 扫码结果回调
* @param result
* @return 返回false表示不拦截将关闭扫码界面并将结果返回给调用界面
* 返回true表示拦截需自己处理逻辑。当isAnalyze为true时默认会继续分析图像也就是连扫
* 如果只是想拦截扫码结果回调,并不想继续分析图像(不想连扫),请在拦截扫码逻辑处通过调
* 用{@link CameraScan#setAnalyzeImage(boolean)}
* 因为{@link CameraScan#setAnalyzeImage(boolean)}方法能动态控制是否继续分析图像。
*
*/
@Override
public boolean onScanResultCallback(Result result) {
/*
* 因为setAnalyzeImage方法能动态控制是否继续分析图像。
*
* 1. 因为分析图像默认为true如果想支持连扫返回true即可。
* 当连扫的处理逻辑比较复杂时请在处理逻辑前调用getCameraScan().setAnalyzeImage(false)
* 来停止分析图像等逻辑处理完后再调用getCameraScan().setAnalyzeImage(true)来继续分析图像。
*
* 2. 如果只是想拦截扫码结果回调自己处理逻辑,但并不想继续分析图像(即不想连扫),可通过
* 调用getCameraScan().setAnalyzeImage(false)来停止分析图像。
*/
return super.onScanResultCallback(result);
}
}
```
如果直接使用CaptureActivity需在您项目的AndroidManifest中添加如下配置 如果直接使用CaptureActivity需在您项目的AndroidManifest中添加如下配置
```Xml ```Xml
<activity <activity

View File

@@ -42,7 +42,7 @@ public class CaptureFragmentActivity extends AppCompatActivity {
public void onClick(View v){ public void onClick(View v){
switch (v.getId()){ switch (v.getId()){
case R.id.ivLeft: case R.id.ivLeft:
onBackPressed(); finish();
break; break;
} }
} }

View File

@@ -89,7 +89,7 @@ public class CodeActivity extends AppCompatActivity {
public void onClick(View v){ public void onClick(View v){
switch (v.getId()){ switch (v.getId()){
case R.id.ivLeft: case R.id.ivLeft:
onBackPressed(); finish();
break; break;
} }
} }

View File

@@ -101,7 +101,7 @@ public class CustomActivity extends AppCompatActivity implements CameraScan.OnSc
public void onClick(View v){ public void onClick(View v){
switch (v.getId()){ switch (v.getId()){
case R.id.ivLeft: case R.id.ivLeft:
onBackPressed(); finish();
break; break;
} }
} }

View File

@@ -21,6 +21,7 @@ import android.widget.TextView;
import android.widget.Toast; import android.widget.Toast;
import com.google.zxing.Result; import com.google.zxing.Result;
import com.king.zxing.CameraScan;
import com.king.zxing.config.CameraConfig; import com.king.zxing.config.CameraConfig;
import com.king.zxing.CaptureActivity; import com.king.zxing.CaptureActivity;
import com.king.zxing.DecodeConfig; import com.king.zxing.DecodeConfig;
@@ -83,14 +84,18 @@ public class CustomCaptureActivity extends CaptureActivity {
.bindFlashlightView(ivFlashlight)//绑定手电筒,绑定后可根据光线传感器,动态显示或隐藏手电筒按钮 .bindFlashlightView(ivFlashlight)//绑定手电筒,绑定后可根据光线传感器,动态显示或隐藏手电筒按钮
.setOnScanResultCallback(this)//设置扫码结果回调,需要自己处理或者需要连扫时,可设置回调,自己去处理相关逻辑 .setOnScanResultCallback(this)//设置扫码结果回调,需要自己处理或者需要连扫时,可设置回调,自己去处理相关逻辑
.setAnalyzer(new MultiFormatAnalyzer(decodeConfig))//设置分析器,DecodeConfig可以配置一些解码时的配置信息如果内置的不满足您的需求你也可以自定义实现 .setAnalyzer(new MultiFormatAnalyzer(decodeConfig))//设置分析器,DecodeConfig可以配置一些解码时的配置信息如果内置的不满足您的需求你也可以自定义实现
.setAnalyzeImage(true)//设置是否分析图片默认为true。如果设置为false相当于关闭了扫码识别功能 .setAnalyzeImage(true);//设置是否分析图片默认为true。如果设置为false相当于关闭了扫码识别功能
.startCamera();//启动预览
} }
/** /**
* 扫码结果回调 * 扫码结果回调
* @param result 扫码结果 * @param result
* @return * @return 返回false表示不拦截将关闭扫码界面并将结果返回给调用界面
* 返回true表示拦截需自己处理逻辑。当isAnalyze为true时默认会继续分析图像也就是连扫
* 如果只是想拦截扫码结果回调,并不想继续分析图像(不想连扫),请在拦截扫码逻辑处通过调
* 用{@link CameraScan#setAnalyzeImage(boolean)}
* 因为{@link CameraScan#setAnalyzeImage(boolean)}方法能动态控制是否继续分析图像。
*
*/ */
@Override @Override
public boolean onScanResultCallback(Result result) { public boolean onScanResultCallback(Result result) {
@@ -123,7 +128,7 @@ public class CustomCaptureActivity extends CaptureActivity {
public void onClick(View v){ public void onClick(View v){
switch (v.getId()){ switch (v.getId()){
case R.id.ivLeft: case R.id.ivLeft:
onBackPressed(); finish();
break; break;
} }
} }

View File

@@ -56,7 +56,7 @@ public class EasyCaptureActivity extends CaptureActivity {
public void onClick(View v){ public void onClick(View v){
switch (v.getId()){ switch (v.getId()){
case R.id.ivLeft: case R.id.ivLeft:
onBackPressed(); finish();
break; break;
} }
} }

View File

@@ -4,6 +4,7 @@ import android.os.Bundle;
import android.widget.TextView; import android.widget.TextView;
import com.google.zxing.Result; import com.google.zxing.Result;
import com.king.zxing.CameraScan;
import com.king.zxing.CaptureActivity; import com.king.zxing.CaptureActivity;
import com.king.zxing.DecodeConfig; import com.king.zxing.DecodeConfig;
import com.king.zxing.DecodeFormatManager; import com.king.zxing.DecodeFormatManager;
@@ -53,8 +54,29 @@ public class QRCodeActivity extends CaptureActivity {
.setAnalyzer(new MultiFormatAnalyzer(decodeConfig));//设置分析器,如果内置实现的一些分析器不满足您的需求,你也可以自定义去实现 .setAnalyzer(new MultiFormatAnalyzer(decodeConfig));//设置分析器,如果内置实现的一些分析器不满足您的需求,你也可以自定义去实现
} }
/**
* 扫码结果回调
* @param result
* @return 返回false表示不拦截将关闭扫码界面并将结果返回给调用界面
* 返回true表示拦截需自己处理逻辑。当isAnalyze为true时默认会继续分析图像也就是连扫
* 如果只是想拦截扫码结果回调,并不想继续分析图像(不想连扫),请在拦截扫码逻辑处通过调
* 用{@link CameraScan#setAnalyzeImage(boolean)}
* 因为{@link CameraScan#setAnalyzeImage(boolean)}方法能动态控制是否继续分析图像。
*
*/
@Override @Override
public boolean onScanResultCallback(Result result) { public boolean onScanResultCallback(Result result) {
/*
* 因为setAnalyzeImage方法能动态控制是否继续分析图像。
*
* 1. 因为分析图像默认为true如果想支持连扫返回true即可。
* 当连扫的处理逻辑比较复杂时请在处理逻辑前调用getCameraScan().setAnalyzeImage(false)
* 来停止分析图像等逻辑处理完后再调用getCameraScan().setAnalyzeImage(true)来继续分析图像。
*
* 2. 如果只是想拦截扫码结果回调自己处理逻辑,但并不想继续分析图像(即不想连扫),可通过
* 调用getCameraScan().setAnalyzeImage(false)来停止分析图像。
*/
return super.onScanResultCallback(result); return super.onScanResultCallback(result);
} }
} }