Интегрируйте сканер ZXING QR -кода без установки сканера штрих -кода
-
26-10-2019 - |
Вопрос
Я пытаюсь интегрировать ZXING QR -код в свое приложение Android без установки приложения Scanner Scanner штрих -кода, я выполнил шаги как:
1) Во -первых, я загрузил файл zxing.zip и его извлекла
2) Откройте проект ZXING в качестве существующего проекта Android, а затем перейдите в папку Android и откройте папку Android, а также включите файл core.jar в проект ZXING с именем CaptureActivity.
3) Я использовал проект Capturectivity в качестве библиотеки в моем проекте под названием «qrcodesample». (Проблема в включении каппеактивности как библиотеки)
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>
и он также не добавляет библиотеку
Когда я пытаюсь запустить свой проект, ошибка MSG:
Невозможно создать экземпляры ComponentInfo {com.qr.code/com.qr.code}: java.lang.classnotfoundexception: com.qr.code в загрузке dalvik.system.pathclassloader [/data/app/com.qr.code-1 .APK
Решение
Наконец я получил ответ,
По состоянию на ADT 14 поля ресурса (такие как R.Id.Decode) больше не являются постоянными, если они определены в библиотечных проектах
Итак, в ZXING Library-> Android-> com.google.zxing.client.android.captureactivityhandler.java и decodehandler.java
Замените оба этих класса переключить операторы корпуса IF-ELSE, а затем импортируйте эту библиотеку ZXING в свой проект.
Остальная часть кодирования моего собственного проекта такая же ... просто проблема с классами библиотеки, поскольку они не обновляются в соответствии с ADT 14 ..
Каника
Другие советы
Для всех этих пользователей Android Studio/Gradle
Хорошо, ребята, как моя задача сегодня состояла в том, чтобы интегрировать ZXING в приложение для Android, и не было никаких хороших источников для ввода повсюду, я дам вам подсказку, что сделало меня успешным - Потому что это оказалось очень легко (В версии 2.*).
Существует настоящий удобный репозиторий GIT, который обеспечивает проект библиотеки Android ZXING в качестве архива 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. Если не пойти туда, чтобы получить еще немного понимания и примеров кода!
Надеюсь быть полезным для будущих читателей. Мир :)
Вам нужно перейти на шаг, как указано по ссылке
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 и очистите свой проект
У меня была такая же проблема, и после нескольких часов боролась с ней, мне наконец -то удалось решить ее так. Как указывает Рубирадж
*Щелкните правой кнопкой мыши на свой проект> Свойства> Android> (под библиотекой вкладок) Добавьте проект ZXING *
Предполагая, что вы смогли правильно создать проект ZXING в качестве библиотеки, как это объясняется здесь:http://damianflannery.wordpress.com/2011/06/13/integrate-zxing-barcode-canner-into-your-android-app-naly-using-eclipse/
Materialbarcodescanner: простой в использовании чтения штрих -кода для вашего проекта Android (использует Google Mobile Vision API).
Обеспечить зависимость Градли
Compile 'com.edwardvanraak: Materialbarcodescanner: 0,0,6-альфа'
Построить материал, Barcodescanner
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(); }
Подключить к кнопке
fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { startScan(); } });
Начните сканирование!
Шаг за шагом к настройке ZXING 3.2.1 в Eclipse
- Скачать zxing-master.zip из "https://github.com/zxing/zxing"
- Unzip zxing-master.zip, используйте проект Eclipse для импорта «Android» в Zxing-Master
- Скачать Core-3.2.1.jar от "http://repo1.maven.org/maven2/com/google/zxing/core/3.2.1.1/"
- Создать папку "Libs" в "Android" проект "и вставьте COR-3.2.1.jar в папку Libs
- Нажмите на проект: выберите «Свойства» -> «Компилятор Java», чтобы изменить уровень на 1.7. Затем нажмите на «Android» изменить целевую цель проекта »на Android 4.4.2+, потому что использование 1.7 требует компиляции с Android 4.4
- Если "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/" и вставить в свой проект.
- Очистить и построить проект. Если ваш проект показывает ошибку о «Switch - Case», вы должны изменить их на «если - иначе».
- Завершенный. Очистить и построить проект. Вы можете нажать на «Proprties»> «Android»> нажмите «Is Libraries», чтобы использовать для вашего проекта
После импорта ZXING в качестве существующего проекта свойства> Java BuildPath> Проверьте «библиотека» (кнопка проверки), а затем попытайтесь добавить ZXING в качестве библиотеки.
Убедиться
webclass.class
существуют в вашемQRcodesampleActivity.java