Использование ZXing для создания приложения для сканирования штрих-кодов Android

Я искал, как добавить сканер штрих-кода в мое приложение. Кто-нибудь знает какие-либо примеры или знает, как это легко сделать?

7 ответов

Решение

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

Самый простой способ сделать это - позвонить в ZXing. SCANIntent из вашего приложения, вот так:

public Button.OnClickListener mScan = new Button.OnClickListener() {
    public void onClick(View v) {
        Intent intent = new Intent("com.google.zxing.client.android.SCAN");
        intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
        startActivityForResult(intent, 0);
    }
};

public void onActivityResult(int requestCode, int resultCode, Intent intent) {
    if (requestCode == 0) {
        if (resultCode == RESULT_OK) {
            String contents = intent.getStringExtra("SCAN_RESULT");
            String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
            // Handle successful scan
        } else if (resultCode == RESULT_CANCELED) {
            // Handle cancel
        }
    }
}

Нажатие на кнопку, связанную с mScan запускается непосредственно на экране сканера штрих-кода ZXing (или происходит сбой, если ZXing не установлен). Как только штрих-код будет распознан, вы получите результат в своем Activityздесь в contents переменная.

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

Наконец, если вы хотите интегрировать сканирование штрих-кода непосредственно в свое приложение, не полагаясь на то, что установлено отдельное приложение ZXing, тогда это проект с открытым исходным кодом, и вы можете это сделать!:)


Редактировать: Кто-то отредактировал это руководство в ответе (звучит немного странно, я не могу подтвердить его точность, и я не уверен, почему они используют Eclipse в 2015 году):

Шаг за шагом, чтобы настроить zxing 3.2.1 в Eclipse

  1. Загрузите zxing-master.zip с веб-сайта https://github.com/zxing/zxing
  2. Разархивируйте zxing-master.zip, используйте eclipse для импорта проекта "android" в zxing-master
  3. Загрузите core-3.2.1.jar с веб-сайта http://repo1.maven.org/maven2/com/google/zxing/core/3.2.1/
  4. Создайте папку "libs" в проекте "android" и вставьте cor-3.2.1.jar в папку libs
  5. Нажмите на проект: выберите "свойства" -> "Java Compiler", чтобы изменить уровень до 1.7. Затем нажмите "Android" и измените "Project build target" на android 4.4.2+, потому что для использования 1.7 требуется компиляция с Android 4.4
  6. Если "CameraConfigurationUtils.java" не существует в "zxing-master/android/app/src/main/java/com/google/zxing/client/android/camera/". Вы можете скопировать его из "zxing-master/android-core/src/main/java/com/google/zxing/client/android/camera/" и вставить в свой проект.
  7. Очистить и построить проект. Если ваш проект показывает ошибку о "switch - case", вы должны изменить их на "if - else".
  8. Завершено. Очистить и построить проект. Вы можете нажать "Proprties" > "Android" > нажать "Is Libraries", чтобы использовать его для своего проекта.

У меня была проблема с имплементацией кода, пока я не нашел какой-то веб-сайт (я не могу найти его снова прямо сейчас), который объяснил, что вам необходимо включить имя пакета в имя intent.putExtra.

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

intent.putExtra("SCAN_MODE", "QR_CODE_MODE");

в

intent.putExtra("com.google.zxing.client.android.SCAN.SCAN_MODE", "QR_CODE_MODE");

Это работало отлично. Просто совет для любого другого начинающего программиста andorid.

Использование предоставленного IntentInegrator лучше. Это позволяет вам предложить пользователю установить сканер штрих-кода, если у него его нет. Это также позволяет настраивать сообщения. Константа IntentIntegrator.REQUEST_CODE содержит значение кода запроса для onActivityResult для проверки в приведенном выше блоке if.

IntentIntegrator intentIntegrator = new IntentIntegrator(this); // where this is activity 
intentIntegrator.initiateScan(IntentIntegrator.ALL_CODE_TYPES); // or QR_CODE_TYPES if you need to scan QR

IntentIntegrator.java

Если вы хотите включить в свой код и не использовать IntentIntegrator, который рекомендует библиотека Zxing, вы можете использовать некоторые из этих портов

http://code.google.com/p/android-zxinglib/

http://code.google.com/p/android-quick-response-code/

Я использую первый и работает отлично! У него есть пример проекта, чтобы попробовать его

Использование Zxing таким способом требует, чтобы пользователь также установил приложение сканера штрих-кода, что не идеально. То, что вы, вероятно, хотите, это встроить Zxing в ваше приложение напрямую.

Я настоятельно рекомендую использовать эту библиотеку: https://github.com/dm77/barcodescanner

Требуются все сумасшедшие проблемы сборки, с которыми вы столкнетесь, пытаясь интегрировать Xzing или Zbar напрямую. Он использует эти библиотеки под обложками, но оборачивает их в очень простой в использовании API.

Обнаружение штрих-кода теперь доступно в сервисах Google Play. Лаборатория кода процесса установки, вот api docs и пример проекта.

Вы можете использовать это краткое руководство по началу работы http://shyyko.wordpress.com/2013/07/30/zxing-with-android-quick-start/ с простым примером проекта для создания приложения для Android без IntentIntegrator.

Другие вопросы по тегам