Интеграция сканера QR-кода ZXing без установки BarCode Scanner
Я пытаюсь интегрировать 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>
и его не добавляя библиотеку также
![LibraryInformation]()
Когда я пытаюсь запустить мой проект, сообщение об ошибке:
Невозможно создать экземпляр активности ComponentInfo {com.qr.code/com.qr.code}: java.lang.ClassNotFoundException: com.qr.code в загрузчике dalvik.system.PathClassLoader [/data/app/com.qr. код-1.apk]
Ответы
Ответ 1
Наконец, я получил ответ,
Начиная с ADT 14 поля ресурсов (такие как R.id.decode) больше не являются константами, когда они определены в проектах библиотеки
Итак, в библиотеке ZXing- > android- > com.google.zxing.client.android.CaptureActivityHandler.java и DecodeHandler.java
Замените оба этих класса на оператора case с if-else, а затем импортируйте эту библиотеку ZXing в свой проект.
Остальная часть кода моего проекта такая же... просто проблема с библиотечными классами, поскольку они не обновляются, как в соответствии с ADT 14..
Каника
Ответ 2
Для всех тех пользователей 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:[email protected]'
}
и Gradle делает всю магию для компиляции кода и делает его доступным в вашем приложении.
Чтобы запустить сканер впоследствии, используйте этот класс/метод:
IntentIntegrator.initiateScan(this); // `this` is the current Activity
Если вы уже посетили эту ссылку, вы увидите, что я просто скопировал и наклеил код отсюда git readme. Если вы не пойдете туда, чтобы получить более подробные примеры и примеры кода!
Надеемся, что это будет полезно для будущих читателей. Мир:)
Ответ 3
Вам нужно следовать шагу, указанному по ссылке
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 и очищает ваш проект
Ответ 4
У меня была одна и та же проблема, и после нескольких часов борьбы с ней я, наконец, смог ее решить. как Рубрайдж указывает
* Щелкните правой кнопкой мыши на своем проекте > Свойствa > Android > (в библиотеке вкладок) Добавьте проект Zxing *
Предполагая, что вы смогли правильно создать проект Zxing как библиотеку, как это объясняется здесь:
http://damianflannery.wordpress.com/2011/06/13/integrate-zxing-barcode-scanner-into-your-android-app-natively-using-eclipse/
Ответ 5
MaterialBarcodeScanner: простой в использовании считыватель штрих-кода для вашего Android-проекта (используется API Google Mobile Vision).
-
Укажите gradle зависимость
compile 'com.edwardvanraak: MaterialBarcodeScanner: 0.0.6-ALPHA'
-
Создайте 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();
}
-
Подключите его к кнопке
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startScan();
}
});
-
Начать сканирование!
Ответ 6
Шаг за шагом, чтобы установить 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/"
- Создайте папку "libs" в проекте "android" и вставьте cor-3.2.1.jar в папку libs
- Нажмите на проект: выберите "свойства" → "Компилятор Java", чтобы изменить уровень до 1.7. Затем нажмите на "Android" change "Project build target" на 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", вы должны изменить их на "if-else".
- Завершено. Очистить и построить проект. Вы можете нажать "Proprties" > "Android" > нажать "Библиотеки" для использования в вашем проекте.
Ответ 7
-
После импорта Zxing в качестве существующего проекта Properties > Java Buildpath > Check "is library" (кнопка check), а затем попробуйте добавить Zxing в качестве библиотеки.
-
Убедитесь, что webclass.class
существует в QRcodesampleActivity.java