Подтвердить что ты не робот

Как интегрировать библиотеку ZXing в Android Studio для сканирования штрих-кодов?

Я смотрел по всему Интернету, как включить библиотеку zxing в свой проект, и я нашел этот учебник: http://blog.dihaw.com/integrating-zxing-in-your-android-app-as-standalone-scanner/

Но когда я дошел до того, что вам нужно проверить, что BeepManager добавляет импорт R, я получаю всевозможные ошибки в моем проекте (даже в MainActivity), что он не смог найти R.

Также я нашел этот https://github.com/journeyapps/zxing-android-embedded/blob/master/README.md, который казался намного проще, потому что он был автоматически интегрирован с помощью gradle, но когда я его синхронизирую выдает сообщение об ошибке, что он не может найти файлы.

Любая помощь будет оценена:) Я новичок в Android Studio.

EDIT:

Я добавил настройки второго метода (тот, у которого установлены параметры gradle), к моему сообщению build.gradle и 4:

Error:Failed to find: com.embarkmobile:zxing-android-legacy:2.0.0 
Error:Failed to find: com.google.zxing:core:3.0.1 
Error:Failed to find: com.embarkmobile:zxing-android-integration:2.0.0 
Error:Failed to find: com.embarkmobile:zxing-android-minimal:2.0.0

Любая помощь?

--- ОТВЕТ ---

Чтобы устранить эту проблему, мне пришлось отключить автономную работу на Gradle. Перейдите в настройки Android Studio > Gradle > Снимите флажок "Работа в автономном режиме" После этого вам хорошо идти!

4b9b3361

Ответ 1

Вам нужно добавить следующее в ваш build.gradle файл:

repositories {
    mavenCentral()

    maven {
        url "http://dl.bintray.com/journeyapps/maven"
    }
}

dependencies {
    // Supports Android 4.0.3 and later (API level 15)
    compile 'com.journeyapps:zxing-android-embedded:[email protected]'

    // Supports Android 2.1 and later (API level 7), but not optimal for later Android versions.
    // If you only plan on supporting Android 4.0.3 and up, you don't need to include this.
    compile 'com.journeyapps:zxing-android-legacy:[email protected]'

    // Convenience library to launch the scanning and encoding Activities.
    // It automatically picks the best scanning library from the above two, depending on the
    // Android version and what is available.
    compile 'com.journeyapps:zxing-android-integration:[email protected]'

    // Version 3.0.x of zxing core contains some code that is not compatible on Android 2.2 and earlier.
    // This mostly affects encoding, but you should test if you plan to support these versions.
    // Older versions e.g. 2.2 may also work if you need support for older Android versions.
    compile 'com.google.zxing:core:3.0.1'
}

Мой build.gradle файл:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 21
    buildToolsVersion "21.1.2"

    defaultConfig {
        applicationId "com.myapplication2"
        minSdkVersion 16
        targetSdkVersion 21
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

repositories {
    mavenCentral()

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

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:21.0.3'
    // Supports Android 4.0.3 and later (API level 15)
    compile 'com.embarkmobile:zxing-android-minimal:[email protected]'

    // Supports Android 2.1 and later (API level 7), but not optimal for later Android versions.
    // If you only plan on supporting Android 4.0.3 and up, you don't need to include this.
    compile 'com.embarkmobile:zxing-android-legacy:[email protected]'

    // Convenience library to launch the scanning and encoding Activities.
    // It automatically picks the best scanning library from the above two, depending on the
    // Android version and what is available.
    compile 'com.embarkmobile:zxing-android-integration:[email protected]'

    // Version 3.0.x of zxing core contains some code that is not compatible on Android 2.2 and earlier.
    // This mostly affects encoding, but you should test if you plan to support these versions.
    // Older versions e.g. 2.2 may also work if you need support for older Android versions.
    compile 'com.google.zxing:core:3.0.1'
}

Код здесь.

Кроме того, для того, чтобы использовать его, пожалуйста, напишите мой ответ на Stackoverflow здесь

Он содержит метод, а также простой код, который я тестировал.

Ответ 2

Начиная с версии 3 zxing-android-embedded вам нужно добавить их в свой build.gradle файл:

repositories {
    jcenter()
}

dependencies {
    compile 'com.journeyapps:zxing-android-embedded:[email protected]'
    compile 'com.google.zxing:core:3.2.0'
}

Выполните следующие шаги: https://github.com/journeyapps/zxing-android-embedded/

Теперь он также позволяет осуществлять портретный режим с простыми изменениями в IntentIntegrator и более простые способы настройки представлений.

Ответ 3

Самый простой способ интегрировать ZXing для сканирования штрих-кодов или Qr.

Для полного справочника: Сканировать штрих-код ZXing Android

Добавить в зависимости

compile 'me.dm7.barcodescanner:zxing:1.9' 

ScanActivity

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import com.google.zxing.Result;

import me.dm7.barcodescanner.zxing.ZXingScannerView;

public class ScanActivity extends AppCompatActivity implements ZXingScannerView.ResultHandler{

    private ZXingScannerView mScannerView;

    @Override
    public void onCreate(Bundle state) {
        super.onCreate(state);
        mScannerView = new ZXingScannerView(this);   // Programmatically initialize the scanner view
        setContentView(mScannerView);                // Set the scanner view as the content view
    }

    @Override
    public void onResume() {
        super.onResume();
        mScannerView.setResultHandler(this); // Register ourselves as a handler for scan results.
        mScannerView.startCamera();          // Start camera on resume
    }

    @Override
    public void onPause() {
        super.onPause();
        mScannerView.stopCamera();           // Stop camera on pause
    }

    @Override
    public void handleResult(Result rawResult) {
        // Do something with the result here
       // Log.v("tag", rawResult.getText()); // Prints scan results
       // Log.v("tag", rawResult.getBarcodeFormat().toString()); // Prints the scan format (qrcode, pdf417 etc.)

        MainActivity.tvresult.setText(rawResult.getText());
        onBackPressed();

        // If you would like to resume scanning, call this method below:
        //mScannerView.resumeCameraPreview(this);
    }
}

Ответ 4

Я работаю с этим:

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

compile 'com.google.zxing:core:3.2.1'
compile 'com.embarkmobile:zxing-android-minimal:[email protected]'
compile 'com.embarkmobile:zxing-android-integration:[email protected]'

Я рекомендую использовать IntentIntegrator

IntentIntegrator integrator = new IntentIntegrator(getActivity()); 
integrator.forSupportFragment(this).initiateScan();

RequestCode возвращается с IntentIntegrator.REQUEST_CODE