#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).
Все, что я знаю при запуске этого проекта, я объяснил. При любом запросе оставляйте комментарий.