Pregunta

Estoy tratando de integrar el código QR ZXing en mi aplicación Android sin instalar la aplicación de escáner de código de barras, he seguido los pasos como:

1) En primer lugar, he descargado el archivo zxing.zip y los extraí

2) Abra el proyecto ZXing como un proyecto existente en Android y luego vaya a la carpeta de Android y abra la carpeta Android y también incluya el archivo Core.jar en el proyecto ZXing llamado CaptureActivity.

3) He utilizado el proyecto de captureactivity como una biblioteca en mi proyecto llamado 'QRCodesample'. (Problema al incluir la cautureactividad como biblioteca)

4) Mi código es el siguiente 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");
        }
    }
}

 }

El archivo manifiesto es:

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

y no está agregando biblioteca tambien

LibraryInformation

Cuando intento ejecutar mi proyecto, el mensaje de error es:

No se puede instanciar la actividad ComponentInfo {com.qr.code/com.qr.code}: java.lang.classnotfoundexception: com.qr.code en cargador dalvik.system.pathclassloader [/data/app/com.qr.code-1 .APK

¿Fue útil?

Solución

Finalmente obtuve la respuesta,

A partir de ADT 14, los campos de recursos (como R.ID.Decode) ya no son constantes cuando se definen en proyectos de biblioteca

Entonces, en la biblioteca ZXing-> android-> com.google.zxing.client.android.captureactivityhandler.java y decodehandler.java

Reemplace estas dos clases Switch Declares de casos con IF-Else, y luego importe esta biblioteca ZXing en su proyecto.

El resto de la codificación de mi propio proyecto es el mismo ... solo el problema con las clases de la biblioteca, ya que no se actualizan según ADT 14 ..

Kanika

Otros consejos

Para todos esos usuarios de Android Studio/Gradle

Bien chicos, como mi tarea hoy era integrar ZXing en una aplicación de Android y no había buenas fuentes para la entrada por todas partes, le daré una pista de lo que hizo que mi éxito, porque resultó ser muy fácil (en la versión 2.*).

Hay un repositorio de GIT realmente práctico que proporciona el proyecto de la biblioteca de Android ZXing como un archivo AAR.

Todo lo que tienes que hacer es agregar esto a tu compilación.

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

Y Gradle hace toda la magia para compilar el código y lo hace accesible en su aplicación.

Para iniciar el escáner después, use esta clase/método:

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

Si ya visitó el enlace, verá que solo copiaré y pegé el código desde allí el readme de Git. ¡Si no vaya allí para obtener más información y ejemplos de código!

Espero ser útil para futuros lectores. Paz :)

Debe seguir el paso según el enlace

http://www.androidaz.com/development/zxing-qr-reader-direct-integration

puedes descargar core.jar desde

http://repo1.maven.org/maven2/com/google/zxing/core/2.2/

Lo anterior está funcionando para mí, si su programa todavía solo pone el núcleo-2.2.Jar en libs y limpia su proyecto

Tuve el mismo problema y después de horas luchando con él finalmente logré resolverlo así. Como Rubiraj está señalando

*Haga clic derecho en su proyecto> Propiedades> Android> (en la biblioteca de pestañas) Agregue el proyecto ZXing *

Suponiendo que pudiera crear correctamente el proyecto ZXing como una biblioteca como se explica aquí:http://damianflannery.wordpress.com/2011/06/13/ingrate-zxing-barcode-scanner-into-your-android-appnatent-seing-eclipse/

MaterialBarcodescanner: Lector de códigos de barras fácil de usar para su proyecto Android (utiliza la API de visión móvil de Google).

  1. Proporcionar dependencia de graduación

    compilar 'com.edwardvanraak: material Barcodescanner: 0.0.6-alfa'

  2. Construir un Barcodescanner de material

    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();
    }
    
  3. Conéctelo a un botón

    fab.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
     startScan();
    }
    });
    
  4. ¡Empiece a escanear!

Paso a paso para configurar Zxing 3.2.1 en Eclipse

  1. Descargar zxing-Master.zip desde "https://github.com/zxing/zxing"
  2. Unzip Zxing-Master.zip, use Eclipse para importar el proyecto "Android" en ZXing-Master
  3. Descargue Core-3.2.1.jar desde "http://repo1.maven.org/maven2/com/google/zxing/core/3.2.1/"
  4. Cree la carpeta "LIBS" en el proyecto "Android" y pegue COR-3.2.1.Jar en la carpeta Libs
  5. Haga clic en el proyecto: elija "Propiedades" -> "Compilador Java" para cambiar el nivel a 1.7. Luego haga clic en el objetivo de compilación del proyecto "Android" Cambiar "a Android 4.4.2+, porque el uso de 1.7 requiere compilar con Android 4.4
  6. Si "CameraconfigurationUtils.java" no existe en "Zxing-Master/Android/App/Src/Main/Java/Com/Google/Zxing/Client/Android/Camera/". Puede copiarlo de "Zxing-Master/Android-Core/SRC/Main/Java/Com/Google/ZXing/Client/Android/Camera/" y pegar a su proyecto.
  7. Proyecto de limpieza y construcción. Si su proyecto muestra un error sobre "Switch - Case", debe cambiarlos a "si - else".
  8. Terminado. Proyecto de limpieza y construcción. Puede hacer clic en "Proprties"> "Android"> Haga clic en "IS Bibliotecas" para usar para su proyecto
  1. Después de importar ZXing como proyecto existente, Propiedades> Java BuildPath> Compruebe "IS Biblioteca" (botón de verificación) e intente agregar ZXing como biblioteca.

  2. Cerciorarse webclass.class existir en tu QRcodesampleActivity.java

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top