Я пытаюсь прочитать тег NFC, разработанный NXP, в своем приложении для Android. Тег можно прочитать в Android: приложение от NXP и друг читают это правильно.
Точный тип тега - «ICODE SLI-L (SL2ICS50)», а технология RF - «Тип V / ISO 15693» (данные взяты из этих работающих приложений). Память состоит из 2 страниц по 4 блока каждая, блоки по 4 байта - я просто хочу, чтобы в памяти хранились целые данные.
Тег должен обрабатываться с помощью класса NfcV
Android, а его таблица данных доступна здесь, но трудно найти какой-либо рабочий пример кода, использующий NfcV
. Я пробовал несколько вещей, которые я сам заключил в таблице данных, и пробовал образцы сообщений из этот PDF-файл, который я нашел в Google, но ничего не работает.
Соответствующий метод в моей деятельности (я использую NFC Foreground Dispatch) выглядит так:
public void onNewIntent(Intent intent) {
android.nfc.Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
NfcV tech = NfcV.get(tag);
try {
tech.connect();
byte[] arrByt = new byte[9];
arrByt[0] = 0x02;
arrByt[1] = (byte) 0xB0;
arrByt[2] = 0x08;
arrByt[3] = 0x00;
arrByt[4] = 0x01;
arrByt[5] = 0x04;
arrByt[6] = 0x00;
arrByt[7] = 0x02;
arrByt[8] = 0x00;
byte[] data = tech.transceive(arrByt);
// Print data
tech.close();
} catch (IOException e) {
// Exception handling
}
}
Метод вызывается правильно, когда я кладу свой телефон на тег, но метод transceive()
объекта NfcV
всегда вызывает исключение IOException: android.nfc.TagLostException: Tag was lost.
. Это результат всех байтовых массивов, которые я пробовал (приведенный выше вряд ли верен, но за последние дни я попробовал несколько других, которые все показали одно и то же поведение.
Из того, что я прочитал в Интернете, я пришел к выводу, что ошибка возникает из-за того, что я отправляю неправильные команды тегу, но я просто не могу придумать правильные. Любые идеи?