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

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

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

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

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

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


person Mr Jackson    schedule 17.05.2011    source источник


Ответы (4)


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

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

person Sean Owen    schedule 17.05.2011
comment
Шон, спасибо за ваш ответ и за то, что поделились своей реализацией. Но это, кажется, не работает, и вы не сказали мне что-то новое. Мне известно, что BufferedImage не является частью JavaSE, и я думал, что вы поможете мне решить эту проблему. Если вы хотите поделиться своей реализацией, почему вы не предоставили для нее надлежащую документацию? в любом случае, любая помощь будет глубоко оценена. (Я никогда не пытался так много гадать) - person Mr Jackson; 17.05.2011
comment
Я не понимаю вашего комментария. BufferedImage является частью JavaSE. Он не является частью Android. Поэтому неудивительно, что вы не можете включить в проект Android такой код, как javase.jar, который использует BufferedImage. Это ошибка, о которой вы сообщаете, и я предоставил решение: не включайте ничего, кроме core.jar. (javame.jar - это код JavaME, и он не будет работать или быть полезным в Android.) Я являюсь автором ZXing, поэтому я поделился с вами всей своей реализацией всего в проекте, поэтому я больше не понимаю. - person Sean Owen; 18.05.2011
comment
У меня не было намерения быть злым, пожалуйста, примите мои извинения за это. В любом случае, что мне делать, чтобы использовать BufferedImage? не могли бы вы вложить свои острые знания в несколько строк кода? Благодарю. - person Mr Jackson; 18.05.2011
comment
Вы не можете использовать BufferedImage в Android. Этого не существует. Нет кода, который заставит его существовать. Опять же, вот ответ: не импортируйте javase.jar или javame.jar, и это не вызовет эту ошибку! - person Sean Owen; 18.05.2011
comment
так что единственный вариант - использовать намерение? у меня нет возможности по-настоящему повторно использовать вашу реализацию и интегрировать ее в свое приложение? - person Mr Jackson; 18.05.2011
comment
Я действительно потерялся здесь. Нет. Видишь android/? Это полный исходный код работающего проекта Android. Это лицензия Apache, которую вы можете использовать по своему усмотрению. Я не знаю, что еще вы могли бы хотеть. - person Sean Owen; 18.05.2011
comment
@SeanOwen Я предлагаю несколько руководств в Интернете, которые добавляют core.jar и javese.jar в библиотеки проекта ... почему нам следует избегать импорта javase.jar и javame.jar в наш проект Android ...? осветите нас пожалуйста!! - person Pedro Teran; 07.03.2012
comment
Вы никогда не захотите включать javase.jar. Это вообще не для андроида. Вам также не нужно core.jar, если вы интегрируете намерение. Все, что говорит об обратном, неверно; поверьте мне, я автор! - person Sean Owen; 07.03.2012

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

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

EDIT: Как заявил Шон Оуэн, android не имеет класса BufferedImage. Вам необходимо импортировать эти классы и удовлетворить их зависимость.

  • com.google.zxing.BinaryBitmap,
  • com.google.zxing.LuminanceSource,
  • com.google.zxing.MultiFormatReader,
  • com.google.zxing.Reader
  • com.google.zxing.Result
  • 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);
person 100rabh    schedule 17.05.2011
comment
я смог импортировать zxing-core. не знал, как сделать третий шаг, хотя. и в любом случае, я следовал заметкам разработчика, но BufferedImage не может быть разрешен. - person Mr Jackson; 17.05.2011
comment
@Mr Jackson, если у вас сейчас нет проблем с банкой, вам не нужно добавлять проект в путь сборки. См. раздел отредактировано выше. - person 100rabh; 18.05.2011
comment
Спасибо! теперь все, что мне нужно, это захватить изображение и открыть его с помощью FileInputStream. правильно? - person Mr Jackson; 18.05.2011
comment
@Mr Jackson Да. Хотя есть и другие способы, например, прямое декодирование InputStream для чтения штрих-кода и т. Д. И т. Д. Просто выберите то, что вам удобно. - person 100rabh; 18.05.2011

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

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

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

person inazaruk    schedule 17.05.2011
comment
Спасибо за быстрый ответ. Я скачал весь проект. я могу извлечь из него библиотеку (/android/), но что мне делать с файлами? скопировать их в мой проект? - person Mr Jackson; 17.05.2011
comment
только сейчас я тебя понял. Я создал новый проект Android из источника и перенаправил его в каталог /andoroid/ из zxing. но я получаю слишком много ошибок. вот скриншот i52.tinypic.com/16gcwav.png - person Mr Jackson; 17.05.2011
comment
По этому скриншоту я никак не могу догадаться, в чем ваши проблемы :) Пожалуйста, выкладывайте логи ошибок компиляции. - person inazaruk; 17.05.2011
comment
Я думаю, что эти ошибки связаны с недопустимым символом в файле XML. Как только вы очистите XML, будет сгенерирован файл R, и все ошибки в пакетах исчезнут. - person MataMix; 19.06.2012

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

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

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

person ParikshitSinghTomar    schedule 17.07.2014