2017-01-23 3 views
0

Я хочу реализовать p2p между двумя приложениями для Android, используя NFC.Android nfc отправить сообщение в/из HCE?

Я попробовал cardemulator (https://github.com/googlesamples/android-CardEmulation) и кард-ридер (https://github.com/googlesamples/android-CardReader) Приложения. они отлично работают.

Но в этом примере он отправляет данные только от cardemulator к cardreader. Я хочу сделать другой путь.

Возможно ли отправить дополнительные данные в команду apdu? В поле данных теперь содержится помощь, если я изменю это или добавлю дополнительные данные после моего приложения, мое приложение перестанет меняться, поэтому оно не будет подключаться.

Должен ли я отправить дополнительную команду apdu с моими данными?

или это невозможно сделать?

+0

ты решил таким же образом? – firegloves

+0

Что вы имеете в виду? Я этого не решил. Теперь я могу отправить только в одном направлении (читая эмулированную карту). – Han

+0

Я бы знал, что вы пробовали и нашли решение с командами apdu, если да, дайте мне знать, пожалуйста – firegloves

ответ

0

NFC Peer 2 Режим одноранговой сети - это не то же самое, что и в режиме чтения карт NFC.

Если вы хотите отправить данные между двумя Android-приложениями, вам необходим Android Beam для работы в режиме Peer 2 Peer.

Начните отсюда, чтобы прочитать около LLCP and SNEP protocols.

В основном вам нужно отправить NDEFMessage с одного устройства на другое с помощью методов обратного вызова Android.

Чтобы отправить NDEFMessage с Android Beam вам нужно реализовать эти два интерфейса:

CreateNdefMessageCallback 
OnNdefPushCompleteCallback 

В createNdefMessage() метод вы должны создавать и возвращать NDEFMessage для отправки (here вы можете найти описание).

В комплект onNdefPushComplete() метод вы можете сделать что-то на NDEFMessage отправка полностью.

Что вам нужно, чтобы определить, какое устройство будет действовать как инициатор, а затем в createNdefMessage() вы должны вернуть NDEFMessage для отправки на другое устройство.

На принимающем устройстве (в устройстве NFC Target) вы должны получить NDEFMessage в Activity.onNewIntent(Intent intent) и управлять этим.

После этого вы можете сделать то же самое с другой стороны.

Теоретически с использованием протокола SNEP вы можете отправлять запросы SNEP GET, но на Android эта функция отключена. Здесь вы можете прочитать дискуссию Android SNEP implementation

Имейте в виду, что для получения NDEFMessage вы должны определить IntentFilter в файле yout manifest.xml, указав, какой из NDEFMessage ваша деятельность должна «перехватывать».Это пример, чтобы поймать AndroidApplicationRecord NDEFMessage:

<intent-filter> 
    <action android:name="android.nfc.action.NDEF_DISCOVERED" /> 
    <category android:name="android.intent.category.DEFAULT" /> 
    <data android:mimeType="application/com.example.android.beam" /> 
</intent-filter> 

Проверить это Android Beam Example

Надежда, что помогает

+0

Я знаю, но я не хочу использовать Android-лучи. Таким образом, можно взаимодействовать с читателем, не нажимая на экран. Вот почему я смотрю на Android-ридер и HCE. – Han

 Смежные вопросы

  • Нет связанных вопросов^_^