支持识别反色码(#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.LayoutRes;
|
||||||
import androidx.annotation.Nullable;
|
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;
|
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()}
|
* @return {@link #mCaptureHelper#getCameraManager()}
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public CameraManager getCameraManager(){
|
public CameraManager getCameraManager(){
|
||||||
return mCaptureHelper.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()}
|
* @return {@link #mCaptureHelper#getCameraManager()}
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
public CameraManager getCameraManager(){
|
public CameraManager getCameraManager(){
|
||||||
return mCaptureHelper.getCameraManager();
|
return mCaptureHelper.getCameraManager();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -49,6 +49,11 @@ public class CaptureHandler extends Handler implements ResultPointCallback {
|
|||||||
*/
|
*/
|
||||||
private boolean isSupportAutoZoom;
|
private boolean isSupportAutoZoom;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private boolean isSupportLuminanceInvert;
|
||||||
|
|
||||||
|
|
||||||
private enum State {
|
private enum State {
|
||||||
PREVIEW,
|
PREVIEW,
|
||||||
@@ -198,4 +203,12 @@ public class CaptureHandler extends Handler implements ResultPointCallback {
|
|||||||
public void setSupportAutoZoom(boolean supportAutoZoom) {
|
public void setSupportAutoZoom(boolean supportAutoZoom) {
|
||||||
isSupportAutoZoom = 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 isSupportAutoZoom = true;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 是否支持识别颜色反转色的码,黑白颜色反转,默认不支持
|
||||||
|
*/
|
||||||
|
private boolean isSupportLuminanceInvert = false;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 是否支持连扫,默认不支持
|
* 是否支持连扫,默认不支持
|
||||||
*/
|
*/
|
||||||
@@ -334,6 +339,7 @@ public class CaptureHelper implements CaptureLifecycle,CaptureTouchEvent,Capture
|
|||||||
captureHandler.setSupportVerticalCode(isSupportVerticalCode);
|
captureHandler.setSupportVerticalCode(isSupportVerticalCode);
|
||||||
captureHandler.setReturnBitmap(isReturnBitmap);
|
captureHandler.setReturnBitmap(isReturnBitmap);
|
||||||
captureHandler.setSupportAutoZoom(isSupportAutoZoom);
|
captureHandler.setSupportAutoZoom(isSupportAutoZoom);
|
||||||
|
captureHandler.setSupportLuminanceInvert(isSupportLuminanceInvert);
|
||||||
}
|
}
|
||||||
} catch (IOException ioe) {
|
} catch (IOException ioe) {
|
||||||
Log.w(TAG, ioe);
|
Log.w(TAG, ioe);
|
||||||
@@ -718,9 +724,22 @@ public class CaptureHelper implements CaptureLifecycle,CaptureTouchEvent,Capture
|
|||||||
return this;
|
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
|
* @return
|
||||||
*/
|
*/
|
||||||
public CaptureHelper fullScreenScan(boolean fullScreenScan) {
|
public CaptureHelper fullScreenScan(boolean fullScreenScan) {
|
||||||
|
|||||||
@@ -102,31 +102,50 @@ final class DecodeHandler extends Handler {
|
|||||||
PlanarYUVLuminanceSource source = buildPlanarYUVLuminanceSource(data,width,height,isScreenPortrait);
|
PlanarYUVLuminanceSource source = buildPlanarYUVLuminanceSource(data,width,height,isScreenPortrait);
|
||||||
|
|
||||||
if (source != null) {
|
if (source != null) {
|
||||||
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
|
|
||||||
try {
|
|
||||||
rawResult = multiFormatReader.decodeWithState(bitmap);
|
|
||||||
} catch (Exception e) {
|
|
||||||
BinaryBitmap bitmap1 = new BinaryBitmap(new GlobalHistogramBinarizer(source));
|
|
||||||
try{
|
|
||||||
rawResult = multiFormatReader.decodeWithState(bitmap1);
|
|
||||||
}catch (Exception e1){
|
|
||||||
if(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){
|
|
||||||
|
|
||||||
}
|
boolean isReDecode;
|
||||||
}
|
try {
|
||||||
|
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
|
||||||
|
rawResult = multiFormatReader.decodeWithState(bitmap);
|
||||||
|
isReDecode = false;
|
||||||
|
} catch (Exception e) {
|
||||||
|
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{
|
||||||
|
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){
|
||||||
|
try{
|
||||||
|
BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(source));
|
||||||
|
rawResult = multiFormatReader.decodeWithState(bitmap);
|
||||||
|
}catch (Exception e){
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} finally {
|
|
||||||
multiFormatReader.reset();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
multiFormatReader.reset();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rawResult != null) {
|
if (rawResult != null) {
|
||||||
@@ -157,7 +176,6 @@ final class DecodeHandler extends Handler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (handler != null) {
|
if (handler != null) {
|
||||||
@@ -211,7 +229,7 @@ final class DecodeHandler extends Handler {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(length<width/5){
|
if(length < width/ 5){
|
||||||
|
|
||||||
Camera camera = cameraManager.getOpenCamera().getCamera();
|
Camera camera = cameraManager.getOpenCamera().getCamera();
|
||||||
if(camera!=null){
|
if(camera!=null){
|
||||||
|
|||||||
Reference in New Issue
Block a user