NFC与NFC工具,创建NDEF应用程序

时间:2013-03-15 14:34:20

标签: java nfc ndef

我试图做我猜想会很简单的事情,但事实证明并非如此。我有一个ACR122 NFC阅读器和一堆Mifare Classic和Mifare Ultralight标签,我想要做的就是从Java应用程序读取和写入每个卡的mime类型和短文本字符串。这是我到目前为止所做的工作:

  • 我可以连接到我的读者并收听标签
  • 我可以检测到阅读器上的标签类型
  • 在Mifare Classic标签上,我可以遍历标签上的所有数据(在从手机编程标签之后)并构建一个ascii字符串,但大部分数据都是“垃圾”数据
  • 我可以确定标签上是否有应用程序目录。

这是我的代码:

主:

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);

        }
    }
}

从这里开始,我似乎不知道如何实际创建应用程序并与之交互。一旦我可以创建应用程序并将Record对象写入其中,我应该能够使用TextMimeRecord类型编写我需要的数据,我只是不知道如何到达那里。有什么想法吗?

::补遗:: 显然没有nfc-tools标签,可能应该有。有足够代表的人是否会善于创建一个并重新提出我的问题以包含它?

::第二个附录:: 此外,如果有人可以指向我的工作方向,并且有很好的文档记录,并且可以在Windows环境中运行,我愿意放弃NFC工具。

1 个答案:

答案 0 :(得分:-3)

您检查过this图书馆了吗?它编写得很好,文档很差。实际上只不过是JavaDoc。