NFC с инструментами NFC, создание приложения NDEF

Я пытаюсь сделать то, что, как я ожидал, будет довольно простым, но, как оказалось, это не так. У меня есть считыватель NFC ACR122 и несколько тегов Mifare Classic и Mifare Ultralight, и все, что я хочу сделать, это прочитать и записать mime-тип и короткую текстовую строку на каждую карту из приложения Java. Вот что у меня есть на данный момент:

  • Я могу подключиться к своему считывателю и слушать теги
  • Я могу определить тип тега на считывателе
  • В тегах 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, я просто не знаю, как туда добраться. Есть предположения?

:: Addendum :: По-видимому, тега nfc-tools нет, и, вероятно, он должен быть. Будет ли кто-нибудь с достаточной репутацией достаточно любезен, чтобы создать его и пометить мой вопрос, чтобы включить его?

:: Второе дополнение :: Кроме того, я готов отказаться от NFC-Tools, если кто-то может указать мне на библиотеку, которая работает для того, что мне нужно, хорошо документирована и будет работать в среде Windows.


person Brendon Dugan    schedule 15.03.2013    source источник


Ответы (1)


Вы проверили эту библиотеку? Он хорошо написан, но имеет плохую документацию. Собственно не более чем JavaDoc.

person Andrey Lyubimov    schedule 16.05.2013
comment
У меня есть. Фактически, это библиотека, о которой идет весь пост. - person Brendon Dugan; 16.05.2013