Android разпознаване на баркод

В тази статия ще използваме ZXing (Zebra Crossing) за декодиране на баркод в нашето приложение за Android.

Използвайки ZXing, не е нужно да мислим, че потребителят няма скенер за баркод, тъй като класовете, предоставени от библиотеката, ще се погрижат за това. Чрез интегрирането на ZXing в нашето приложение можем да предоставим на потребителя по-лесен начин за сканиране на баркодове, като същевременно ни позволява да се съсредоточим върху разработването на основната част на приложението.

Създайте нов проект

В Eclipse създайте нов проект за Android. Въведете името на приложението, проекта и името на пакета.

разпознаване

Отворете главния шаблон. Eclipse трябваше да създаде стандартен шаблон. В него заменете съществуващото съдържание с бутон

След бутона ще добавим две текстови полета, които ще показват резултатите от сканираната информация.

Добавете текст към бутона. Отворете файлаres/values/strings

За да сканира, потребителят ще трябва да щракне върху бутона. Когато приложението получи резултат от разпознаване, то ще го покаже в текстовите полета.

Интегриране на ZXing

ZXing е библиотека с отворен код, която осигурява разпознаване на баркод на Android. Някои потребители вече имат инсталирано приложението ZXing, така че е достатъчно да предадат кода към него и да изчакат резултатите. В това приложение ще разгледаме метод, който извиква съответната функция на друго приложение. Ако потребителят няма това приложение, ще се покаже подкана за изтеглянето му.

В Eclipse нека добавим нов пакет към вашия проект. За да направите това, щракнете с десния бутон върху папкатаsrcи изберете "New"->"Package" и след това въведетеcom.google.zxing.integration.androidкато име на пакета.

android

Eclipse предлага няколко начина за импортиране на съществуващ код в проект. За тази статия най-простият метод би бил да създадете два класа, съдържащи кода от ZXing. Щракнете с десния бутон върху вашия проект, изберете "Нов"->"Клас" и въведете "IntentIntegrator" като име на класа. Можете да оставите останалите параметри непроменени. След като създадете класа, направете същото, но наименувайте класа „IntentResult“.

разпознаване

Копирайте кода от двата класа в библиотеката и след това го поставете в генерираните класове.

разпознаване

Сега можете да включвате файлове в основния клас

Нека се върнем за минута назад и също да включим следните файлове. Моля, имайте предвид, че Eclipse може вече да ги е свързал вместо вас.

Нека приложим сканиране, когато потребителят кликне върху нашия бутон. В основния файл на приложението има метод onCreate, който трябва да изглежда по следния начин

Преди тази функция създайте следните променливи, които ще съхраняват нашия бутон и две текстови полета, създадени в шаблона

След съществуващия код в onCreate добавете редовете, които ще инициализират променливите

Сега нека добавим манипулатор на кликвания

Нека разширим класа, за да декларираме интерфейса OnClickListener

Сега можем да реагираме на натискането на бутона, като стартираме процеса на сканиране. Добавете метода onClick

Проверка дали е натиснат бутонът за сканиране

Вътре в блока с условието ще създадем екземпляр на класа IntentIntegrator, който импортирахме

Сега нека извикаме процедура, която ще започне сканирането

В този момент разпознаването трябва да започне, но само ако потребителят има инсталирано необходимото приложение. Ако не, ще бъдете подканени да започнете изтеглянето. Резултатът от сканирането ще бъдевърнат към приложението.

Обработват се резултатите от сканирането

Скенерът ще се стартира при натискане на бутона. След това резултатът от сканирането ще бъде върнат към метода onActivityResult. Нека го добавим към нашия код

Вътре във функцията ще се опитаме да обработим резултата

Както при всички други данни, получени от друго приложение, би било хубаво да проверите дали резултатът не е празен. Ще продължим само ако имаме правилния резултат

Ако не получим резултата от сканирането (например потребителят отмени сканирането), тогава просто ще отпечатаме съобщение

Да се ​​върнем към блока с условието, да видим какво ни върна библиотеката. Обектът Intent Result има метод, който предоставя резултата от сканирането. Вземете резултата от сканирането като низ

Освен това получаваме изглед на баркод

Сега нашето приложение има цялата информация, която трябва да покаже. В нашата статия просто ще го покажем на потребителя.

Стартирайте нашето приложение на реално устройство вместо на емулатор, за да видите как работи функцията за разпознаване на баркод. Опитайте да сканирате баркод от книга или друг продукт.

Резултати от сканиране

баркод

Заключение

И тук можете да получите грант за тестов период на Yandex.Cloud. Необходимо е само да въведете "Habr" в полето "секретна парола".