1

を使用して NFC 接続を確立しようとしていjavax.smartcardioます。このコードは Windows では正常に実行できますが、Mac では動作しません。問題は Mac のドライバーにあるようですが、解決策があるかどうか知りたいです。

TerminalFactory factory;
factory = TerminalFactory.getDefault();
CardTerminal terminal = factory.terminals().list().get(0);
card = terminal.connect("direct");`

注:直接コマンドを使用する必要があります。

編集:直接コマンドを使用する必要があるのは、カードが提示されていないときにAPDUコマンドを送信する必要があるためです。T=0、T=1 などの他のプロトコルでは、リーダーにカード (またはデバイス) がない場合、APDU コマンドをリーダーに送信できません。

4

1 に答える 1

1

コマンドを使用しなければならないことは非常に興味深いことです。"direct"コマンドと言いましたが、実際にはそれはトランスポート プロトコル文字列です。残念ながら、API はそうではないと言っています (Java 7 SE までチェック済み)。

これは、connect(String)メソッドの JavaDoc からの抜粋です。

protocol- 使用するプロトコル ( "T=0""T=1"、または"T=CL")、または"*"使用可能なプロトコルを使用して接続する。

よくわからない場合は"T=1"、最新のカードとほとんどの PCSC リーダーと互換性があるはずです。

于 2013-07-03T22:51:11.897 に答える