Я использую для своего приложения библиотеку RedLaser для сканирования штрих-кода (который, как я полагаю, построен на Zxing). Все работает нормально, в то время как в режиме сканирования сканируется любой штрих-код, который входит в представление, но я не хочу этого, я хочу, чтобы только штрих-коды, которые были выровнены в области сканирования, которые нужно учитывать, а остальные - игнорироваться.Расположение штрих-кодов во время сканирования
Приложение примера redlaser, после которого я реализовал библиотеку в своем собственном приложении, имел прямоугольник на макете активности сканирования, однако это было проигнорировано, поскольку штрих-коды с любой части экрана были отсканированы и учтены по образцу приложения.
Итог: Я хочу, чтобы мое сканирование активности сравнить расположение обнаруженного в настоящее время штрих-код и посмотреть, если он находится в пределах от «области сканирования», если это не так, то он не будет читать.
Вот код для регулировки «области сканирования»:
viewfinderView = findViewById(R.id.view_finder);
LayoutParams params = new LayoutParams((int)(mDisplay.getWidth() * .75f),
(int)(mDisplay.getHeight() * .33f));
params.gravity = Gravity.CENTER;
viewfinderView.setLayoutParams(params);
Следующий код не делает ничего, я просто написал ее иллюстрировать, как все работает (так как у меня нет исходных файлов для библиотеки Redlaser), например, barcodelocation.
Set<BarcodeResult> allResults = (Set<BarcodeResult>) scanStatus.get(Status.STATUS_FOUND_BARCODES);
for(BarcodeResult s : allResults)
{
ArrayList<PointF> barcodelocation = s.barcodeLocation;
float x = barcodelocation.get(0).x;
float y = barcodelocation.get(0).y;
//there will be 4 points to each scanned barcode => 8 float's/barcode
}
Извините за длинный пост, но я уже давно занимаюсь этим вопросом, и я действительно застрял.
Любая помощь приветствуется!