3

携帯電話と通信したいEMVスマートカードを入手しました。通信自体はIsoDepを介して問題なく機能しますが、ATRを取得する方法がわかりません。インテントにATRが含まれている必要があることがわかっている限り、必要なコードを誰かに教えてもらえますか?

または、これが不可能な場合は、誰かがSELECTなどのコマンドを使用してカードをウォームリセットする方法を知っている可能性があります。答えはATRです。

4

2 に答える 2

3

非接触型カードにはATRがありません。ただし、ATS(Answer to Select)の履歴バイトに興味があるかもしれません。これらを取得するには、次を呼び出しgetHistoricalBytes()ます。

Tag tag = (Tag) intent.getParcelableExtra(NfcAdapter.EXTRA_TAG));
IsoDep iso = IsoDep.get(tag);
NfcA nfcA = NfcA.get(tag);
if (nfcA == null || iso == null)
   return; // not an IsoDep+NfcA tag
byte[] histBytes = iso.getHistoricalBytes();
...

これはISO14443タイプAタグ(NfcA)でのみ機能することに注意してください。タイプBタグ(NfcB)の場合、調査することをお勧めしますgetHiLayerResponse()

于 2012-07-27T11:18:35.303 に答える
-1

非接触型カードはATRを返します。ただし、現在のandroidNFCAPIからATRを取得することはできません。Android NFC APIは、ATRから履歴バイトのみを返します。

非接触型カードがATRを返す理由:ATRは7816であることに注意してください。リセットに対する回答。リーダー(この場合はnfc電話)は、非接触インターフェースISO14443-4を介して転送されるISO7816(T = CL)APDU交換を使用してスマートカードと通信します。この場合、ISO 7816があるため、ATRを取得します。

于 2013-10-30T19:00:40.207 に答える