Autore Topic: Lettura barcode offline  (Letto 1307 volte)

Offline Cono86

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
Lettura barcode offline
« il: 18 Gennaio 2012, 10:39:18 CET »
0
Buongiorno ragazzi,
dovrei creare un'applicazione per un'azienda, deve effettuare la lettura del codice a barre in modalità offline. Mi spiego meglio, dal codice a barre dovrei estrapolarmi un id che identifica il prodotto associato. Le informazioni sui prodotti le ricevo tramite chiamata ad un ws e salvo i dati in un db, visto che devo lavorare offline. Ho già visto la libreria zxing, ma penso che comunque ci voglia la connessione.
Grazie in anticipo per eventuali risposte :)

Offline E.Musso

  • Utente junior
  • **
  • Post: 82
  • Respect: +17
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy GT-S5660
  • Play Store ID:
    Emiliano Musso
  • Sistema operativo:
    Windows 7
Re:Lettura barcode offline
« Risposta #1 il: 18 Gennaio 2012, 12:24:37 CET »
0
Ho creato una cosa del tutto simile alla tua, utilizzando proprio ZXING, e lavora offline: puoi pertanto installarla ed implementarla nella tua app senza problemi
Bollettazione Interventi - Un taglio ai costi di tipografia per professionisti!
--
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato

Offline Cono86

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
Re:Lettura barcode offline
« Risposta #2 il: 18 Gennaio 2012, 12:51:24 CET »
0
Ciao,
ti ringrazio per la pronta risposta. Sono alla prime armi con android ed ho un pò di difficoltà. Ti spiace di spiegarmi un pò + in dettaglio? Mi spiego meglio:
- la libreria zxing va solo importata?
-quali classi hai utilizzato per gestire la lettura ed il recupero dell'id?
-ti sei scaricata l'app barcode scanner sul cel?
Scusami per tutte queste domande :p

Offline E.Musso

  • Utente junior
  • **
  • Post: 82
  • Respect: +17
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy GT-S5660
  • Play Store ID:
    Emiliano Musso
  • Sistema operativo:
    Windows 7
Re:Lettura barcode offline
« Risposta #3 il: 18 Gennaio 2012, 13:57:31 CET »
0
Nessun problema, siamo tutti qui per aiutarci  :-P

Dunque, la ZXING l'ho installato come Barcode Scanner, quindi a livello di programma esterno. Questo può essere richiamato quindi come Intent, e può restituirti un valore (nel caso specifico, il codice scansionato). Una volta installato lo scanner, e supponendo che ti abbia nella tua app un tasto per scansionare (lo chiameremo scanBtn), questo snippet ti permetterà di effettuare la lettura:

Codice (Java): [Seleziona]
        scanBtn.setOnClickListener(new OnClickListener(){
                        @Override
                        public void onClick(View arg0) {
                                try{
                                   Intent intent = new Intent("com.google.zxing.client.android.SCAN");
                                   startActivityForResult(intent, 0);
                                } catch (Exception e) { }
                        }                              
        });

ossia, ti crei un listener dell'evento click sul bottone, alla pressione del quale lanci l'app di scansione barcode.

Per intercettare il dato restituito, devi fare l'override del metodo onActivityResult, in questo modo:

Codice (Java): [Seleziona]
@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
       if (resultCode == Activity.RESULT_OK && requestCode == 0){
          Bundle extras = data.getExtras();
          String result = extras.getString("SCAN_RESULT");
         
       }
    }

Nella variabile locale result ti troverai il codice letto, e quindi potrai visualizzarlo / salvarlo / manipolarlo come più opportuno ai tuoi scopi.
Spero di essere riuscito a darti una mano.  :-)
Bollettazione Interventi - Un taglio ai costi di tipografia per professionisti!
--
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato

Offline Cono86

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
Re:Lettura barcode offline
« Risposta #4 il: 18 Gennaio 2012, 17:09:49 CET »
0
Grazie di nuovo,
allora mi sono creato una classe myBarcodeScannerActivity nella quale inserisco il codice che mi hai postato (ho utilizzato il codice che ho trovato in questo tutorial), inoltre ho aggiunto core.jar e javase.jar che mi sono creato tramite apache ant. Fino a questo punto tutto bene, non mi da nessun errore. Esportandola sul cel, l'applicazione parte, ma una volta che clicco sul bottone SCAN, mi fa scegliere tra le varie applicazioni per la lettura del codice a barre che ho  già installato, tra le quali appunto BarCode Scanner. Il problema è che offline non funziona. Ho saltato qualche passo???

Offline E.Musso

  • Utente junior
  • **
  • Post: 82
  • Respect: +17
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy GT-S5660
  • Play Store ID:
    Emiliano Musso
  • Sistema operativo:
    Windows 7
Re:Lettura barcode offline
« Risposta #5 il: 18 Gennaio 2012, 17:53:17 CET »
+1
Uhm...ho la sensazione che non sia lo stesso scanner...possibile?
Io mi riferivo a questo: https://market.android.com/details?id=com.google.zxing.client.android
Io uso lo ZXING barcode scanner in questa app: https://market.android.com/details?id=em.software.ansalesit

Lavora benissimo offline, e non chiede di funzionare in condizioni diverse. Magari potresti postare la classe per vedere se c'è qualcosa che non va, ma se il codice che scansiona è quello che ti ho postato prima, dovrebbe andare senza problemi.

Bollettazione Interventi - Un taglio ai costi di tipografia per professionisti!
--
È stata trovata una soluzione al tuo problema?Evidenzia il post più utile premendo . È un ottimo modo per ringraziare chi ti ha aiutato

Offline Cono86

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
Re:Lettura barcode offline
« Risposta #6 il: 18 Gennaio 2012, 17:59:49 CET »
0
Ti posto la classe che ho fatto:

Codice (Java): [Seleziona]
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MyBarcodeScannerActivity extends Activity {
        private static final Intent SCAN_INTENT = new Intent("com.google.zxing.client.android.SCAN");
       
        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
                Button scanButton = (Button) this.findViewById(R.id.scanButton);
               
                PackageManager packageManager = this.getPackageManager();
                ResolveInfo resolveInfo = packageManager.resolveActivity(SCAN_INTENT, PackageManager.GET_RESOLVED_FILTER);
                if(resolveInfo==null) {
                        scanButton.setEnabled(false);
                        ((TextView)this.findViewById(R.id.scanResult)).setText("Non hai installato nessuna applicazione per effettuare lo scan!!!\nScaricala qui: http://www.appbrain.com/app/com.google.zxing.client.android");
                }
                else{
                        scanButton.setOnClickListener(new View.OnClickListener(){
                @Override
                public void onClick(View arg0) {
                        try{
//                           Intent intent = new Intent("com.google.zxing.client.android.SCAN");
//                           startActivityForResult(intent, 0);
                                onScan(arg0);
                        } catch (Exception e) { }
                }                              
                        });
                }
        }
       
        @Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
                super.onActivityResult(requestCode, resultCode, data);
                if (resultCode == Activity.RESULT_OK && requestCode == 0) {
                        String scanResult = data.getStringExtra("SCAN_RESULT");
                        ((TextView)this.findViewById(R.id.scanResult)).setText(String.format("Risultato dello scan: %1$s", scanResult));                        
                }
                else {
                        ((TextView)this.findViewById(R.id.scanResult)).setText("Operazione annullata!");
                }
        }
       
        public void onScan(View view) {
                startActivityForResult(SCAN_INTENT, 0);
        }
}

Offline Cono86

  • Nuovo arrivato
  • *
  • Post: 14
  • Respect: 0
    • Mostra profilo
Re:Lettura barcode offline
« Risposta #7 il: 20 Gennaio 2012, 09:59:02 CET »
0
Uhm...ho la sensazione che non sia lo stesso scanner...possibile?
Io mi riferivo a questo: https://market.android.com/details?id=com.google.zxing.client.android
Io uso lo ZXING barcode scanner in questa app: https://market.android.com/details?id=em.software.ansalesit

Lavora benissimo offline, e non chiede di funzionare in condizioni diverse. Magari potresti postare la classe per vedere se c'è qualcosa che non va, ma se il codice che scansiona è quello che ti ho postato prima, dovrebbe andare senza problemi.


Ti ringrazio, ho risolto il problema, era la fotocamera del cel che non mi legge tutti i codici.
Ps. Ti volevo mettere il thanks ma non so perkè non mi esce accanto la citazione, appena risolvo il problema ti voto :p