AndroidのNFCAPIを使用して生の認証を実行しようとしています(トランシーバー方式を使用してMifareClassicカードにコマンドを送信します)。しかし、私はすべてのNfcAトランシーバー呼び出しに対してTagLostExceptionを取得し続けます。
これは私のコードです:
NfcA mfa = NfcA.get(tagFromIntent);
//MifareClassic mfa = MifareClassic.get(tagFromIntent);
//IsoDep isodep = IsoDep.get(tagFromIntent);
mfa.connect();
//manual authenticate
byte[] cmd = new byte[] {0x60, 0x04, 0x00, 0x00};
try {
if(mfa.isConnected()) {
byte[] result = mfa.transceive(cmd);
}
} catch (TagLostException e) {
Log.i("mifaretest", "tag lost again!");
throw e;
} catch (IOException e) {
Log.i("mifaretest", "IOException!");
// No need to deal with, will return false anyway
}
mfa.close();
Googleドキュメントに示されているように、アプリケーションはペイロードにEoD(CRC)を追加してはならず、自動的に計算されます。最後の2バイトは空のままにしておきます。次のコマンドも試しました:
byte[] cmd = new byte[] {0x60, 0x04};
または
byte[] cmd = new byte[] {0x60, 0x04, 0xD1, 0x3D};
それらはすべてTagLostExceptionをスローします。任意の洞察をいただければ幸いです。