Android: эмуляция карты - прочитайте сообщение ndef с модулем n5c PN532

У меня есть телефон LG D320n для Android, модуль n5c npc elechouse PN532 и Stollmann NFCPlayer, с которыми я могу правильно читать теги NFC.

Я проверил образец отсюда: https://github.com/grundid/host-card-emulation-sample

Он отлично работает, когда я читаю одно устройство Android как тег с другим устройством Android в качестве читателя. Но я не могу прочитать устройство Android как тег с помощью считывателя PN532 через NFCPlayer. Я хочу, чтобы читатель читал сообщение NDEF с устройства Android, выступающего в качестве тега, но NFCPlayer даже не распознает устройство Android. Я думаю, что мне нужно написать некоторые изменения на стороне Android, но я не могу понять, что делать. Я думаю, что у меня недостаточно информации о том, как работают NFC-коммуникации и HCE, хотя я читал это: https://developer.android.com/guide/topics/connectivity/nfc/hce.html

Я был бы очень признателен за любые рекомендации, которые могли бы помочь мне понять, что мне здесь не хватает.

Ответ 1

Приложение grundid example должно быть обнаружено NFCPlayer как "унаследованный тег" (вкладка "R/W: Legacy" ), как это делается не реализуйте слой абстракции NDEF. На этой вкладке вы можете обменивать PDU (APDU в случае HCE) с эмулируемой смарт-картой. Допустимым APDU для примера приложения будет

00 A4 04 00 07 F0010203040506 00

Вы можете отправить этот APDU, введя его в поле PDU и нажав кнопку "Exch PDU". Обратите внимание, что приложение grundid HCE даже не реализует APDU ответа ISO/IEC 7816-4. Следовательно, вы можете столкнуться с проблемами с некоторыми бесконтактными считывателями смарт-карт.

Если вы хотите, чтобы ваша эмулированная смарт-карта была обнаружена NFCPlayer в качестве тега NFC Forum Type 4, содержащего сообщение NDEF (вкладка "R/W: NDEF" ), вам нужно будет реализовать спецификацию тега NFC Forum Type 4 (как определяемый NFC Forum. Эта спецификация определяет, как данные должны храниться на (эмулируемой) смарт-карте ISO/IEC 14443-4, которая будет интерпретироваться как NDEF В качестве отправной точки вы можете использовать это NDEF в примере приложения HCE (хотя качество и надежность этого кода сомнительны). реализует файловую систему смарт-карт для хранения данных NDEF.