Integrare scanner di codici a barre senza installare ZXing Barcode Scanner
-
26-10-2019 - |
Domanda
Sto cercando di integrare ZXing QR Code nella mia app Android senza installare Barcode Scanner app, ho seguito i passaggi:
1) In primo luogo Ho scaricato il file ZXing.zip ed estrarlo
2) aprire il progetto ZXing come un progetto esistente Android e poi andare nella cartella Android e aprire la cartella Android e includere anche il file core.jar nel progetto denominato ZXing CaptureActivity.
3) Ho usato il progetto CaptureActivity come libreria nel mio progetto denominato 'QRCodeSample'. (Problema nel compresa CaptureActivity come una libreria)
4) Il mio codice è il below3:
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");
}
}
}
}
Il file manifesto è:
<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>
e la sua biblioteca non aggiungendo anche
Quando sto cercando di eseguire il mio progetto, il msg di errore è:
Impossibile attività instantiate ComponentInfo {com.qr.code / com.qr.code}: java.lang.ClassNotFoundException: com.qr.code nel loader dalvik.system.PathClassLoader [/data/app/com.qr. code-1.apk]
Soluzione
Finalmente ho avuto la risposta,
Come di ADT 14, i campi di risorse (come R.id.decode) sono costanti più quando definito nei progetti della biblioteca
Così, alla biblioteca-ZXing> Android-> com.google.zxing.client.android.CaptureActivityHandler.java e DecodeHandler.java
Sostituire entrambe queste classi di passare istruzioni case con if-else, e quindi importare questa libreria ZXing nel progetto ..
Il resto della codifica del mio progetto è lo stesso ... solo il problema con le classi della libreria in quanto questi non vengono aggiornati in base in base alla ADT 14 ..
Kanika
Altri suggerimenti
Per tutti gli utenti Android Studio / Gradle là fuori
Ok ragazzi, come il mio compito oggi è stato quello di integrare ZXING in un'applicazione Android e non c'erano buone fonti per l'ingresso in tutto, io vi darà un suggerimento ciò che ha reso il mio successo - causa che si è rivelata molto facile (nella versione 2. *).
C'è un vero e proprio repository git pratico che offre il progetto della libreria Android ZXing come un archivio AAR.
Tutto quello che dovete fare è aggiungere questo alla tua 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'
}
e Gradle fa tutta la magia per compilare il codice e lo rende accessibile nella vostra app.
Per avviare lo scanner in seguito, utilizzare questa classe / metodo:
IntentIntegrator.initiateScan(this); // `this` is the current Activity
Se hai già visitato il link andando vedere che ho basta copiare e incollato il codice da lì il readme git. Se non va lì per prendere un po 'più chiaro e esempi di codice!
Spero di essere utile per i lettori futuri. Pace:)
È necessario seguire passo, come indicato dal link
http://www.androidaz.com/development/zxing- qr-reader-integrazione diretta
che è possibile scaricare da core.jar
http://repo1.maven.org/maven2/com /google/zxing/core/2.2/
È possibile che questo sta lavorando per me, se il programma ancora solo mettere il core-2.2.jar in librerie e la pulizia del progetto
Ho avuto lo stesso problema e dopo ore alle prese con essa sono finalmente riuscito a risolvere in questo modo. come Rubiraj sta puntando
* click destro sul vostro progetto> Proprietà> Android> (in biblioteca scheda) Aggiungere il progetto ZXing *
Dando per scontato che sono stati in grado di creare in modo corretto progetto ZXing come una libreria, come è spiegato qui: http://damianflannery.wordpress.com/2011/06/13/integrate-zxing-barcode-scanner-into-your-android-app-natively-using-eclipse/
MaterialBarcodeScanner:. Facile da utilizzare lettore codice a barre per il progetto Android (Usi Google Mobile Vision API)
-
Fornire Gradle dipendenza
di compilazione 'com.edwardvanraak: MaterialBarcodeScanner: 0.0.6-ALPHA'
-
Costruire un 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(); }
-
collegarlo ad un pulsante
fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { startScan(); } });
-
avviare la scansione!
Passo dopo passo per l'installazione ZXing 3.2.1 in Eclipse
- Scarica zxing-master.zip da " https://github.com/zxing/zxing "
- Unzip zxing-master.zip, utilizzare Eclipse per importare "Android" progetto in ZXing-master
- Scarica core-3.2.1.jar da " http : //repo1.maven.org/maven2/com/google/zxing/core/3.2.1/ "
- Creare "libs" cartella nel progetto "Android" e incollare cor-3.2.1.jar nella cartella libs
- Fare clic sul progetto: scegliete "Proprietà" -> "Java Compiler" al livello del cambio a 1,7. Poi clicca su "Android" cambiamento "build target Progetto" ad Android 4.4.2+, perché l'utilizzo di 1.7 richiede la compilazione con Android 4.4
- Se "CameraConfigurationUtils.java" non esistono in "ZXing-master / android / app / src / main / java / com / google / ZXing / client / android / videocamera /". È possibile copiare da "ZXing-master / android-core / src / main / java / com / google / ZXing / client / android / videocamera /" e incollare al vostro progetto.
- Pulire e del progetto di costruzione. Se il vostro show errore del progetto di "switch - caso", li si dovrebbe cambiare in "se - altro".
- Completato. Pulire e costruzione del progetto. È possibile fare clic su "parametri fisico"> "Android"> clicca su "è Libraries" per usare per il vostro progetto
-
Dopo aver importato ZXing come progetto esistente, Proprietà> Java Buildpath> Check "è la biblioteca" (pulsante di controllo) e quindi provare a aggiungere ZXing come biblioteca.
-
Assicurati che esistono
webclass.class
nella vostraQRcodesampleActivity.java