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

StackOverflow https://stackoverflow.com/questions/2050263

Вопрос

На этот вопрос уже есть ответ здесь:

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

Это было полезно?

Решение

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

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

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. Завершено.Очистите и постройте проект.Вы можете нажать на "Свойства"> "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");

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

Лучше использовать предоставленный 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

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

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top