Можно ли использовать Android Beam между устройством Android и другим устройством NFC?

Я хотел бы реализовать связь NFC между моим Android-приложением и киоском с поддержкой NFC. Я прочитал документацию и я понимаю, что нажатие данных может быть выполнено двумя способами:

  • На переднем плане NDEF нажатие для уровня API с 10 по 13
  • Через Android Beam из уровня API 14

Я думаю, что могу сделать то, что хочу, с помощью первого решения, но я хотел бы узнать, можно ли использовать Android Beam между Android-устройством и не-андроидным устройством?

Спасибо за вашу помощь,

Ромны

Ответ 1

Хотя функция вызывает вызовы между API 10-13 и APi 14, фактический базовый протокол почти такой же. В обоих случаях одноранговая связь NFC выполняется с использованием LLCP. В API 10-13 используется фактический протокол передачи данных - АЭС. В API 14 к этому добавляется SNEP, но он возвращается на АЭС, когда другое устройство не поддерживает SNEP.

Поэтому, когда ваше устройство, отличное от Android, реализует SNEP и/или NPP поверх LLCP, оно может передавать данные и получать данные с устройства Android NFC. Существует несколько реализаций SNEP и LLCP для устройств для чтения карт, см., Например, https://github.com/grundid/nfctools.

Ответ 2

Я посмотрел на это для проекта колледжа.

Во-первых, пожалуйста, не существует 3 режимов работы NFC {Считывание/запись карт, эмуляция тегов и P2P-связь}. Android поддерживает чтение/запись на карточке и обмен P2P.

Для связи с устройством без Android через P2P достаточно сложно, так как вы должны использовать протокол NPP (Ndef Push Protocol), построенный на LLCP (протокол управления логической связью). Для вашей платформы не для Android потребуется реализовать LLCP для связи. Я не уверен, что это уже сделано для NFC. Информацию о реализации NPP/LLCP можно найти здесь

Следующий подход - использовать режим чтения/записи карт для связи с не-Android-устройством, работающим в режиме эмуляции карты. Таким образом вы можете отправить APDU в эмулированный тег для отправки и получения данных. Я сделал этот подход в обратном порядке, используя BlackBerry для моего проекта. BlackBerry поддерживает эмуляцию карт, поэтому я использовал устройство Android (ACR122U) для отправки APDU на BlackBerry.

В то время как первый подход (P2P), очевидно, является идеальным способом, второй может быть проще реализовать. В любом случае, это хорошо работало для меня в моем приложении, я создал систему, которая принимает платежи через NFC.

Обратите внимание, что ACR122U не имеет хорошей поддержки эмуляции тегов NFC, поэтому он не подходит для вас. LibNFC - отличное начало найти устройство, поддерживающее эмуляцию тегов.

Теперь я закончил проект, и он отлично работает с использованием устройства ACR122U. Если вам нужна помощь по второму подходу, спросите пожалуйста.

Ответ 3

Смотрите сладости Выпуск 28014: Включите реальную связь NFC p2p и возможность отключения интерфейса "Touch to Beam"
https://code.google.com/p/android/issues/detail?id=28014 Android Peer to Peer доза не работает вообще.