241 lines
8.3 KiB
Java
241 lines
8.3 KiB
Java
package me.dm7.barcodescanner.zxing;
|
|
|
|
import android.content.Context;
|
|
import android.graphics.Rect;
|
|
import android.hardware.Camera;
|
|
import android.os.Handler;
|
|
import android.os.Looper;
|
|
import android.util.AttributeSet;
|
|
import android.util.Log;
|
|
import c.i.e.c;
|
|
import c.i.e.e;
|
|
import c.i.e.g;
|
|
import c.i.e.h;
|
|
import com.google.zxing.NotFoundException;
|
|
import com.google.zxing.ReaderException;
|
|
import com.google.zxing.Result;
|
|
import e0.a.a.a.d;
|
|
import java.util.ArrayList;
|
|
import java.util.Collection;
|
|
import java.util.EnumMap;
|
|
import java.util.List;
|
|
public class ZXingScannerView extends e0.a.a.a.a {
|
|
public static final List<c.i.e.a> C;
|
|
public g D;
|
|
public List<c.i.e.a> E;
|
|
public b F;
|
|
|
|
public class a implements Runnable {
|
|
public final /* synthetic */ Result i;
|
|
|
|
public a(Result result) {
|
|
this.i = result;
|
|
}
|
|
|
|
@Override // java.lang.Runnable
|
|
public void run() {
|
|
ZXingScannerView zXingScannerView = ZXingScannerView.this;
|
|
b bVar = zXingScannerView.F;
|
|
zXingScannerView.F = null;
|
|
d dVar = zXingScannerView.j;
|
|
if (dVar != null) {
|
|
dVar.e();
|
|
}
|
|
if (bVar != null) {
|
|
bVar.handleResult(this.i);
|
|
}
|
|
}
|
|
}
|
|
|
|
public interface b {
|
|
void handleResult(Result result);
|
|
}
|
|
|
|
static {
|
|
ArrayList arrayList = new ArrayList();
|
|
C = arrayList;
|
|
arrayList.add(c.i.e.a.AZTEC);
|
|
arrayList.add(c.i.e.a.CODABAR);
|
|
arrayList.add(c.i.e.a.CODE_39);
|
|
arrayList.add(c.i.e.a.CODE_93);
|
|
arrayList.add(c.i.e.a.CODE_128);
|
|
arrayList.add(c.i.e.a.DATA_MATRIX);
|
|
arrayList.add(c.i.e.a.EAN_8);
|
|
arrayList.add(c.i.e.a.EAN_13);
|
|
arrayList.add(c.i.e.a.ITF);
|
|
arrayList.add(c.i.e.a.MAXICODE);
|
|
arrayList.add(c.i.e.a.PDF_417);
|
|
arrayList.add(c.i.e.a.QR_CODE);
|
|
arrayList.add(c.i.e.a.RSS_14);
|
|
arrayList.add(c.i.e.a.RSS_EXPANDED);
|
|
arrayList.add(c.i.e.a.UPC_A);
|
|
arrayList.add(c.i.e.a.UPC_E);
|
|
arrayList.add(c.i.e.a.UPC_EAN_EXTENSION);
|
|
}
|
|
|
|
public ZXingScannerView(Context context, AttributeSet attributeSet) {
|
|
super(context, attributeSet);
|
|
c();
|
|
}
|
|
|
|
public h b(byte[] bArr, int i, int i2) {
|
|
Rect rect;
|
|
synchronized (this) {
|
|
if (this.l == null) {
|
|
Rect framingRect = ((e0.a.a.a.g) this.k).getFramingRect();
|
|
int width = this.k.getWidth();
|
|
int height = this.k.getHeight();
|
|
if (!(framingRect == null || width == 0)) {
|
|
if (height != 0) {
|
|
Rect rect2 = new Rect(framingRect);
|
|
if (i < width) {
|
|
rect2.left = (rect2.left * i) / width;
|
|
rect2.right = (rect2.right * i) / width;
|
|
}
|
|
if (i2 < height) {
|
|
rect2.top = (rect2.top * i2) / height;
|
|
rect2.bottom = (rect2.bottom * i2) / height;
|
|
}
|
|
this.l = rect2;
|
|
}
|
|
}
|
|
rect = null;
|
|
}
|
|
rect = this.l;
|
|
}
|
|
if (rect == null) {
|
|
return null;
|
|
}
|
|
try {
|
|
return new h(bArr, i, i2, rect.left, rect.top, rect.width(), rect.height(), false);
|
|
} catch (Exception unused) {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
public final void c() {
|
|
EnumMap enumMap = new EnumMap(c.i.e.d.class);
|
|
enumMap.put((EnumMap) c.i.e.d.POSSIBLE_FORMATS, (c.i.e.d) getFormats());
|
|
g gVar = new g();
|
|
this.D = gVar;
|
|
gVar.c(enumMap);
|
|
}
|
|
|
|
public Collection<c.i.e.a> getFormats() {
|
|
List<c.i.e.a> list = this.E;
|
|
return list == null ? C : list;
|
|
}
|
|
|
|
/* JADX INFO: finally extract failed */
|
|
/* JADX WARNING: Removed duplicated region for block: B:28:0x0079 A[Catch:{ RuntimeException -> 0x00ee }] */
|
|
/* JADX WARNING: Removed duplicated region for block: B:55:0x00d6 */
|
|
/* JADX WARNING: Removed duplicated region for block: B:56:0x00e8 */
|
|
@Override // android.hardware.Camera.PreviewCallback
|
|
public void onPreviewFrame(byte[] bArr, Camera camera) {
|
|
byte[] bArr2;
|
|
h b2;
|
|
Result result;
|
|
Result result2;
|
|
if (this.F != null) {
|
|
try {
|
|
Camera.Size previewSize = camera.getParameters().getPreviewSize();
|
|
int i = previewSize.width;
|
|
int i2 = previewSize.height;
|
|
if (c.q.a.k.a.w(getContext()) == 1) {
|
|
int rotationCount = getRotationCount();
|
|
if (rotationCount != 1) {
|
|
if (rotationCount != 3) {
|
|
i = i2;
|
|
i2 = i;
|
|
}
|
|
}
|
|
Camera.Size previewSize2 = camera.getParameters().getPreviewSize();
|
|
int i3 = previewSize2.width;
|
|
int i4 = previewSize2.height;
|
|
int rotationCount2 = getRotationCount();
|
|
if (rotationCount2 != 1) {
|
|
if (rotationCount2 != 3) {
|
|
i = i2;
|
|
i2 = i;
|
|
}
|
|
}
|
|
int i5 = i4;
|
|
int i6 = 0;
|
|
bArr2 = bArr;
|
|
while (i6 < rotationCount2) {
|
|
byte[] bArr3 = new byte[bArr2.length];
|
|
for (int i7 = 0; i7 < i5; i7++) {
|
|
for (int i8 = 0; i8 < i3; i8++) {
|
|
bArr3[(((i8 * i5) + i5) - i7) - 1] = bArr2[(i7 * i3) + i8];
|
|
}
|
|
}
|
|
i6++;
|
|
bArr2 = bArr3;
|
|
i5 = i3;
|
|
i3 = i5;
|
|
}
|
|
b2 = b(bArr2, i2, i);
|
|
result = null;
|
|
if (b2 != null) {
|
|
c cVar = new c(new c.i.e.n.h(b2));
|
|
try {
|
|
g gVar = this.D;
|
|
if (gVar.b == null) {
|
|
gVar.c(null);
|
|
}
|
|
result2 = gVar.b(cVar);
|
|
this.D.reset();
|
|
} catch (ReaderException | ArrayIndexOutOfBoundsException | NullPointerException unused) {
|
|
this.D.reset();
|
|
result2 = null;
|
|
} catch (Throwable th) {
|
|
this.D.reset();
|
|
throw th;
|
|
}
|
|
if (result2 == null) {
|
|
c cVar2 = new c(new c.i.e.n.h(new e(b2)));
|
|
try {
|
|
g gVar2 = this.D;
|
|
if (gVar2.b == null) {
|
|
gVar2.c(null);
|
|
}
|
|
result = gVar2.b(cVar2);
|
|
} catch (NotFoundException unused2) {
|
|
} finally {
|
|
this.D.reset();
|
|
}
|
|
}
|
|
result = result2;
|
|
}
|
|
if (result == null) {
|
|
new Handler(Looper.getMainLooper()).post(new a(result));
|
|
return;
|
|
} else {
|
|
camera.setOneShotPreviewCallback(this);
|
|
return;
|
|
}
|
|
}
|
|
bArr2 = bArr;
|
|
i = i2;
|
|
i2 = i;
|
|
b2 = b(bArr2, i2, i);
|
|
result = null;
|
|
if (b2 != null) {
|
|
}
|
|
if (result == null) {
|
|
}
|
|
} catch (RuntimeException e) {
|
|
Log.e("ZXingScannerView", e.toString(), e);
|
|
}
|
|
}
|
|
}
|
|
|
|
public void setFormats(List<c.i.e.a> list) {
|
|
this.E = list;
|
|
c();
|
|
}
|
|
|
|
public void setResultHandler(b bVar) {
|
|
this.F = bVar;
|
|
}
|
|
}
|