如何使用CardService连接ACR122

时间:2017-10-09 13:54:39

标签: java acr122

我正在编写一个用于阅读电子护照的程序(Java Application)。为了访问我使用库org.jmrtd。我应该在CardService.getInstance()中传输什么样的对象?

import net.sf.scuba.smartcards.CardService;
import net.sf.scuba.smartcards.CardServiceException;
import org.jmrtd.BACKeySpec;
import org.jmrtd.PassportService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class TestComponent {
    private static final Logger log = LoggerFactory.getLogger(MainApp.class);

    public static void main(String args[])  {

        try {
            CardService cs = CardService.getInstance(???????);
            PassportService ps = new PassportService(cs);
            ps.open();
            ps.sendSelectApplet(false);

            ps.sendSelectApplet(false);
            BACKeySpec bacKey = new BACKeySpec() {
                public String getDocumentNumber() {
                    return "xxxxxxxx";
                }
                public String getDateOfBirth() {
                    return "yyMMdd";
                }
                public String getDateOfExpiry() {
                    return "yyMMdd";
                }
            };
            ps.doBAC(bacKey);
            ps.close();

        } catch (CardServiceException e) {
            e.printStackTrace();
        }
    }
}

1 个答案:

答案 0 :(得分:1)

答案发现:

  1. 加入pom

            net.sf.scuba         水肺SC-J2SE         0.0.13     

  2. import net.sf.scuba.smartcards.TerminalCardService;

  3. CardTerminal terminal =TerminalFactory.getDefault().terminals().list().get(0); CardService cs = CardService.getInstance(terminal); PassportService ps = new PassportService(cs); ps.open();