Интегрируйте сканер QR-кода ZXing без установки сканера BarCode - PullRequest
25 голосов
/ 01 декабря 2011

Я пытаюсь интегрировать ZXing QR-код в мое приложение для 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>

и его библиотека не добавляется также

LibraryInformation

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

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

Ответы [ 7 ]

23 голосов
/ 02 декабря 2011

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

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

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

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

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

Каник

17 голосов
/ 21 мая 2014

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

Хорошо, ребята, поскольку моей сегодняшней задачей было интегрировать ZXING в приложение Android, и не было хороших источников для ввода данных во всем, Я дам вам подсказку, что сделало мой успех успешным - потому что это оказалось очень просто (в версии 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.Если нет, перейдите туда, чтобы получить больше информации и примеров кода!

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

4 голосов
/ 28 сентября 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 в libs и очищает ваш проект

3 голосов
/ 03 января 2013

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

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

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

2 голосов
/ 19 августа 2016

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

  1. Обеспечение зависимости gradle

    compile 'com.edwardvanraak: MaterialBarcodeScanner: 0.0.6-ALPHA'

  2. Создание MaterialBarcodeScanner

    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. Начать сканирование!

1 голос
/ 05 ноября 2015

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

  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» и измените «Цель сборки проекта» на 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», чтобы использовать его для своего проекта
0 голосов
/ 22 марта 2012
  1. После импорта Zxing в качестве существующего проекта, Свойства> Java Buildpath> Проверить «is library» (кнопка проверки) и затем попытаться добавить Zxing в качестве библиотеки.

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

...