Mifare Classic с этим API наверняка можно читать - у нас есть приложения, которые это делают.
Вам не нужно использовать transceive()
напрямую, если вы просто хотите прочитать карту - просто используйте удобный метод readBlock()
.
Распространенной ошибкой является то, что аутентификация выполняется на уровне сектор , тогда как чтение выполняется на уровне block .На Mifare Classic сектор состоит из нескольких блоков.К сожалению, количество блоков на сектор может варьироваться даже на одной и той же карте.
Используйте MifareClassic.sectorToBlock(sector)
, чтобы получить первый начальный блок сектора, для которого вы аутентифицировались.Затем вы можете прочитать все блоки этого сектора.Количество блоков в секторе можно получить с помощью MifareClassic.getBlockCountInSector(sector)
.
Если это все еще не работает, вы можете опубликовать какой-нибудь код?