J'essaie d'intégrer le code QR ZXing dans mon application Android sans installer l'application BarCode Scanner. J'ai suivi les étapes suivantes:
1) Premièrement, j'ai téléchargé le fichier ZXing.Zip et l'extrais
2) ouvrez le projet ZXing en tant que projet existant Android, puis accédez au dossier Android, ouvrez le dossier Android et incluez également le fichier core.jar dans le projet ZXing nommé CaptureActivity.
3) J'ai utilisé le projet CaptureActivity comme bibliothèque dans mon projet nommé 'QRCodeSample' . (Problème d'intégration de CaptureActivity dans une bibliothèque).
4) Mon code est comme ci-dessous3:
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");
}
}
}
}
Le fichier manifeste est:
<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>
et sa bibliothèque ne pas ajouter aussi
Lorsque j'essaie d'exécuter mon projet, le message d'erreur est le suivant:
Impossible d'instancier l'activité ComponentInfo {com.qr.code/com.qr.code}: Java.lang.ClassNotFoundException: com.qr.code in loader dalvik.system.PathClassLoader [/data/app/com.qr.code-1 .apk]
Finalement j'ai eu la réponse,
À partir de ADT 14, les champs de ressources (tels que R.id.decode) ne sont plus constants lorsqu'ils sont définis dans des projets de bibliothèque
Donc, dans la bibliothèque ZXing-> Android-> com.google.zxing.client.Android.CaptureActivityHandler.Java et DecodeHandler.Java
Remplacez ces deux classes par if-else, puis importez cette bibliothèque ZXing dans votre projet.
Le reste de la codification de mon propre projet est la même ... juste le problème avec les classes de bibliothèque car elles ne sont pas mises à jour comme indiqué dans ADT 14 ..
Kanika
Pour tous les utilisateurs d'Android Studio/Gradle
Ok les gars, comme ma tâche aujourd’hui était d’intégrer ZXING dans une application Android et qu’il n’y avait pas de bonnes sources d’informations, je vais vous donner un indice sur ce qui a fait mon succès - parce que cela s’est avéré très facile (sur la version 2. *).
Il existe un véritable référentiel git très pratique qui fournit le projet de bibliothèque zxing Android sous forme d'archive AAR.
Tout ce que vous avez à faire est d’ajouter ceci à votre 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'
}
et Gradle fait toute la magie pour compiler le code et le rendre accessible dans votre application.
Pour démarrer le scanner par la suite, utilisez cette classe/méthode:
IntentIntegrator.initiateScan(this); // `this` is the current Activity
Si vous avez déjà visité le lien, vous verrez que je viens de copier-coller le code à partir de là, le fichier readme git. Si ce n'est pas le cas, allez-y pour obtenir plus d'informations et des exemples de code!
J'espère être utile pour les futurs lecteurs. Paix :)
Vous devez suivre l'étape indiquée par le lien
http://www.androidaz.com/development/zxing-qr-reader-direct-integration
vous pouvez télécharger core.jar à partir de
http://repo1.maven.org/maven2/com/google/zxing/core/2.2/
Ce qui précède fonctionne pour moi, si votre programme insère toujours le fichier core-2.2.jar dans les bibliothèques et nettoie votre projet.
J'ai eu le même problème et après des heures passées à me débattre, j'ai finalement réussi à le résoudre comme ceci. comme le montre Rubiraj
* Clic droit sur votre projet> Propriétés> Android> (sous la bibliothèque d'onglets) Ajouter le projet Zxing *
En supposant que vous avez pu créer correctement le projet Zxing en tant que bibliothèque, comme il est expliqué ici: http://damianflannery.wordpress.com/2011/13/integrate-zxing-barcode-scanner-into-your -Android-app-natively-using-Eclipse/
MaterialBarcodeScanner: Lecteur de code à barres facile à utiliser pour votre projet Android (API Google Mobile Vision).
Fournir une dépendance de grade
compiler 'com.edwardvanraak: MaterialBarcodeScanner: 0.0.6-ALPHA'
Construire 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();
}
Accrochez-le à un bouton
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startScan();
}
});
Lancer la numérisation!
Pas à pas pour configurer zxing 3.2.1 dans Eclipse
After importing Zxing as existing project, Properties > Java Buildpath > Check "is library" (check button) and then try to add Zxing as library.
Make sure webclass.class
exist in your QRcodesampleActivity.Java