私は私が推測したであろうことをやろうとしていますが、それはかなり単純ですが、結局のところそうではありません。私はACR122NFCリーダーと、MifareClassicおよびMifareUltralightタグをたくさん持っています。やりたいのは、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タグはなく、おそらくあるはずです。十分な担当者がいる人は、親切に作成して質問にタグを付け直してそれを含めることができますか?
:: 2番目の補遺::また、誰かが私が必要なもののために機能し、十分に文書化されており、Windows環境で実行されるライブラリの方向に私を向けることができれば、NFC-Toolsを捨てることをいとわない。