Как я могу прочитать карту MifareClassic с NFC Android? - PullRequest
0 голосов
/ 08 апреля 2011

Я работаю с NFC Android-программированием и хочу читать карты Mifare Classic.Кто-нибудь знает, как считывать сектора с такой карты?

Моя проблема - метод transceive().Я не знаю, как использовать его для чтения сектора, например, для чтения сектора 1.

Метод аутентификации возвращает true, что означает, что аутентификация выполнена.После аутентификации сектор должен быть готов к любому действию ввода-вывода, но всякий раз, когда я использую метод readBlock () или метод transceive (), я получаю исключение с IOException («transceive fail»).Я не могу найти ни одного примера, который использует Mifare Classic, поэтому я хочу знать, возможно ли читать Mifare Classic с этим API или нет.

С уважением.

1 Ответ

8 голосов
/ 11 апреля 2011

Mifare Classic с этим API наверняка можно читать - у нас есть приложения, которые это делают.

Вам не нужно использовать transceive() напрямую, если вы просто хотите прочитать карту - просто используйте удобный метод readBlock().

Распространенной ошибкой является то, что аутентификация выполняется на уровне сектор , тогда как чтение выполняется на уровне block .На Mifare Classic сектор состоит из нескольких блоков.К сожалению, количество блоков на сектор может варьироваться даже на одной и той же карте.

Используйте MifareClassic.sectorToBlock(sector), чтобы получить первый начальный блок сектора, для которого вы аутентифицировались.Затем вы можете прочитать все блоки этого сектора.Количество блоков в секторе можно получить с помощью MifareClassic.getBlockCountInSector(sector).

Если это все еще не работает, вы можете опубликовать какой-нибудь код?

...