Подтвердить что ты не робот

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

Structure of Adapted ZXing project

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

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

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

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

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

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

Удачи!!

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

Ответ 2

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

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

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