我正在使用 smartcardio api 将数据从 NFC ACR 122u 读卡器写入 Android 手机
这是我正在使用的代码:
TerminalFactory factory = TerminalFactory.getDefault();
List<CardTerminal> terminals = factory.terminals().list();
if (terminals==null || terminals.size()==0) {
le.warn("nfcReaderPresent no terminal found");
return false;
}
terminal = terminals.get(0);
try {
boolean res=terminal.waitForCardPresent(5*1000);
if (res)
interrupt=true;
}
catch(Exception p) {
le.error("pushData p="+p);
le.fatal(p);
}
if (terminal.isCardPresent()) {
card = terminal.connect("*");//it seems always to be T=1
ATR atr=card.getATR();
CardChannel channel = card.getBasicChannel();
le.debug("card: " + card+" channel="+channel+" atr="+ByteArrayToHexString(atr.getBytes()));
//ADPU command
byte getDataCmd[]={(byte)0xFF,(byte)0xCA,(byte)0x00,(byte)0x00,(byte)0x00};
sendCommand(getDataCmd,channel);
...
该错误javax.smartcardio.CardException: sun.security.smartcardio.PCSCException: SCARD_E_READER_UNAVAILABLE
发生在发送 APDU 命令之前。
当我在工具 ACR122UTool 之前启动并单击连接时,一切正常。(不再需要ACR122uTool)似乎acs工具初始化了设备。
任何帮助将不胜感激