Aller au contenu

Lecteur de code-barre zxing


Recommended Posts

Bonjour,

Je suis débutant dans le développement d'applications Android et je rencontre quelques problèmes. Pour le moment, je me focus sur une application permettant de lire les code barres (1D et 2D) qui puisse tourner sur une tablette (samsung Tab 2 10.1, Android 4.0.3). L'application que je souhaite faire tourner s'appelle zxing (z crossing), on peut la trouver ici.

Mon problème est le suivant: :mad:

L'application zxing utilise par défault la caméra dorsale de la tablette. Or cette même caméra est dépourvue d'autofocus sur la tablette samsung Tab 2, ce qui rend l'application inutilisable.

Mon but est donc de modifier le code source pour changer la caméra utilisée (qui est par défault la caméra dorsale). Et puisque cette application ne propose pas d'option pour règler le choix de la caméra... il faudrait selon moi compiler le code source pour obtenir l'application (fichier .apk), en modifiant la code source pour utiliser la caméra frontale.

Or, lorsque je build l'application (sous eclipse), à partir du code source obtenu sur le site linké plus haut, l'application crache au démarrage. Je venais donc ici pour savoir si l'un d'entre vous avait déjà réussi à build une application fonctionnelle à partir de ce code source, ou si vous pouviez essayer de le faire par vous-même, si vous en avez le temps et la motivation, afin de discuter des éventuels problèmes que vous pourriez rencontrer.

Merci d'avoir pris le temps de lire ce post !

Je me réjouis déjà vos réponses !

Gordak

Lien vers le commentaire
Partager sur d’autres sites

Rebonjour,

Je constate que j'ai peut-être posté mon message dans la mausaise section du forum... est-ce qu'un modérateur pourrait le déplacer ?

Si tel n'est pas le cas, quelle partie du forum conviendrait-elle le mieux à ce post ?

Gordak

Lien vers le commentaire
Partager sur d’autres sites

Merci pour ta réponse !

Je vais essayer de résumer la marche à suivre de ce que j'ai fait. Garde à l'esprit que je débute, donc je ne suis pas au fait de toutes les subtilités d'Eclipse et j'ai tendance à "googler" à chaque problème que je rencontre.

  1. Premièrement, je télécharge le fichier ZXing-2.0.zip à l'adresse suivante. et je le décompresse, sous C:\...\zxing-2.0
  2. Depuis Eclipse, Importe --> Android --> Existing Android Code Into Workspace. Je choisis ensuite le fichier zxing-2.0/android. Ceci importe donc un nouveau projet.
  3. Si je me rappelle bien, j'ai utilisé Ant Apache pour générer les fichiers core.jar et javase.jar. Ceci étant fait en configurant Ant comme expliqué ici. Puis en exécutant les commandes suivantes. Ceci génère les fichiers core.jar et javase.jar.
  4. Je fais une update du projet grâce aux commandes du SDK trouvées ici (updating a project).
  5. Ensuite, depuis Eclipse, clique droit sur mon projet --> Properties --> Java Build Path --> Add External JARs, là je choisis core.jar et javase.jar, qui se trouvent sous zxing/core et zxing/javase.
  6. Finalement, je build le projet. Dans Eclipse, clique droit sur le fichier build.xml --> Run as --> Build Ant.
  7. Je lance l'application avec un AVD 4.1.

Le soucis, c'est que l'application plante sur l'émulateur en me renvoyant l'erreur suivante:

"Unfortunately, Barcode scanner has stopped."

En essayant de chercher d'où pouvait provenir l'erreur, j'ai comparé mon fichier application.apk à celle fournie sur le même site. J'ai noté une énorme différence. Mon fichier classes.dex ne fait que 159 kb, alors qu'il devrait faire 365 kb (d'après le fichier .apk trouvé sur leur site).

Je me demandais donc si je n'avais pas oublié d'importer certaines classes dans mon projet ... mais je ne sais pas comment faire .... Ce qui est bizarre c'est que l'émulateur se lance quand même...

Sinon, en regardant les fichiers java, je vois que certaines librairies sont "deprecated" lorsque je les run sous Android 4.1. Mais même en channgeant l'AVD et la bibliothèque android, cela ne change rien.

Si vous avez des conseils à me donner, c'est volontiers que je les écoute ^_^

Gordak

Lien vers le commentaire
Partager sur d’autres sites

Haaaaaaaaaaaaa ça fait plaisir :D

Je sais ce qui ne fonctionnait pas!

Apparamment il n'était pas suffisant de créer un build path vers les fichiers core.jar et javase.jar. Il fallait les inclure dans le dossier libs du projet !

Une fois cela fait, tout fonctionnait.

Je passe donc à la phase II: modifier le code source pour que je puisse utiliser la caméra frontale.

Gordak

Modifié par Gordak
Lien vers le commentaire
Partager sur d’autres sites

Tadaaam, nouveau problème !

Bon cette fois, c'est une question qui touche surtout à l'organisation des fichiers du projets. Je m'explique:

L'application utilise une fonction de la classe android.hardware.Camera, qui est contenue dans notre dossier android.far sous forme de fichier binaire java (.class). Cette fonction s'appelle open(), elle permet de se connecter à une caméra.

Le truc, c'est que cette fonction android est utilisée par une classe de l'application, plus précisément dans le package com.google.zxing.client.android.camera. Ce que je veux faire c'est donc éditer la fonction open de la classe android.hardware.Camera. Mais ceci demande une connaissance de l'architecture d'un projet android que je n'ai pas (encore).

Est-ce que quelqu'un sait comment je peux "réécrire" la fonction open de la classe android.hardware.Camera afin de ne pas utilisée celle par défault ? Ou encore mieux, écrire une nouvelle fonction pour la classe android.hardware.Camera.

Gordak

Lien vers le commentaire
Partager sur d’autres sites

Re

Le code barre fonctionne plus ou moins, mais maintenant j'aimerais ajouter une nouvelle fonction.

Par exemple, une fois les code barre lu, j'aimerais avoir accès à une page internet et en retrouver des informations.

Par exemple, ce tutorialexplique comment utiliser RESTful, mais en essayant de le suivre, je ne suis arriivé à aucun résultat. Mais mon but est identique, c'est-à-dire pouvoir lire et éditer le contenu d'une page internet comme celle-ci.

Jusqu'à maintenant j'ai trouvé beaucoup de tutorials, de code java ou de librairies, mais ayant un niveau plus que faible en développement Android, à chaque fois je suis resté bloqué dans les tutos. Les codes sources java me sont carrément intutiles car je ne vois pas comment les utiliser si on ne me donne pas les fichiers xml qui font le lien avec l'interface...

Est-ce que vous connaitriez un tutorial super simple à suivre où l'on montre bien étape par étape comment réussir à faire ce que je voudrais ?

Merci pour votre aide !

Gordak

POST-EDIT:

Je me suis rendu compte qu'en lançant l'application sur un AVD 2.2 l'application fonctionnne parfaitement. Alors que quand je la lance sur un AVD 4.0.3 (qui est mon pbjectif) l'appli plante sans explication. Une idée d'où cela pourrait provenir ?

Modifié par Gordak
Lien vers le commentaire
Partager sur d’autres sites

Gordak,

Par principe, et pour pouvoir toucher plus de gens, fais ton application en 2.2 ou 2.3

De mon côté, je suis en 4.0.3 mais je fais mon appli en 2.3

Concernant la modification d'un fichier XML, il faut pouvoir le charger sur le téléphone, avant de pouvoir le modifier. Pour cela tu as plusieurs solutions:

- le sauvegarder directement sur le téléphone puis le lire pour trouver l'endroit que tu veux modifier;

- le charger via parsing dans une table d'une base de données de type SQLite pour facilement trouver la ligne à changer avant de recréer le XML pour le renvoyer sur internet;

Cdlt

Ophanin

Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...