Встраивание ZXing в приложение для Android - PullRequest
21 голосов
/ 11 мая 2011

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

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

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

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

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

Ответы [ 2 ]

22 голосов
/ 12 мая 2011

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

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

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

Structure of Adapted ZXing project

  • То, что вы обнаружите, - это то, что вам нужно изменить 4 файла, чтобы ваш измененный класс деятельности работал. К этим файлам относятся класс CameraCaptureActivity, класс CaptureActivityHandler и классы обработчиков Decode Thread и Decode. Я разместил эти файлы здесь .

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

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

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

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

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

Удачи !!

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

7 голосов
/ 14 декабря 2012

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

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

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

...