Mifare Ultralight C Аутентификация в Android (2.3.6) - PullRequest
5 голосов
/ 12 марта 2012

Я пытаюсь аутентифицировать тег Mifare Ultralight C (совместимый с ISO / IEC 14443-2 и 14443-3 типа A).

Я отправляю команду аутентификации с помощью предоставленной функции MifareUltralight.transceive ()в Android.Я также проверил NfcA.transceive () (IsoDep, кажется, не совместим с тегами такого типа, потому что этот объект предназначен для работы с тегами ISO / IEC 14443-4, и поэтому я не использую IsoDep.transceive ()).

Итак, когда я впервые отправляю команду запроса аутентификации, тег отвечает на transceive () с помощью AFxxxx ..... где я обрабатываю ответ тега, а затем отправляю другой transceive () с ответом на этот ответно ... непосредственно перед отправкой transceive () тег подключен, при его отправке я получаю предупреждение "тег был потерян" и "сбой передачи".

Кроме того, если я пытаюсь сделать это с NfcA,возникает та же проблема.

Наконец, если я пытаюсь отправить одну команду аутентификации после первого ответа, я получаю также предупреждение "Tag is lost" с ошибкой transceive.

Так что мой вопрос:

Почему тег NFC теряется при отправке второго transceive ()? << </p>

(Это не проблема тайм-аута, потому чтоперед отправкой второго transceive () соединение с тэгом открыто) Я сделал все вещи в другом потоке, отличном от UI.

Заранее спасибо!

1 Ответ

3 голосов
/ 13 марта 2012

Ваш подход кажется правильным.Однако поведение тега указывает на то, что ваш ответ на ответ тега был неверным.В этом случае тег отказывается отвечать.С точки зрения телефона это неотличимо от исчезновения тега, поэтому вы получаете TagLostException.

...