Как получить ATR смарт-карты с помощью Android NFC API?

Кто-нибудь знает, как получить ATR смарт-карты для приложения Android с помощью API NFC? Карта, которую я использую, является бесконтактной картой. у меня есть этот код

szATR =" 3B " + getATRLeString(myTag.getHistoricalBytes())+ "80 01 " + getHexString(myTag.getHistoricalBytes())+""+ getATRXorString(myTag.getHistoricalBytes());

но он возвращает null в качестве ответа.


person Vinod Gangal    schedule 26.09.2014    source источник
comment
myTag.getHistoricalBytes(); метод возвращает нулевую строку   -  person Vinod Gangal    schedule 26.09.2014


Ответы (1)


Технически метка NFC не имеет ничего похожего на ATR.

ATR используется для связи смарт-карт на основе контактов. ATR в основном содержит данные, необходимые для контактной связи, такие как максимальная скорость связи, защитное время и т. д. Вся эта информация неприменима для NFC. ATR также может содержать так называемые исторические байты.

Если ваш вызов myTag.getHistoricalBytes() возвращает значение null, то ваш тег NFC просто не имеет исторических байтов для возврата.

Что касается ATR и NFC в целом: поскольку многие метки NFC и смарт-карты используют один и тот же высокоуровневый протокол связи (ISO7816), добавление функций NFC к устройствам чтения смарт-карт было естественным выбором. Из соображений совместимости со старым программным обеспечением для работы программного обеспечения и инфраструктуры смарт-карт требовалось некоторое ATR. Поэтому всякий раз, когда вы видите ATR в контексте NFC, вы можете быть уверены, что это поддельный ATR, сгенерированный драйвером или считывателем.

person Nils Pipenbrinck    schedule 27.09.2014