Интеграция ZXing в Android Studio

Я начну объяснять все шаги, которые я сделал, и в конце концов, в чем проблема.

  1. Загрузите ZXing-2.2 https://code.google.com/p/zxing/downloads/list
  2. Extrac все в zxing-2.2.
  3. Загрузите и установите Apache Ant http://www.youtube.com/watch?v=XJmndRfb1TU
  4. С помощью командной строки Windows (Run-> CMD) перейдите к извлеченному каталогу
  5. В окне командной строки – введите «ant -f core / build.xml» нажмите enter и пусть Apache работает с магией

На данный момент это похоже на интеграцию библиотеки ZXing прямо в мое приложение для Android

Но Wooops, «Buildfile: core \ build.xml не существует! Сбой сборки. Ok . 6. Импорт ZXing – отсутствует core / build.xml

Теперь да, у меня есть мой core.jar.

  1. Открыть Android Studio, Файл -> Импорт проекта -> Выбрать / android / in /zxing-2.2/ -> Создать проект из существующих источников -> Название проекта: andoid -> Исходные файлы для … все отмечены Далее -> Библиотеки Ничего не делать) Далее -> Модули (андроид проверен) Далее -> SDK 1.7 Далее -> Готово

С проектом Open -> Build -> Rebuild project

100 ошибок 19 предупреждений

Файл -> Структура проекта -> Библиотеки -> Добавить -> Java -> Выберите core.jar, который я создаю раньше, и ОК -> «Ядро библиотеки» будет добавлено к выбранным модулям. (Android) OK -> И ОК в диалоговом окне «Структура проекта».

Построение -> Реконструкция проекта

15 ошибок 20 предупреждений

Все ошибки являются ошибкой: требуется постоянное выражение, и я вижу ошибку в случаях переключения проекта ZXing в android. Я меняю все переключатели для if elses.

0 ошибок 20 предупреждений

Итак, теперь продолжайте:

Файл -> Новый проект -> zxing_demo Далее -> Далее -> Пустое действие Далее -> Готово

В новом проекте -> Файл -> Модуль импорта -> Поиск и выберите / android / OK -> Создать модуль из существующих источников Далее -> Далее -> Далее -> Далее -> Готово

Теперь я вижу в explorer / android / / zging_demoProject / и внешних библиотеках

Теперь я меняю свой код tu scan QR

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.zxing_demo" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="7" android:targetSdkVersion="16" /> <uses-permission android:name="android.permission.CAMERA"/> <uses-feature android:name="android.hardware.camera" /> <uses-feature android:name="android.hardware.camera.autofocus" android:required="false" /> <uses-feature android:name="android.hardware.touchscreen" android:required="false" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.example.zxing_demo.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:clearTaskOnLaunch="true" android:stateNotNeeded="true" android:configChanges="orientation|keyboardHidden" android:name="com.google.zxing.client.android.CaptureActivity" android:screenOrientation="landscape" 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> </application> 

MainActivity.java

 package com.example.zxing_demo; import android.app.Activity; import android.content.Intent; import android.os.Bundle; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); 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) { String contents = intent.getStringExtra("SCAN_RESULT"); String format = intent.getStringExtra("SCAN_RESULT_FORMAT"); // Handle successful scan } else if (resultCode == RESULT_CANCELED) { // Handle cancel } } } } 

Теперь протестируйте, запустите -> Debug

И CRASH.

Logcat

 08-31 02:58:28.085 20665-20665/com.example.zxing_demo E/AndroidRuntime: FATAL EXCEPTION: main java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.zxing_demo/com.google.zxing.client.android.CaptureActivity}: java.lang.ClassNotFoundException: com.google.zxing.client.android.CaptureActivity at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1891) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992) at android.app.ActivityThread.access$600(ActivityThread.java:127) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4448) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:823) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:590) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.ClassNotFoundException: com.google.zxing.client.android.CaptureActivity at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) at java.lang.ClassLoader.loadClass(ClassLoader.java:501) at java.lang.ClassLoader.loadClass(ClassLoader.java:461) at android.app.Instrumentation.newActivity(Instrumentation.java:1023) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1882) ... 11 more 

Я вижу в AndroidManifest.xml в этой строке

 android:name="com.google.zxing.client.android.CaptureActivity" 

«CaptureActivity» в красном цвете и ошибка: «Не удается разрешить символ« CaptureActivity »

Файл -> Структура проекта -> Модули -> zxing_demo -> Зависимости -> Добавить -> Зависимость от модуля -> android OK -> Применить и ОК

Теперь CaptureActivity выглядит хорошо

Отладка снова

 08-31 03:06:58.513 21740-21740/com.example.zxing_demo E/AndroidRuntime: FATAL EXCEPTION: main java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.zxing_demo/com.google.zxing.client.android.CaptureActivity}: java.lang.ClassNotFoundException: com.google.zxing.client.android.CaptureActivity at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1891) at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1992) at android.app.ActivityThread.access$600(ActivityThread.java:127) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1158) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:4448) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:823) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:590) at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.ClassNotFoundException: com.google.zxing.client.android.CaptureActivity at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) at java.lang.ClassLoader.loadClass(ClassLoader.java:501) at java.lang.ClassLoader.loadClass(ClassLoader.java:461) at android.app.Instrumentation.newActivity(Instrumentation.java:1023) at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1882) ... 11 more 

Я думаю, что я использую приложение и намерения, но теперь я хочу сделать эту работу, если кто-то сейчас слушает, скажите мне, пожалуйста: D Спасибо!

Solutions Collecting From Web of "Интеграция ZXing в Android Studio"

Хорошо, ребята, поскольку моей задачей сегодня было интегрировать ZXING в приложение для Android, и не было никаких хороших источников для ввода, я дам вам подсказку, что сделало меня успешной, потому что это оказалось очень легко .

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

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

 repositories { jcenter() } dependencies { compile 'com.journeyapps:zxing-android-embedded:3.0.2@aar' compile 'com.google.zxing:core:3.2.0' } 

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

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

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

Из фрагмента:

 IntentIntegrator.forFragment(this).initiateScan(); // `this` is the current Fragment // If you're using the support library, use IntentIntegrator.forSupportFragment(this) instead. 

Существует несколько вариантов настройки:

 IntentIntegrator integrator = new IntentIntegrator(this); integrator.setDesiredBarcodeFormats(IntentIntegrator.ONE_D_CODE_TYPES); integrator.setPrompt("Scan a barcode"); integrator.setCameraId(0); // Use a specific camera of the device integrator.setBeepEnabled(false); integrator.setBarcodeImageEnabled(true); integrator.initiateScan(); 

Они имеют пример-проект и предоставляют несколько примеров интеграции:

  • AnyOrientationCaptureActivity
  • ContinuousCaptureActivity
  • CustomScannerActivity
  • ToolbarCaptureActivity

Если вы уже посетили ссылку, вы увидите, что я просто копирую и вставляю код из git README. Если нет, пойдите туда, чтобы получить более подробные примеры и примеры кода!

Надеюсь, что это будет полезно для будущих читателей. Мир 🙂

 buttion.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new com.google.zxing.integration.android.IntentIntegrator(Fragment.this).initiateScan(); } }); public void onActivityResult(int requestCode, int resultCode, Intent data) { IntentResult result = IntentIntegrator.parseActivityResult(requestCode, resultCode, data); if(result != null) { if(result.getContents() == null) { Log.d("MainActivity", "Cancelled scan"); Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show(); } else { Log.d("MainActivity", "Scanned"); Toast.makeText(this, "Scanned: " + result.getContents(), Toast.LENGTH_LONG).show(); } } else { // This is important, otherwise the result will not be passed to the fragment super.onActivityResult(requestCode, resultCode, data); } } dependencies { compile 'com.journeyapps:zxing-android-embedded:3.2.0@aar' compile 'com.google.zxing:core:3.2.1' compile 'com.android.support:appcompat-v7:23.1.0' } 

Этот учебник поможет мне интегрироваться в андроид-студию: http://wahidgazzah.olympe.in/integrating-zxing-in-your-android-app-as-standalone-scanner/, если это возможно, попробуйте ЭТО

Просто добавьте в AndroidManifest.xml

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

Надеюсь эта помощь !.

Любой, кто сталкивается с теми же проблемами, следуйте простым шагам:

Импортируйте проект android из загруженного zip-файла zxing-master с помощью опции Import project (Eclipse ADT, Gradle, etc.) И добавьте два строковых кода в файле build.gradle уровне приложения, и вы готовы к запуску.

Так просто, yahh …

 dependencies { // https://mvnrepository.com/artifact/com.google.zxing/core compile group: 'com.google.zxing', name: 'core', version: '3.2.1' // https://mvnrepository.com/artifact/com.google.zxing/android-core compile group: 'com.google.zxing', name: 'android-core', version: '3.2.0' } 

Вы всегда можете найти core последней версии и core android core ниже ссылок:

https://mvnrepository.com/artifact/com.google.zxing/core/3.2.1 https://mvnrepository.com/artifact/com.google.zxing/android-core/3.2.0