支持识别反色码(#66,#69,#72)
This commit is contained in:
@@ -25,9 +25,12 @@ import com.king.zxing.camera.CameraManager;
|
||||
|
||||
import androidx.annotation.LayoutRes;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.appcompat.app.AppCompatActivity;
|
||||
|
||||
|
||||
public class CaptureActivity extends Activity implements OnCaptureCallback{
|
||||
/**
|
||||
* @author <a href="mailto:jenly1314@gmail.com">Jenly</a>
|
||||
*/
|
||||
public class CaptureActivity extends AppCompatActivity implements OnCaptureCallback{
|
||||
|
||||
public static final String KEY_RESULT = Intents.Scan.RESULT;
|
||||
|
||||
@@ -114,9 +117,10 @@ public class CaptureActivity extends Activity implements OnCaptureCallback{
|
||||
}
|
||||
|
||||
/**
|
||||
* Get {@link CameraManager}
|
||||
* Get {@link CameraManager} use {@link #getCaptureHelper()#getCameraManager()}
|
||||
* @return {@link #mCaptureHelper#getCameraManager()}
|
||||
*/
|
||||
@Deprecated
|
||||
public CameraManager getCameraManager(){
|
||||
return mCaptureHelper.getCameraManager();
|
||||
}
|
||||
|
||||
@@ -127,9 +127,10 @@ public class CaptureFragment extends Fragment implements OnCaptureCallback {
|
||||
}
|
||||
|
||||
/**
|
||||
* Get {@link CameraManager}
|
||||
* Get {@link CameraManager} use {@link #getCaptureHelper()#getCameraManager()}
|
||||
* @return {@link #mCaptureHelper#getCameraManager()}
|
||||
*/
|
||||
@Deprecated
|
||||
public CameraManager getCameraManager(){
|
||||
return mCaptureHelper.getCameraManager();
|
||||
}
|
||||
|
||||
@@ -49,6 +49,11 @@ public class CaptureHandler extends Handler implements ResultPointCallback {
|
||||
*/
|
||||
private boolean isSupportAutoZoom;
|
||||
|
||||
/**
|
||||
*
|
||||
*/
|
||||
private boolean isSupportLuminanceInvert;
|
||||
|
||||
|
||||
private enum State {
|
||||
PREVIEW,
|
||||
@@ -198,4 +203,12 @@ public class CaptureHandler extends Handler implements ResultPointCallback {
|
||||
public void setSupportAutoZoom(boolean supportAutoZoom) {
|
||||
isSupportAutoZoom = supportAutoZoom;
|
||||
}
|
||||
|
||||
public boolean isSupportLuminanceInvert() {
|
||||
return isSupportLuminanceInvert;
|
||||
}
|
||||
|
||||
public void setSupportLuminanceInvert(boolean supportLuminanceInvert) {
|
||||
isSupportLuminanceInvert = supportLuminanceInvert;
|
||||
}
|
||||
}
|
||||
@@ -87,6 +87,11 @@ public class CaptureHelper implements CaptureLifecycle,CaptureTouchEvent,Capture
|
||||
*/
|
||||
private boolean isSupportAutoZoom = true;
|
||||
|
||||
/**
|
||||
* 是否支持识别颜色反转色的码,黑白颜色反转,默认不支持
|
||||
*/
|
||||
private boolean isSupportLuminanceInvert = false;
|
||||
|
||||
/**
|
||||
* 是否支持连扫,默认不支持
|
||||
*/
|
||||
@@ -334,6 +339,7 @@ public class CaptureHelper implements CaptureLifecycle,CaptureTouchEvent,Capture
|
||||
captureHandler.setSupportVerticalCode(isSupportVerticalCode);
|
||||
captureHandler.setReturnBitmap(isReturnBitmap);
|
||||
captureHandler.setSupportAutoZoom(isSupportAutoZoom);
|
||||
captureHandler.setSupportLuminanceInvert(isSupportLuminanceInvert);
|
||||
}
|
||||
} catch (IOException ioe) {
|
||||
Log.w(TAG, ioe);
|
||||
@@ -718,9 +724,22 @@ public class CaptureHelper implements CaptureLifecycle,CaptureTouchEvent,Capture
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否支持识别反色码,黑白颜色反转
|
||||
* @param supportLuminanceInvert 默认为false,当返回true时表示支持,会增加识别率,但相应的也会增加性能消耗。
|
||||
* @return
|
||||
*/
|
||||
public CaptureHelper supportLuminanceInvert(boolean supportLuminanceInvert) {
|
||||
isSupportLuminanceInvert = supportLuminanceInvert;
|
||||
if(captureHandler!=null){
|
||||
captureHandler.setSupportLuminanceInvert(isSupportLuminanceInvert);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置是否支持全屏扫码识别
|
||||
* @param fullScreenScan
|
||||
* @param fullScreenScan 默认为false
|
||||
* @return
|
||||
*/
|
||||
public CaptureHelper fullScreenScan(boolean fullScreenScan) {
|
||||
|
||||
@@ -102,32 +102,51 @@ final class DecodeHandler extends Handler {
|
||||
PlanarYUVLuminanceSource source = buildPlanarYUVLuminanceSource(data,width,height,isScreenPortrait);
|
||||
|
||||
if (source != null) {
|
||||
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
|
||||
|
||||
boolean isReDecode;
|
||||
try {
|
||||
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
|
||||
rawResult = multiFormatReader.decodeWithState(bitmap);
|
||||
isReDecode = false;
|
||||
} catch (Exception e) {
|
||||
BinaryBitmap bitmap1 = new BinaryBitmap(new GlobalHistogramBinarizer(source));
|
||||
isReDecode = true;
|
||||
}
|
||||
|
||||
if(isReDecode && handler.isSupportLuminanceInvert()){
|
||||
try {
|
||||
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source.invert()));
|
||||
rawResult = multiFormatReader.decodeWithState(bitmap);
|
||||
isReDecode = false;
|
||||
} catch (Exception e) {
|
||||
isReDecode = true;
|
||||
}
|
||||
}
|
||||
|
||||
if(isReDecode){
|
||||
try{
|
||||
rawResult = multiFormatReader.decodeWithState(bitmap1);
|
||||
}catch (Exception e1){
|
||||
if(isSupportVerticalCode){
|
||||
BinaryBitmap bitmap = new BinaryBitmap(new GlobalHistogramBinarizer(source));
|
||||
rawResult = multiFormatReader.decodeWithState(bitmap);
|
||||
isReDecode = false;
|
||||
}catch (Exception e){
|
||||
isReDecode = true;
|
||||
}
|
||||
}
|
||||
|
||||
if(isReDecode && isSupportVerticalCode){
|
||||
source = buildPlanarYUVLuminanceSource(data,width,height,!isScreenPortrait);
|
||||
if(source!=null){
|
||||
BinaryBitmap bitmap2 = new BinaryBitmap(new HybridBinarizer(source));
|
||||
try{
|
||||
rawResult = multiFormatReader.decodeWithState(bitmap2);
|
||||
}catch (Exception e2){
|
||||
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
|
||||
rawResult = multiFormatReader.decodeWithState(bitmap);
|
||||
}catch (Exception e){
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
} finally {
|
||||
multiFormatReader.reset();
|
||||
}
|
||||
}
|
||||
|
||||
if (rawResult != null) {
|
||||
// Don't log the barcode contents for security.
|
||||
@@ -157,7 +176,6 @@ final class DecodeHandler extends Handler {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
if (handler != null) {
|
||||
@@ -211,7 +229,7 @@ final class DecodeHandler extends Handler {
|
||||
return true;
|
||||
}
|
||||
|
||||
if(length<width/5){
|
||||
if(length < width/ 5){
|
||||
|
||||
Camera camera = cameraManager.getOpenCamera().getCamera();
|
||||
if(camera!=null){
|
||||
|
||||
Reference in New Issue
Block a user