2012-02-26 12 views
7

In questo momento sto avendo Tablet con sistema operativo Android 2.3.3 al posto del telefono NFC, quindi devo collegare il lettore di schede esterno al tablet.Vi prego quale lettore di schede dovrei preferire e qualsiasi driver necessario per collegare il lettore di schede al tablet. Le librerie NFC integrate supportano quel lettore o no? grazie in anticipo.Come collegare il lettore di schede NFC esterno al tablet

risposta

9

ho trovato una risposta, il ACS ora fornisce biblioteca Android e l'applicazione di esempio per la loro readers.You può trovare la libreria here e alcune informazioni e video demo di Android lettori supportati è here.

L'unico problema è che la libreria Android ACS supporta solo Android 3.1 e versioni successive. spero che ti possa aiutare.

Se avete ancora domande non esitate a chiedere ..

7

La libreria NFC incorporata in Android 2.3 e 4.0 supporta solo il chip NFC PN544 di NXP Semiconductors. Non penso che ci siano lettori di schede sul mercato che lo utilizzano, in quanto questo chip è specificamente progettato per l'utilizzo in dispositivi mobili. Tuttavia, potresti essere in grado di trovare implementazioni alternative dell'API Android NFC che supportano altri chip NFC.

Un altro problema potrebbe essere che il tablet probabilmente non dispone delle librerie NFC richieste, incluso il servizio di sistema richiesto (NfcManager). Dopo tutto, il tablet non ha supporto NFC, quindi non ha bisogno di questi componenti software. Quindi una nuova immagine del sistema ROM dovrebbe essere creata per il tablet che include questi componenti software.

Prendere uno dei tanti comuni lettori di desktop non è probabilmente fattibile. Creare tutto il software necessario per integrarlo in Android non è davvero un compito banale. Potrebbe essere più semplice acquistare un telefono Android con NFC o attendere l'uscita di un tablet Android con NFC.

+0

grazie per una risposta così informativa, ho un lettore NFC ACR122U. È possibile connettersi o interagire con quel lettore? c'è qualche driver o SDK richiesto per questo? –

+0

Per favore, dai un'occhiata a http://www.grundid.de/nfc/ e vedi se ti è utile. –

+0

ho visto quel collegamento. Non ci sono informazioni relative al collegamento del lettore NFC al tablet. Mostra come interagire o connettere il telefono cellulare NFC al PC.Ma una cosa che capisco è che possiamo leggere o scrivere dati sul chip del telefono NFC.so grazie ancora. –

0

Questo video risposte al vostro problema: http://www.youtube.com/watch?v=6Xe7Ux0cTuI "a basso costo, semplice e senza conducente - EM4100 o lettore di Mifare RFID per Ipad, Android e Windows"

PS: Io non funziona a questo compagny e mai provare la loro soluzione.

2

Né Froyo 2.3 (versione minima SDK che supporta NFC) o Ice Cream Sandwich 4.0 sono compatibili con un'ampia varietà di chip.

Quando un produttore lancia un nuovo telefono con un diverso chip NFC è perché qualcuno ha creato i driver per utilizzare tali chip e interfaccia con le classi NFC di Android, in particolare la classe NfcManager e la classe NfcAdapter che rappresenta l'adattatore NFC locale.

Nel migliore dei casi, è possibile utilizzare l'NDK di Android per creare classi C/C++ di basso livello per comunicare in qualche modo il lettore di schede NFC esterno con Android e quindi effettuare più programmazione personalizzata con NDK per rendere NfcAdapter sull'SDK da rilevare e ... e non ci sono garanzie che avrai successo.

E ... se state pensando di andare a http://www.alibaba.com e importare un tablet con lettore NFC, pensateci due volte, perché che quelli potrebbero non consentire di fare tutto ciò che il chip di NXP Semiconductors fa con Android Beam (TM), quali come leggere/scrivere e supportare diverse operazioni di I/O con NFC-A, B, F, V o ISO-DEP.

Per il vostro tempo (e perché il tempo è il bene più prezioso per chiunque in questi giorni). Penso che la tua migliore opzione sia quella di ottenere un paio di telefoni NFC come il Galaxy Nexus S, DROID Razr, Xperia S, HTC Incredible, ecc ... quelli funzioneranno immediatamente, è quello che stiamo facendo.

2

Hey sachin, Poiché il dispositivo non dispone di NFC, non avrà la radio NFC e quindi non può connettersi (lettura o scrittura) a una scheda NFC. Secondo la lib di NFC, ogni volta che si tenta di ottenere NFCAdapter restituirà sempre null. quindi hai bisogno di un dispositivo Android abilitato per nfc per qualsiasi esperimento.

Nel mio progetto, abbiamo utilizzato il lettore di smart card ACR122 che verrà collegato a un PC non dispositivo Android. Questo lettore viene utilizzato per leggere qualsiasi tag nfc.Un dispositivo Android abilitato per nfc fungerà da tag nfc nella modalità di emulazione della scheda.

Ora parte successiva della domanda "Le librerie NFC integrate supportano quel lettore o no".

quindi questo lettore di schede può leggere il valore della carta.

0

Questo è un buon argomento. Faccio eco alle preoccupazioni di RacZo riguardo al supporto delle librerie NFC nei tablet di Alibaba. Poiché i chipset NFC nei dispositivi sono diversi e alcuni hanno dubbi o nessun supporto per determinate operazioni, devi fare attenzione e testare la tua app su quelli in anticipo.

Il lettore ACS può essere una soluzione economica e ci sono alcune librerie e SDK maturi e ben supportati che supportano la sua integrazione con Android. Lo svantaggio del lettore esterno ACS è la durata della batteria. Perché monopolizza la porta USB e le tavolette Android non consentono la ricarica attraverso una porta USB mentre una periferica è collegata ad essa. Quindi se la tua applicazione è una specie di chiosco o app self-service, questo potrebbe essere un problema.

C'è un buon post here sulle varie opzioni di fronte a questa sfida. Senza saperne di più sulla tua applicazione, è difficile raccomandare in un modo o nell'altro.

0

Un po 'tardi per rispondere qui, ma in realtà ho cercato di implementare un lettore NFC esterno il più vicino possibile all'NFC nativo.

È possibile aggiungere un servizio aggiuntivo, ma la normale inizializzazione NFC (NfcAdapter ecc.) Non sarà a conoscenza di questo servizio, pertanto dovrà essere inizializzato in aggiunta.

Il risultato è stato che non è tecnicamente possibile sostituire o aggiungere il servizio NFC incorporato su una ROM stock in un "drop-in-replacement-way".

Riutilizzare alcune delle classi NFC native come Tag e IsoDep è possibile.

Tuttavia, come sviluppatore di un'app NFC, in realtà non si desidera la stessa funzionalità del servizio esterno come built-in. Il lettore esterno ha probabilmente più funzionalità e, come minimo, vuoi sapere se il lettore è collegato o meno.

Vedere External NFC API per ulteriori informazioni (nota: non è un prodotto completamente open source).

1

Con un lettore di ACS NFC è possibile:

Here trovi la documentazione per le biblioteche e codice di esempio. Tuttavia non sembra avere un'opzione per scrivere dati. Se si desidera scrivere sul proprio lettore NFC, utilizzare la funzione di trasmissione per inviare matrici di byte.

private static final byte READ = (byte) 0x30; 
private static final byte WRITE = (byte) 0xA2; 

Questi byte sono i byte di lettura e scrittura predefiniti per la funzione di trasmissione.La documentazione completa del protocollo predefinito NFC può essere trovato here

esempio:

byte[] response = new byte[300]; 
     int responseLength; 
     try { 
      responseLength = mReader.transmit(slotNum, command, command.length, response, response.length); 
     } catch (ReaderException e) { 
      e.printStackTrace(); 
      return "executeCommand: error: " + e.getMessage(); 
     } 

Slotnum è il numero del lettore che si desidera utilizzare. Se sono corretto, questo è sempre 0 se stai usando un lettore/usbdevice.

comando di esempio:

new byte[] command {(byte) WRITE, 0x04, 0x06, 0x0a, 0x00, 0x21} 

IL SECONDO byte è l'ADRES pagina a scrivere. Le pagine 4 - 15 sono scrivibili (la pagina 0 e 1 sono id, la pagina 2 sono lockbytes e la pagina 3 sono OTP, tutte sono SOLO LETTURA).

La funzione Leggi funziona allo stesso modo la funzione WRITE inviare solo 3 volte a 0x00 nella matrice per le impostazioni corrette di lettura:

new byte[] command {(byte) READ, 0x04, 0x00, 0x00, 0x00} 

IL SECONDO byte è l'ADRES pagina per leggere.

Problemi correlati