2013-03-15 6 views
10

J'essaie de faire ce que j'aurais deviné serait assez simple, mais comme il s'avère ne l'est pas. J'ai un lecteur ACR122 NFC et un tas de tags Mifare Classic et Mifare Ultralight, et tout ce que je veux faire est de lire et d'écrire un type mime et une courte chaîne de texte pour chaque carte d'une application Java. Voici ce que j'ai travailler jusqu'à présent:NFC avec NFC-Tools, création d'application NDEF

  • Je peux me connecter à mon lecteur et d'écouter les balises
  • Je peux détecter quel type de balise est sur le lecteur
  • Sur les balises Mifare classiques que je peux faire défiler toutes les données sur l'étiquette (après avoir programmé l'étiquette de mon téléphone) et construire une chaîne ASCII, mais la plupart des données sont des données "ordures"
  • Je peux déterminer s'il y a ou non un répertoire d'application sur le marque.

Voici mon code pour le faire:

principal:

public static void main(String[] args){ 
     TerminalFactory factory = TerminalFactory.getDefault(); 
     List<CardTerminal> terminals; 
     try{ 
      TerminalHandler handler = new TerminalHandler(); 
      terminals = factory.terminals().list(); 
      CardTerminal cardTerminal = terminals.get(0); 
      AcsTerminal terminal = new AcsTerminal(); 
      terminal.setCardTerminal(cardTerminal); 
      handler.addTerminal(terminal); 
      NfcAdapter adapter = new NfcAdapter(handler.getAvailableTerminal(), TerminalMode.INITIATOR); 
      adapter.registerTagListener(new CustomNDEFListener()); 
      adapter.startListening(); 
      System.in.read(); 
      adapter.stopListening(); 
     } 
     catch(IOException e){ 
     } 
     catch(CardException e){ 
      System.out.println("CardException: " + e.getMessage()); 
     } 

} 

CustomNDEFListener:

public class CustomNDEFListener extends AbstractCardTool 
{ 
    @Override 
    public void doWithReaderWriter(MfClassicReaderWriter readerWriter) 
      throws IOException{ 
     NdefMessageDecoder decoder = NdefContext.getNdefMessageDecoder(); 
     MadKeyConfig config = MfConstants.NDEF_KEY_CONFIG; 
     if(readerWriter.hasApplicationDirectory()){ 
      System.out.println("Application Directory Found!"); 
      ApplicationDirectory directory = readerWriter.getApplicationDirectory(); 
     } 
     else{ 
      System.out.println("No Application Directory Found, creating one."); 
      readerWriter.createApplicationDirectory(config); 

     } 
    } 
} 

A partir de là, il me semble être à une perte pour savoir comment réellement créer et interagir avec une application. Une fois que je peux créer l'application et écrire des objets Record, je devrais être capable d'écrire les données dont j'ai besoin en utilisant le type TextMimeRecord, je ne sais pas comment y arriver. Des pensées?

:: Addendum :: Apparemment, il n'y a pas de balise nfc-tools, et il devrait probablement y avoir. Est-ce que quelqu'un avec suffisamment de représentants pourrait être assez aimable pour en créer un et retagger ma question pour l'inclure? En outre, je suis prêt à abandonner NFC-Tools si quelqu'un peut me diriger vers une bibliothèque qui fonctionne pour ce dont j'ai besoin, est bien documentée et fonctionnera dans un environnement Windows .

Répondre

-3

Avez-vous vérifié this bibliothèque? Il est bien écrit, comment a jamais une mauvaise documentation. En fait, pas plus que JavaDoc.

+2

J'ai. C'est en fait la bibliothèque dont tout le sujet parle. –

Questions connexes