Интегрируйте сканер QR-кода ZXing без установки сканера штрих-кода

Я пытаюсь интегрировать QR-код ZXing в свое приложение для Android без установки приложения BarCode Scanner, я выполнил следующие шаги:

1) Сначала я скачал файл ZXing.zip и распаковал его.

2) откройте проект ZXing как существующий проект Android, а затем перейдите в папку Android и откройте папку Android, а также включите файл core.jar в проект ZXing с именем CaptureActivity.

3) Я использовал проект CaptureActivity в качестве библиотеки в своем проекте под названием «QRCodeSample». (Проблема с включением CaptureActivity в качестве библиотеки)

4) Мой код, как показано ниже3:

   public class QRCodeSampleActivity extends Activity {
Button b1;
static String contents;

public static final int REQUEST_CODE = 1;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    b1 = (Button) findViewById(R.id.button1);
    b1.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            /*Intent intent = new Intent("com.google.zxing.client.android.SCAN");
            intent.putExtra("com.google.zxing.client.android.SCAN.SCAN_MODE",
                    "QR_CODE_MODE");
            startActivityForResult(intent, 0);*/
            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) {
            contents = intent.getStringExtra("SCAN_RESULT");
            String format = intent.getStringExtra("SCAN_RESULT_FORMAT");
            Log.i("Barcode Result", contents);
            Intent i1 = new Intent(QRCodeSampleActivity.this, webclass.class);
            startActivity(i1);
            // Handle successful scan
        } else if (resultCode == RESULT_CANCELED) {
            // Handle cancel
            Log.i("Barcode Result","Result canceled");
        }
    }
}

 }

Файл манифеста:

<uses-permission android:name="android.permission.CAMERA"/>

<application
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >

     <activity android:name="com.google.zxing.client.android.CaptureActivity"
           android:screenOrientation="landscape"
           android:configChanges="orientation|keyboardHidden"
           android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
           android:windowSoftInputMode="stateAlwaysHidden">
           <intent-filter>
              <action android:name="android.intent.action.MAIN"/>
              <category android:name="android.intent.category.DEFAULT"/>
           </intent-filter>
           <intent-filter>
              <action android:name="com.google.zxing.client.android.SCAN"/>
              <category android:name="android.intent.category.DEFAULT"/>
            </intent-filter>


    </activity>
    <activity
        android:label="@string/app_name"
        android:name=".QRCodeSampleActivity" >
       <intent-filter >
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

    </activity>


    <activity  android:name=".webclass"></activity>

</application>

</manifest>

и это не добавление библиотеки также

Информация о библиотеке

Когда я пытаюсь запустить свой проект, сообщение об ошибке:

Не удалось создать экземпляр активности ComponentInfo{com.qr.code/com.qr.code}: java.lang.ClassNotFoundException: com.qr.code в загрузчике dalvik.system.PathClassLoader[/data/app/com.qr.code-1 .apk]


person Kanika    schedule 01.12.2011    source источник
comment
Включить ZXing можно Я это сделал. Я думаю, вы используете некоторые другие классы. Я не могу вспомнить, что zxing использует пространство имен com.qr.code   -  person rekire    schedule 01.12.2011
comment
Почему вы используете проект библиотеки. Вы можете собрать загруженную библиотеку zxing в файл jar с помощью ant и включить этот файл jar в свой проект. Вот ссылка на инструкции code.google.com/p/zxing/wiki/GettingStarted.   -  person blessenm    schedule 01.12.2011
comment
Вы уверены, что это работает и для Android? Я сделал свою собственную библиотеку с некоторыми пользовательскими расширениями.   -  person rekire    schedule 01.12.2011
comment
@blessenm: когда я извлек файл ZXing, я преобразовал основную папку в него как файл core.jar и добавил его в свой проект.   -  person Kanika    schedule 01.12.2011
comment
вы поместили проект и библиотеку на один и тот же раздел диска   -  person Abdrahmn_msi    schedule 08.06.2014
comment
Я ответил на аналогичный вопрос здесь stackoverflow.com/a/35822289/3470479   -  person Prakhar1001    schedule 06.03.2016


Ответы (7)


Наконец я получил ответ,

Начиная с ADT 14, поля ресурсов (такие как R.id.decode) больше не являются константами при определении в библиотечных проектах

Итак, в библиотеке ZXing->android->com.google.zxing.client.android.CaptureActivityHandler.java и DecodeHandler.java

Замените оба этих класса операторов case на if-else, а затем импортируйте эту библиотеку ZXing в свой проект.

Остальная часть кода моего собственного проекта такая же... просто проблема с классами библиотеки, поскольку они не обновляются, как в соответствии с ADT 14..

Каника

person Kanika    schedule 02.12.2011
comment
Пожалуйста, не интегрируйте наш код как библиотечный проект. Пожалуйста, напишите свое собственное приложение для сканирования и повторно используйте фрагменты, если вам нужно. Мы не открывали исходный код, чтобы вы могли клонировать его таким образом. - person Sean Owen; 02.12.2011
comment
Я сделал все как показано, но все же получил это исключение. Почему я не могу добраться до этих классов? Я добавил его как библиотеку, а также добавил core.jar в качестве внешней банки. AndroidRuntime (6316): java.lang.RuntimeException: невозможно создать экземпляр активности ComponentInfo{com.sonqr/com.google.zxing.client.android.CaptureActivity}: java.lang.ClassNotFoundException: com.google.zxing.client.android. Захват активности - person Mustafa Güven; 05.05.2012

Для всех пользователей Android Studio/Gradle

Итак, ребята, так как моей задачей сегодня было интегрировать ZXING в Android-приложение, и не было хороших источников для ввода, я дам вам подсказку, что сделало мою работу успешной - потому что это оказалось очень просто< /strong> (в версии 2.*).

Существует действительно удобный репозиторий git, который предоставляет проект библиотеки zxing android в виде архива AAR.

Все, что вам нужно сделать, это добавить это в свой build.gradle

repositories {
    mavenCentral()

    maven {
        url "https://raw.github.com/embarkmobile/zxing-android-minimal/mvn-repo/maven-repository/"
    }
}

dependencies {
    compile 'com.google.zxing:core:2.2'
    compile 'com.embarkmobile:zxing-android-minimal:1.2.1@aar'
}

и Gradle делает всю магию для компиляции кода и делает его доступным в вашем приложении.

Чтобы впоследствии запустить сканер, используйте этот класс/метод:

IntentIntegrator.initiateScan(this);    // `this` is the current Activity

Если вы уже посетили ссылку, вы увидите, что я просто скопировал и вставил код из git readme. Если нет, идите туда, чтобы получить больше информации и примеров кода!

Надеюсь быть полезным для будущих читателей. Мир :)

person Langusten Gustel    schedule 21.05.2014
comment
Мне кажется, что это действительно полезно только для штрих-кодов. Мне нужно использовать его QR-коды. Я ошибся? - person KairisCharm; 08.02.2015
comment
Привет, я скачал исходники по ссылке, которую ты дал. Можно ли скомпилировать его в файл jar, а затем импортировать в мой проект студии Android? Если да, можете ли вы предоставить ссылку/инструкции по его созданию? Я был бы очень счастлив. Заранее спасибо. - person greenskin; 25.03.2015
comment
Привет, зеленокожий, на странице xzing на github есть еще несколько входных данных (первый раздел) github.com/zxing/zxing/wiki/Getting-Started-Developing - person Langusten Gustel; 25.03.2015
comment
@LangustenGustel У меня есть один вопрос. Я интегрировал zxing, как вы сказали. Мне нужно настроить предварительный просмотр камеры? Как добавить кнопку включения/выключения фонарика и панель инструментов вверху? Можно ли это сделать, когда вы запускаете его через Intent? - person Isuru; 18.02.2016

У меня была такая же проблема, и после нескольких часов борьбы с ней мне наконец удалось решить ее так. как указывает Рубирай

*Щелкните правой кнопкой мыши проект > Свойства > Android > (в библиотеке вкладок) Добавьте проект Zxing *

Предполагая, что вы смогли правильно создать проект Zxing в виде библиотеки, как это объясняется здесь: -android-app-natively-using-eclipse/" rel="nofollow">http://damianflannery.wordpress.com/2011/06/13/integrate-zxing-barcode-scanner-into-your-android-app- изначально-использующее-затмение/

person Pej    schedule 02.01.2013

Вы должны выполнить шаг, указанный по ссылке

http://www.androidaz.com/development/zxing-qr-reader-direct-integration

вы можете загрузить core.jar из

http://repo1.maven.org/maven2/com/google/zxing/core/2.2/

Вышеупомянутое работает для меня, если ваша программа все еще просто помещает core-2.2.jar в библиотеки и очищает ваш проект

person Piyush    schedule 28.09.2013
comment
это стандартное исправление? Вы опубликовали один и тот же ответ на несколько вопросов - person acutesoftware; 28.09.2013
comment
Я уже давно публиковал это, но посмотрите эту ссылку, если она поможет androiddevelopersolutions.com/2012/06/ Дайте мне знать, чтобы я обновил свой комментарий - person Piyush; 02.10.2015

MaterialBarcodeScanner: простой в использовании считыватель штрих-кодов для вашего Android-проекта (использует Google Mobile Vision API).

  1. Обеспечьте зависимость градиента

    скомпилировать 'com.edwardvanraak: MaterialBarcodeScanner: 0.0.6-ALPHA'

  2. Создайте сканер штрих-кодов материалов

    private void startScan() {
        /**
         * Build a new MaterialBarcodeScanner
         */
        final MaterialBarcodeScanner mBarcodeScanner 
                 = new MaterialBarcodeScannerBuilder()
                .withActivity(MainActivity.this)
                .withEnableAutoFocus(true)
                .withBleepEnabled(true)
                .withBackfacingCamera()
                .withText("Scanning...")
                .withResultListener(new MaterialBarcodeScanner.OnResultListener() {
                    @Override
                    public void onResult(Barcode barcode) {
                        barcodeResult = barcode;
                        result.setText(barcode.rawValue);
                    }
                })
                .build();
        mBarcodeScanner.startScan();
    }
    
  3. Подключи его к кнопке

    fab.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
     startScan();
    }
    });
    
  4. Начать сканирование!

person Rajendhiran Easu    schedule 19.08.2016
comment
Как я могу использовать эту библиотеку для непрерывного сканирования (например, без нажатия кнопки)? - person LRMAAX; 05.05.2017

Пошаговая инструкция по настройке 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», чтобы изменить уровень на 1.7. Затем нажмите «Android», измените «Цель сборки проекта» на 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. Очистить и построить проект. Если ваш проект показывает ошибку о «переключателе — регистре», вы должны изменить их на «если — иначе».
  8. Завершенный. Очистить и построить проект. Вы можете нажать «Свойства»> «Android»> нажать «Библиотеки», чтобы использовать их для своего проекта.
person Anh Duy    schedule 05.11.2015

  1. После импорта Zxing в качестве существующего проекта выберите «Свойства» > «Путь сборки Java» > «Проверить «является библиотекой» (кнопка «Проверить»), а затем попробуйте добавить Zxing в качестве библиотеки.

  2. Убедитесь, что webclass.class существует в вашем QRcodesampleActivity.java

person Rubiraj    schedule 22.03.2012