2012-08-02 11 views
6

Sto facendo un'applicazione EMV su sistema operativo Android (Samsung Galaxy).Android NFC: tag perso quando il comando APDU viene inviato a una smart card

Sono in grado di inviare diversi comandi APDU senza problemi, ma quando sto cercando di inviare il comando di autenticazione interna. Ho questo errore: tag perso. Hai qualche idea riguardo lo scopo di questo errore? Non sono uno sviluppatore sperimentato su Android, potrei aver dimenticato alcune cose.

  • il comando è corretto.
  • Posso sostituire con un altro comando, funziona (voglio dire, posso recuperare una risposta).

In quali casi è possibile interrompere una comunicazione NFC su Android?

Qui, potete vedere il mio problema quando si invia il comando:

D/ECInfoGrabber (14088): Invia: 00 88 00 00 04 14 16 67 3D
D/OpenGLRenderer (14088): Celle di Flushing (modalità 0) D/dalvikvm (14088): GC_FOR_ALLOC liberato 227K, 4% gratuito 14298K/14855K, sospeso 29ms I/dalvikvm-heap (14088): Grow heap (caso frag) a 14.142 MB per 115216-byte assegnazione D/dalvikvm (14088): GC_FOR_ALLOC liberato 3K, 4% libero 14408K/14983K, in pausa 15ms

Grazie

risposta

10

Una possibilità è che la risposta della scheda richieda più tempo dell'impostazione di timeout predefinita. Ciò si verifica spesso quando la carta deve eseguire alcuni calcoli interni; tipicamente in caso di operazioni crittografiche come l'autenticazione.

È possibile modificare il valore di timeout utilizzando IsoDep.setTimeout():

IsoDep iso = IsoDep.get(tag); 
iso.connect(); 
iso.setTimeOut(5000); // 5 sec time out 
iso.transceive(apduCommand); // now send your command 
+1

Grazie. Funziona. Sei un eroe – user1571292