Как настроить BarcodeDetector в AndroidJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как настроить BarcodeDetector в Android

Сообщение Anonymous »

Я пытаюсь реализовать настройку считывателя штрих-кодов, я использую следующую библиотеку:

Код: Выделить всё

implementation 'com.google.android.gms:play-services-vision:20.1.3'
В настоящее время я могу обнаружить каждый штрих-код и прочитать значение (см. изображение ниже)
Изображение

Теперь мне следует реализовать своего рода "фильтр", который показывает/подсвечивает только определенный штрих-код (например, 3908181), заданный в приложении при запуске занятия. Основной целью приложения должен быть своего рода поисковик статей на складе.
Это код моей основной деятельности:

Код: Выделить всё

public final class BarcodeCaptureActivity extends Activity implements BarcodeGraphicTracker.BarcodeUpdateListener {
private static final int RC_HANDLE_GMS = 9001;
private String fromWhere = null;
private CameraSource mCameraSource;
private CameraSourcePreview mPreview;
private GraphicOverlay mGraphicOverlay;
private Context context;
private HashMap codes;
private ArrayList  bboxCodes;
private int counter = 0;
private DbBboxCheck dbBboxCheck = null;
private String bboxImei = "", codeToCheck = "";

@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.barcode_capture);

codes = new HashMap();
bboxCodes = new ArrayList();

mPreview = findViewById(R.id.preview);
mGraphicOverlay = findViewById(R.id.graphicOverlay);
dbBboxCheck = new DbBboxCheck(getApplicationContext());

Intent intent = getIntent();
fromWhere = intent.getStringExtra("fromWhere");
codeToCheck = intent.getStringExtra("codeToCheck");
createCameraSource();
}

/* *************************************** *************************************** */
//
/* *************************************** *************************************** */
@SuppressLint("InlinedApi")
private void createCameraSource() {
context = getApplicationContext();
BarcodeDetector barcodeDetector = new BarcodeDetector.Builder(context).build();
BarcodeTrackerFactory barcodeFactory = new BarcodeTrackerFactory(mGraphicOverlay, this);
barcodeDetector.setProcessor(new MultiProcessor.Builder(barcodeFactory).build());

CameraSource.Builder builder = new CameraSource.Builder(context, barcodeDetector);
builder.setFacing(CameraSource.CAMERA_FACING_BACK);
builder.setRequestedPreviewSize(1024, 768);
builder.setRequestedFps(15.0f);
builder = builder.setFocusMode(FOCUS_MODE_CONTINUOUS_PICTURE);
mCameraSource = builder.setFlashMode(FLASH_MODE_AUTO).build();
}

/* *************************************** *************************************** */
//
/* *************************************** *************************************** */
@Override
protected void onResume() {
super.onResume();
startCameraSource();
}

/* *************************************** *************************************** */
//
/* *************************************** *************************************** */
@Override
protected void onPause() {
super.onPause();
if (mPreview != null) {
mPreview.stop();
}
}

/* *************************************** *************************************** */
//
/* *************************************** *************************************** */
@Override
protected void onDestroy() {
super.onDestroy();
if (mPreview != null) {
mPreview.stop();
}
}

/* *************************************** *************************************** */
//
/* *************************************** *************************************** */
private void startCameraSource() throws SecurityException {
int code = GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(context);
if (code != ConnectionResult.SUCCESS) {
Dialog dialog = GoogleApiAvailability.getInstance().getErrorDialog(this, code, RC_HANDLE_GMS);
dialog.show();
}

if (mCameraSource != null) {
try {
mPreview.start(mCameraSource, mGraphicOverlay);
} catch (IOException e) {
mCameraSource.release();
mCameraSource = null;
}
}
}

/* *************************************** *************************************** */
//
/* *************************************** *************************************** */
@Override
public void onBarcodeDetected(Barcode barcode) {
String barCode = barcode.displayValue.trim();
switch (fromWhere) {
case "findInWarehouse":
if(barCode.compareToIgnoreCase(codeToCheck) == 0){
MediaPlayer.create(this, R.raw.success).start();
//mCameraSource.stop();
//mPreview.stop();
}
break;

default:
MediaPlayer.create(this, R.raw.success).start();
closeDetection(barCode, "warehouse",  false);
break;
}
}

/* *************************************** *************************************** */
//
/* *************************************** *************************************** */
private void collectBboxCodes(String currentBarCode) {
boolean additionalExtra = false;
if (fromWhere.compareToIgnoreCase("disassembly") == 0) {
additionalExtra = true;
if (!bboxCodes.contains(currentBarCode)) {
if (currentBarCode.length() > 12) {
bboxImei = currentBarCode;
}
bboxCodes.add(currentBarCode);
}
} else {
if (!bboxCodes.contains(currentBarCode)) {
bboxCodes.add(currentBarCode);
if (dbBboxCheck.checkCode(currentBarCode, context)) {
MediaPlayer.create(this, R.raw.success).start();
closeDetection(currentBarCode, fromWhere, false);
}
}
}

if (counter == 5) {
if (fromWhere.compareToIgnoreCase("disassembly") == 0) {
MediaPlayer.create(this, R.raw.success).start();
closeDetection(bboxImei, fromWhere, additionalExtra);
} else {
MediaPlayer.create(this, R.raw.failure).start();
closeDetection("", fromWhere, additionalExtra);
}
}
counter++;
}

/* *************************************** *************************************** */
//
/* *************************************** *************************************** */
private void closeDetection(String returnData, String fieldType, boolean additionalExtra) {
Intent intent = new Intent();
intent.putExtra("code", returnData);
intent.putExtra("fieldType", fieldType);
if (additionalExtra) {
intent.putExtra("listOfBbox", bboxCodes);
}
//setResult(CommonStatusCodes.SUCCESS, intent);
//finish();
}
}
В настоящее время я не понимаю, как реализовать эту функцию, есть какие-нибудь предложения?

Подробнее здесь: https://stackoverflow.com/questions/727 ... in-android
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»