Comment intégrer Zxing Scanner de code à Barres sans installer le réel zxing app (ne peut pas résoudre le symbole: .android.CaptureActivity)?
Je souhaite intégrer zxing scanner dans mon application sans besoin d'une application externe (zxing scanner à partir de play store). C'est mon code
Button scan = (Button) findViewById(R.id.scan_button);
scan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.setPackage("com.mypackage.app");
intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
startActivityForResult(intent, SCANNER_REQUEST_CODE);
}
});
@Override
public void onActivityResult(int requestCode, int resultCode, Intent intent) {
if (requestCode == SCANNER_REQUEST_CODE) {
//Handle scan intent
if (resultCode == Activity.RESULT_OK) {
//Handle successful scan
String contents = intent.getStringExtra("SCAN_RESULT");
String formatName = intent.getStringExtra("SCAN_RESULT_FORMAT");
byte[] rawBytes = intent.getByteArrayExtra("SCAN_RESULT_BYTES");
int intentOrientation = intent.getIntExtra("SCAN_RESULT_ORIENTATION", Integer.MIN_VALUE);
Integer orientation = (intentOrientation == Integer.MIN_VALUE) ? null : intentOrientation;
String errorCorrectionLevel = intent.getStringExtra("SCAN_RESULT_ERROR_CORRECTION_LEVEL");
} else if (resultCode == Activity.RESULT_CANCELED) {
//Handle cancel
}
} else {
//Handle other intents
}
}
AndroidManifest.xml
<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="com.google.zxing.client.android.SCAN"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
Mon Android Studio dit que ne peut pas résoudre symbole: .android.CaptureActivity
et si je l'exécute, l'erreur qui s'est passé
java.lang.ClassNotFoundException: Ne pas à trouver de la classe "com.google.zxing.client.android.CaptureActivity"
Ce qui s'est passé?
Vous devez vous connecter pour publier un commentaire.
Bien que déjà été répondu, je me sens comme en profondeur la solution pour ceux qui veulent l'utiliser comme une bibliothèque ZXing sans l'aide de toute installation automatique, la méthode comme ANT.
ZXing étant un projet open source permettent (comme décrit dans la ZXing site web), vous d'utiliser ses fonctionnalités comme l'un des projets de la bibliothèque plutôt que de forcer l'application 3ème partie de l'installation sur les utilisateurs de l'appareil, à mon avis, c'est le choix préféré pour la plupart des projets.
Il est important de noter que c'est acceptable par les créateurs et ne violera l'un de leurs conditions d'utilisation, puisque nous n'allons pas copier le code, mais simplement l'utiliser comme une bibliothèque de notre projet.
Le processus général est: est-ce
Ici est entièrement détaillé de la procédure pour les personnes à l'aide d'Eclipse (qui peut être très facilement mis en œuvre pour un Studio):
Le téléchargement du ZXing code source et le fichier de base
De l'importation de la ZXing projet Eclipse
Vous devriez maintenant voir capture d'activité dans votre espace de travail. Selon
le ZXing version que vous avez, vous pourriez avoir besoin pour attribuer core.jar fichier
le ZXing projet, afin de vérifier si c'est le cas pour votre version
ouvrez le dossier libs de la captureActivity projet et de vérifier si
core.jar fichier existe, si ce n'est pas que vous devez ajouter vous-même,
sinon, passez directement au chapitre suivant.
5.1. Pour ajouter le core.jar fichier cliquez-droit sur le captureActivity projet dans l'Eclipse de l'espace de travail et sélectionnez Build path>configurer
chemin de génération
5.2. À partir du menu latéral, sélectionnez Java Build Path et cliquez sur l'onglet Bibliothèques.
5.3.Cliquez sur "Add external JARs" et naviguez jusqu'à l'emplacement d'exportation d'origine ZXing zip.
5.4. Entrer dans la base du dossier et de sélectionner core.jar (le nom peut varier en fonction de ZXing version) et cliquez sur ouvrir
5.5. Vous devriez maintenant voir core.jar dans votre chemin de génération de la liste, cliquez sur le "bon de Commande et à l'Exportation" et l'onglet vérifier core.jar
La définition de ZXing comme une bibliothèque et fixant le code de
Maintenant, selon la version de ZXing que vous avez vous pourriez voir l'Éclipse de marque de certains des fichiers java contenant des erreurs, si c'est le cas, vous devez corriger le code pour correspondre android version de java, sinon il suffit de déplacer vers le prochain chapitre
8.1. Ouvrir chaque cassé java fichier dans l'éditeur et de le remplacer cassé les instructions Switch avec une chaîne de if Else, c'est un ennuyeux partie, je le sais.
Ajouter ZXing comme une bibliothèque de votre propre projet
L'ajout de ZXing méthodes requises par votre application,
Cette partie n'est pas vraiment un guide, mais simplement ce que j'ai trouvé utile pour mes besoins propres, jusqu'à présent, les deux méthodes sont principalement ces:
Le scanner et la capture d'un QR code:
Récupérer les résultats de l'analyse dans onActivityResult ():
Remarque que, comme dans toute autre activité dans android capture d'activité doivent également être définis dans le projet de manifeste, notez également que vous devez donner le projet de l'autorisation d'utiliser l'appareil comme suit :
J'espère que cela aidera d'autres personnes à épargner quelques bonnes heures de recherche.
En bonus, je vous recommande la lecture :
https://biocram.wordpress.com/2013/06/11/integrate-zxing-as-a-library-inside-an-android-project/
8.1
n'a pas besoin d'être dur, le plus avec android studio, pointez votre curseur surswitch
déclaration > appuyez suralt+enter
et le tour est joué! >Replace 'switch' with 'if'
, trouvé iciQue toutes les réponses que j'ai trouvé jusqu'à présent sont basées sur Eclipse et sont tout à fait en date de maintenant, je vais ajouter ma réponse à ajouter ZXing comme une bibliothèque autonome sur Android Studio (2.1.2).
J'ai mis le projet compilé sur Github https://github.com/tarun0/ZXing-Standalone-library il suffit d'ajouter le
zxing_standalone
module dans votre projet et vous serez bon d'aller. Pour plus de détails ou de le compiler pour les versions plus récentes, continuer la lecture.Il peut sembler long de la procédure, mais une fois que vous allez à travers elle, vous trouverez qu'il est assez facile et court.
android
répertoire à partir de ce. Donc, si vous arrive d'avoir ce dossier déjà, vous n'avez pas besoin de télécharger l'ensemble de la direction, qui est d'environ 126MB taille.core-x.x.x.jar
de http://repo1.maven.org/maven2/com/google/zxing/core/3.2.1/Project
de laProject Explorer
(se référer à l'image)New
>Module
>Import Gradle Project
. Maintenant, sélectionnez leandroid
répertoire à partir de la téléchargé le code source (à l'étape 1). (Référence de l'image ci-dessous pour le novice absolu). Vous pouvez éventuellement modifier le nom et laisser les paramètres par défaut pour l'importation.libs
et de mettre lecore.jar
fichier téléchargé à l'étape 2 dans ce dossier. Ensuite, ouvrezProject Structure
dans le menu fichier et ajouter cecore.jar
fichier en tant que dépendance.Télécharger CameraConfigurationalUtils.java et le coller dans le projet.
Maintenant faire quelques modifications dans le projet importé de gradle fichier.
Modifier la
apply plugin: 'com.android.application'
àapply plugin: 'com.android.library'
pour indiquer au système qu'il est d'une bibliothèque. Et supprimer leapplicationId ...
déclaration.Dans le projet importé du
Manifest.xml
dossier, de faire des modifications suivantes.Dans le
<application...
tag, retirez leandroid:icon...
etandroid:logo...
et de supprimer ce<category android:name="android.intent.category.LAUNCHER"/>
du filtre d'intention, car c'est une bibliothèque aujourd'hui et n'est pas censé être sur le lanceur (si vous ne retirez pas cela, vous finirez par avoir deux lanceur d'activités).Dans votre projet
build.gradle
fichier, dans ledependencies
bloc, ajoutez cette lignecompile project (':android')
Ici, remplacer leandroid
avec le nom que vous avez choisi lors de l'importation du projet à l'étape 4. De synchronisation et de nettoyer le projet. Vous verrez des erreurs dansswitch
consolidés.Cliquez sur les cases de switch et sélectionnez l'option
replace with if
option offerte par Android Studio.Que c'est. Maintenant, vous pouvez utiliser la bibliothèque ZXing dans votre propre application. 🙂
Utilisation de l'ajout d'une bibliothèque, il suffit d'utiliser la
Intents
comme indiqué dans la première réponse ci-dessus (copie de la même codes uniquement):Lors de la numérisation (comme sur en cliquant sur un bouton, envoyer Intention:
Puis, dans
OnActivityResult
:J'ai essayé d'être le plus descriptif possible. J'espère que les gens le trouvent utile.
Veuillez lire cette réponse par l'un des auteurs du code à l'égard de copier le code dans votre propre application: https://stackoverflow.com/a/9942761
Références:
https://stackoverflow.com/a/29818279
https://stackoverflow.com/a/29960361
Et quelques autres blogs/, de SORTE que les réponses.
svn checkout https://github.com/zxing/zxing/trunk/android
sur vous terminal pour obtenir uniquement les android répertoire.Je ne sais pas pourquoi c'est arrivé, mais enfin je utiliser une autre bibliothèque. J'utilise Zxing-android-minimes et tutoriel ici et ici. Maintenant, il fonctionne.
Je suis vraiment en retard mais je tiens à répondre à ce quelqu'un d'autre pour être aidé plus tard. Ce n'est pas à dire que les méthodes ci-dessus et la solution sont mauvais, c'est juste un complément d'info donc, pour le développeur, il/elle va choisir la meilleure façon de faire. Il est bon d'avoir des milliers de chemin à faire que d'en avoir un.
Donc, nous allons commencer notre gradle et ajouter
D'appeler le module (par exemple: sur le bouton de la souris):
Obtenir les résultats comme:
}
Pour plus d'info, vous pouvez consulter le lien
https://github.com/pethoalpar/ZxingExample
Si vous avez des problèmes à trouver le pot est comme moi, vous avez ici l'URL:
http://repo1.maven.org/maven2/com/google/zxing/
L'élaboration de stackex de réponse.... Créer une activité avec n'importe quel nom.
Dans le manifeste de définir l'orientation souhaitée ou laisser comme ci-dessous pour travailler à la fois paysage et portrait.
Enfin utiliser l'activité créée comme setCaptureActivity.
Espère que cette aide.
Dans mon code je suis arrivé à cette version:
avec
J'espère que cela aide quelqu'un.
Antonino
Voici une manière qui fonctionne sur eclipse:
ZXing intégration sur eclipse android app
Heureux d'intégration !