Заставить ZXing работать

#java #android #barcode #barcode-scanner #zxing

#java #Android #штрих-код #сканер штрих-кода #zxing

Вопрос:

Я следовал всем инструкциям, wiki, началу работы, руководствам, справке и т.д. Я мог бы найти информацию о проекте ZXing. После многих-многих отладок я, наконец, решился на компиляцию с использованием ant core.jar , javame.jar, и javese.jar . Я хотел бы интегрировать ZXing в свой код, т. Е. я хочу сканировать считывать штрих-код и обрабатывать его данные.

Я импортировал как внешний jar каждый из файлов, упомянутых выше. Затем я обратился к https://code.google.com/p/zxing/wiki/DeveloperNotes использовать MultiFormatReader(). Класс BufferedImage не может быть разрешен. Я перепробовал все, что знаю, и я даже попробовал Bitmap от Android для обхода, но это мне тоже не помогло.

Я знаю, что могу использовать intent для чтения сканирования штрих-кода, но я хочу справиться с этим самостоятельно, а не устанавливать стороннее приложение.

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

И снова, я хочу только отсканировать прочитать штрих-код и проанализировать его данные.

Ответ №1:

Самый короткий ответ заключается в том, что вы не должны использовать javase.jar в приложении для Android. Это код, предназначенный для JavaSE. Не все классы JavaSE есть в Android. В частности, Android не имеет AWT-классов, таких как BufferedImage .

Вы хотите только включить core.jar в свой проект. Затем напишите свое приложение для Android, используя его.

Комментарии:

1. Шон, спасибо тебе за твой ответ и за то, что поделился своей реализацией. Но, похоже, это не работает, и вы не сказали мне ничего нового. Я знаком с тем фактом, что BufferedImage не является частью JavaSE, я думал, вы поможете мне решить проблему. Если вы хотите поделиться своей реализацией, почему вы не предоставили для нее надлежащую документацию? в любом случае, любая помощь будет высоко оценена. (Я никогда не пробовал так много угадывать)

2. Я не понимаю вашего комментария. BufferedImage является частью JavaSE. Это не часть Android. Поэтому неудивительно, что вы не можете включить код, подобный javase.jar , который использует BufferedImage, в проект Android. Это ошибка, о которой вы сообщаете, и я предоставил решение: не включайте ничего, кроме core.jar . javame.jar является кодом JavaME и не будет работать или быть полезным в Android.) Я автор ZXing, поэтому я поделился с вами всей своей реализацией всего, что есть в проекте, поэтому я больше ничего не понимаю.

3. У меня не было намерения быть злым, пожалуйста, примите мои извинения за это. В любом случае, что мне делать, чтобы использовать BufferedImage? не могли бы вы, пожалуйста, вложить свои острые знания в несколько строк кода? Спасибо.

4. Я действительно потерялся здесь. Нет. Видишь android/ ? Это полный исходный код для рабочего проекта Android. Это лицензия Apache, позволяющая вам использовать ее так, как вы хотите. Я не знаю, чего еще вы могли бы хотеть.

5. Вы никогда не захотите включать javase.jar . Это вообще не для Android. Вам не нужно core.jar ни то, ни другое, если вы интегрируете намеренно. Все, что говорит об обратном, неверно; поверьте мне, я автор!

Ответ №2:

Джексон, я тоже предлагаю вам способ, предложенный inazaruk.Но если у вас все еще возникают проблемы с интеграцией этой части кода (zxing-Android).

  • Просто скачайте zxing-core
  • Импортируйте этот основной проект в свой eclipse
  • В пути сборки Eclipse вашего приложения добавьте ссылку на проект zxing-core, чтобы он компилировался не JVM, а Dalvik (просто избегайте использования jar-файла, потому что он компилируется с помощью JVM) и просто используйте все классы, как предложено на https://code.google.com/p/zxing/wiki/DeveloperNotes

РЕДАКТИРОВАТЬ: Как заявил Шон Оуэн, Android не имеет класса BufferedImage.Вам нужно импортировать эти классы и удовлетворить их зависимости.

  • com.google.zxing.BinaryBitmap,
  • com.google.zxing.LuminanceSource,
  • com.google.zxing.Программа для чтения нескольких форматов,
  • com.google.zxing.Программа для чтения
  • com.google.zxing.Результат
  • com.google.zxing.common.HybridBinarizer

Затем вы можете использовать его следующим образом

  Bitmap bMap = BitmapFactory.decodeStream(new FileInputStream(file));
 LuminanceSource source = new RGBLuminanceSource(bMap);
 BinaryBitmap bitmap = new BinaryBitmap(new HybridBinarizer(
                              source));
 Reader reader = new MultiFormatReader();

 Result result = reader.decode(bitmap);
  

Комментарии:

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

2. @Mr. Jackson если у вас сейчас нет проблем с jar, то вам не нужно добавлять проект в свой путь сборки. Смотрите отредактированный раздел выше

3. Спасибо! теперь все, что мне нужно, это захватить изображение и открыть его с помощью FileInputStream. верно?

4. @Mr . Jackson Да . Хотя есть и другие способы, такие как прямое декодирование InputStream для чтения штрих-кода и т.д. И т.п. Просто выберите то, что для вас эффективно.

Ответ №3:

Вот что я сделал для своего экспериментального приложения:

  • Загружена Android-версия сканера штрих-кодов ZXing (здесь)
  • Преобразовал этот проект в библиотеку Android
  • Удалены все функции, которые мне не нужны
  • Изменен CaptureActivity так, как я хотел, чтобы он лучше интегрировался с моим приложением.

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

Комментарии:

1. спасибо за быстрый ответ. я загрузил весь проект. я могу извлечь из него библиотеку (/ android /), но что мне делать с файлами? скопировать их в мой проект?

2. только сейчас я тебя понял. я создал новый проект Android из исходного кода и перенаправил его в каталог /andoroid / из zxing. но я получаю слишком много ошибок. вот скриншот i52.tinypic.com/16gcwav.png

3. По этому скриншоту я никак не могу догадаться, в чем ваши проблемы 🙂 Пожалуйста, опубликуйте журналы ошибок компиляции.

4. Я думаю, что эти ошибки вызваны неприемлемым символом в файле XML. Как только вы очистите XML, будет сгенерирован R-файл, и все ошибки в пакетах исчезнут.

Ответ №4:

Привет, ребята, на самом деле я тоже застрял в этой проблеме. Но, наконец, я успешно запускаю этот проект. Когда мы загружаем проект zxing и просто импортируем его, но появляется номер для ошибки, потому что многие файлы отсутствуют.

На самом деле эти файлы распространяются в целых проектах. Итак, если вы выполните поиск по этим файлам в Zxing-master, вы сможете легко найти. Скопируйте эти файлы и просто скопируйте в свои проекты, поскольку в моей рабочей области это «CaptureActivity». Возможно, одна проблема также возникает из-за ошибки компиляции, которая связана с компилятором Java (для этого проекта требуется по крайней мере Java 1.7 и Android OS 4.4).

Все, что я знаю при запуске этого проекта, я объяснил. При любом запросе оставляйте комментарий.