Soru Android Studio'da ZXing'i entegre edin


Yaptığım tüm adımları açıklamaya başlayacağım ve sonunda sorun nedir?

  1. ZXing-2.2'yi indirin https://code.google.com/p/zxing/downloads/list
  2. Zxing-2.2'de extrac.
  3. Apache Ant'i indirin ve kurun http://www.youtube.com/watch?v=XJmndRfb1TU
  4. Windows Komut Satırı (Run-> CMD) kullanımıyla, ayıklanan dizine gidin
  5. Komut satırı penceresinde - 'ant -f core / build.xml' yazıp Enter'a basın ve Apache'nin sihrini kullanmasına izin verin

Şu anda gibi ZXing kütüphanesini doğrudan Android uygulamasına entegre etme

Ama Wooops, "Buildfile: core \ build.xml mevcut değil! Oluşturulamadı. Tamam. 6. ZXing'i içe aktarma - eksik çekirdek / build.xml

Şimdi evet, benim core.jar'ım var.

  1. Android Studio'yu açın, Dosya -> İçeri Aktarım -> Seç / android / in /zxing-2.2/ -> Mevcut kaynaklardan proje oluştur -> Proje adı: andoid -> Kaynak dosyaları ... hepsi işaretli Sonraki -> Kütüphaneler (cant hiçbir şey yapmayın) Sonraki -> Modüller (android kontrol edildi) Sonraki -> SDK 1.7 Sonraki -> Son

Project Open -> Build -> Rebuild projesi ile

100 hata 19 uyarı

File -> project Structure -> Libraries -> Add -> Java -> Daha önce oluşturduğum core.jar'ı seçin ve OK -> Kütüphane 'core' seçili modüllere eklenecektir. (android) Tamam -> Tamam ve Proje Yapısı İletişiminde Tamam.

Build -> Yeniden İnşa Projesi

15 hata 20 uyarı

Tüm hatalar hata: sabit ifade gerekli ve anlıyorum Android'de ZXing projesinin Anahtar durumlarda hata  Tüm anahtarlar, eğer seçim için değiştiririm.

0 hata 20 uyarı

Tamam, şimdi devam et:

Dosya -> Yeni proje -> zxing_demo Sonraki -> Sonraki -> Boş Etkinlik Sonraki -> Son

Yeni projede -> Dosya -> İthalat modülü -> Ara ve / android / OK -> Mevcut kaynaklardan modül oluştur> - Sonraki -> Sonraki -> Sonraki -> Son

Şimdi explorer / android / / zging_demoProject / ve Dış Kütüphanelerde görebiliyorum

Şimdi kodumu değiştiriyorum

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
        }
    }
}

}

Şimdi sınayın, Run -> Debug

Ve 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 dosyasında bu satırda görebiliyorum

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

Kırmızı "CaptureActivity" ve hata diyor ki: 'CaptureActivity' sembolü çözülemiyor

File -> Proje Yapısı -> Modüller -> zxing_demo -> Bağımlılıklar -> Ekle -> Modül bağımlılığı -> android OK -> Uygula ve Tamam

Şimdi CaptureActivity iyi görünüyor

Tekrar hata ayıkla

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

Uygulamayı ve niyetleri kullanacağımı düşünüyorum, ama şimdi bu işi yapmak istiyorum, eğer şimdi ne olursa olsun bana lütfen söyleyin.


76
2017-08-31 01:42


Menşei


Bu sorunun çok fazla görüşü vardır, bu yüzden herhangi bir kişiye yardımcı olması durumunda [işte benim çok benzer problemim] [1] [1]: stackoverflow.com/questions/20334572/... - Daniel Wilson


Cevaplar:


ZXING'i bir Android uygulamasına entegre ediyordum ve her şeyin girişi için iyi bir kaynak yoktu, size neyin işe yaradığına dair bir ipucu vereceğim - çünkü çok kolay olduğu ortaya çıktı.

Sağlayan gerçek bir kullanışlı git deposu var zxing AAR arşivi olarak android kütüphane projesi.

Tek yapmanız gereken bunu build.gradle'a eklemek.

repositories {
    jcenter()
}

dependencies {
    implementation 'com.journeyapps:zxing-android-embedded:3.0.2@aar'
    implementation 'com.google.zxing:core:3.2.0'
}

ve Gradle, kodu derlemek ve uygulamanızda erişilebilir kılmak için tüm sihri yapar.

Tarayıcıyı daha sonra başlatmak için bu sınıfı / yöntemi kullanın: Faaliyetten:

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

Bir Fragmandan:

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

Birkaç özelleştirme seçeneği vardır:

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();

Onlar bir .. sahip Numune-proje ve birkaç entegrasyon örneği sağlıyoruz:

Bağlantıyı daha önce ziyaret ettiyseniz, sadece kopyalayıp git README kodunu yapıştırdığımı göreceksiniz. Aksi takdirde, biraz daha içgörü ve kod örnekleri almak için oraya gidin.


200
2018-05-21 15:52



Büyük yardım. Zxing'i başka bir projeden ithal etmeye çalışan bir günde harcadım ve hiçbir yere gitmiyordum. Sonra bu bağlantıyı buldum ve BAM bitti. Sadece bu bağlantıdan yukarıdaki kod örneğini takip edin: github.com/zxing/zxing/wiki/Scanning-Via-Intent. - Jack BeNimble
Kod Çalışmaları !! Bir sorunum var, tarayıcı resmini istiyorum ve tarama ekranı için özel düzen eklemem gerekiyor mu? - Harsh Trivedi
Yönlendirmeyi değiştirmek için CaptureActivity'ı uzatan yeni bir Etkinlik oluşturun ve AndroidManifest.xml'inizdeki yönlendirmeyi belirtin. - ChaturaM
Uygulamamı Çalıştır bölümünde ContinuousCapture kullanarak çalıştırmayı denediğimde: Hata: Yürütme ': app: transformClassesWithDexForDebug' görevinde başarısız oldu. com.android.build.transform.api.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: 'komut' işlemini işleyin C: \ Program Files \ Java \ jdk1.8.0 _60 \ bin \ java.exe '' sıfır olmayan çıkış değeri 2 ile bitti - Konstantin Konopko
@Janpan; Evet öyle! - Langusten Gustel


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'
}

4
2018-05-04 06:11





Aynı sorunlarla karşılaşan herkes, basit adımları izleyin:

Projeyi içe aktar android indirilen zxing-master seçeneği kullanarak zip dosyası Import project (Eclipse ADT, Gradle, etc.) ve uygulama düzeyinize 2 satır kod yazarak ekleyin build.gradle dosya ve koşmaya hazırsınız.

Çok basit, yah ...

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'

    }

Son sürümü her zaman bulabilirsiniz core ve android core aşağıdaki linklerden:

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


2
2017-09-19 17:26



Perefct basit cevap :) Birçok Ar-Ge sonra bu bağlantıyı buldu ve bir sihir gibi görünüyor. - Ramkesh Yadav
şimdi En son sürüm Çekirdek ve Android Çekirdek bağımlılıklar {// mvnrepository.com/artifact/com.google.zxing/core         uygulama grubu: 'com.google.zxing', ad: 'çekirdek', sürüm: '3.3.2' // mvnrepository.com/artifact/com.google.zxing/android-core         uygulama grubu: 'com.google.zxing', ad: 'android çekirdekli', sürüm: '3.3.0'} - Ramkesh Yadav
Bunu yeni bir proje olarak ithal etmek istemeyen bir projede birleştirmek istiyorum, bunu nasıl başarabilirim? acil yardım gerekli :) - Ramkesh Yadav


Bu eğitici bana android stüdyosuna entegre olmam için yardımcı oldu: http://wahidgazzah.olympe.in/integrating-zxing-in-your-android-app-as-standalone-scanner/ eğer denersen BU

sadece AndroidManifest.xml dosyasına ekleyin

<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>

Umarım bu yardım!


0
2017-11-12 19:40



her iki bağlantı da 404 - prgmrDev