Краткий ответ: вы не можете.
Android API не позволяет реализовывать пользовательские службы LLCP. Единственными службами LLCP, реализованными на устройствах Android, являются сервер NFC Forum SNEP по умолчанию (имя службы urn:nfc:sn:snep
, адрес точки доступа к службе 4) и, по устаревшим причинам, протокол push-уведомлений Android NDEF (аналогичный SNEP, но восходящий к временам, предшествующим спецификации SNEP). был опубликован).
В то время как спецификация протокола SNEP определяет запрос GET для извлечения сообщения NDEF с другого устройства, сервер SNEP по умолчанию NFC Forum определен только для приема запросов PUT. Запросы GET должны отклоняться этим сервером SNEP.
Из технической спецификации протокола обмена NFC Forum Simple NDEF (версия 1.0):
Сервер SNEP по умолчанию предоставляет логический почтовый ящик. Клиент, подключенный к серверу по умолчанию, может помещать сообщения NDEF в папку «Входящие», используя сообщения запроса на размещение. [...]
Сервер по умолчанию НЕ ДОЛЖЕН принимать запросы Get. Соответствующий ответ на сообщение запроса Get — Not Implemented.
Таким образом, вы можете отправлять сообщения NDEF только на сервер NFC Forum SNEP по умолчанию, а не наоборот.
Следовательно, если вы хотите отправить сообщение NDEF на устройство Android через одноранговый режим, вам необходимо реализовать SNEP клиент< /em> на стороне ACR122U. Затем вы можете позволить этому клиенту подключиться к серверу SNEP на устройстве Android (с именем службы urn:nfc:sn:snep
) и передать ему сообщение NDEF с помощью запроса PUT.
Если вы хотите получать сообщение NDEF от устройства Android через одноранговый режим, вам необходимо внедрить SNEP сервер на стороне ACR122U. Затем клиент Android SNEP подключится к вашему серверу SNEP и отправит на него ожидающее сообщение NDEF (например, зарегистрированное через NfcAdapter.setNdefPushMessage()
), используя, опять же, запрос PUT.
person
Michael Roland
schedule
02.01.2017