Вложение ZXing в приложение для Android

Поэтому я еще один неудачный начинающий разработчик Android, которому нужно встроить сканер штрих-кода ZXing в его приложение.

Существует множество вопросов о том, как это сделать здесь, в stackoverflow, но ни у кого из них нет ответа, который действительно понятен и объяснителен для новичка. Все ответы говорят что-то вроде «все, что вам нужно сделать, – это создать основную библиотеку проекта ZXing, ссылаться на нее на свой проект, а затем скопировать какой-то код из каталога android / ZXing в ваше приложение, и все готово». Но это не очень полезно для noob.

У меня есть основная библиотека ZXings, упомянутая в моем проекте. Я открываю приложение приложения для сканера штрих-кода. Я пытаюсь прочитать и понять код приложения Barcode Scanner, но он слишком сложный для моего уровня знаний.

Я просто хочу иметь кнопку в своем приложении, которая при нажатии открывает сканер штрих-кода, сканер должен иметь возможность сканировать штрих-код, декодировать его и возвращать мне цифры, ему не нужно отправлять код в любом месте Получить любую информацию и т. Д., Я сам позабочусь об этом. Мне просто нужен простой сканер, который начинается с нажатия кнопки, сканирует код и дает мне результат. Но я не могу понять, как это сделать сам. Я предполагаю, что это не сложно сделать, если вам нужно только скопировать какой-то текст с сканера ZXing, вам просто нужно понять его код.

Поэтому, если кто-то может это объяснить (скажите, какие части кода нужно скопировать, как запустить сканер в методах onClick и т. Д.), Пожалуйста, сделайте это, я уверен, что есть много людей, которые будут действительно благодарны за это, как я буду быть.

Solutions Collecting From Web of "Вложение ZXing в приложение для Android"

Я должен был сделать именно то, что вас просят сделать. Это было не так просто, но это было не так уж плохо. Это было также мое первое (коммерческое или другое) приложение для Android. Что я сделал:

  • Получите проект ZXing, скомпилированный и запущенный на вашем компьютере. Существует хороший учебник о том, как это сделать здесь .
  • Адаптируйте этот код в соответствии с вашими потребностями. Я отделил много проекта от простого сканера. Затем я построил остальную часть своего проекта вокруг него. Вот как это сделать.

  • Адаптируйте CaptureActivity в ядре как можно проще. Все, что вам нужно – это номер, возвращаемый из основного кода сканера. Вот картина структуры моего проекта:

Структура проекта Adapted ZXing

  • Вы обнаружите, что вам нужно изменить 4 файла для вашего измененного класса активности. Этими файлами являются класс CameraCaptureActivity, класс CaptureActivityHandler и классы обработчика Decode Thread и Decode. Здесь я размещал эти файлы.

  • Возьмите эти четыре файла и поместите их в копию рабочего проекта ZXing. Удалите исходную CaptureActivity и другие исходные темы и классы обработчиков, которые вы заменили. (Игнорируйте файл CaptureActivityHandlerDemo, поскольку он был помещен туда по ошибке)

  • Измените имена пакетов в соответствии с именами рабочих ZXing. Убедитесь, что ваша активность названа одинаковой во всех четырех классах. Это может быть хорошей идеей передать интерфейс, который реализует «getHolder», а не сам класс активности.

  • Убедитесь, что вы обновили манифест с любыми изменениями в названии своей деятельности. Удостоверьтесь, что у вас есть способ навигации к действию – возможно, сделайте его классом по умолчанию в области фильтра намерений.

  • Я также включил файл макета для вашей деятельности – это очень просто, но вам все же нужно, чтобы сканер работал и работал. Это называется camera_capture.xml

Надеюсь, это все, что вам нужно, чтобы встать и бежать. Это непростой процесс, и, к сожалению, я не могу дать вам весь мой проект, поскольку это коммерческий продукт.

Удачи!!

PS, пожалуйста, напишите какие-либо вопросы в качестве комментариев к этому ответу, и я сделаю все возможное, чтобы помочь.

Я развернул сканер штрих-кодов и преобразовал его в проект библиотеки, и удалил большую часть функций, которые вам не нужны, если вы только сканируете штрих-коды через IntentIntegrator.

Проект с инструкциями доступен по адресу https://github.com/embarkmobile/zxing-android-minimal .

Это действительно легко включить в проект, если вы уже используете Maven. Если нет – вы можете скопировать код в свой проект, используя подход, описанный CaspNZ.