onNewIntent не вызывается для реализации Android NFC без включения луча Android

Я работал над образцами NFC для Peer-To-Peer Режим. Я реализовал onResume метод двумя различными способами, для режима инициатора и целевого режима, как показано ниже:

Для режима инициатора:

mAdapter.setNdefPushMessage(getTestNdefMessage(), this);

и для целевого режима:

mAdapter.enableForgroundDispatch(this, pendingIntent, null, null);

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

Кто-нибудь может мне помочь, где я не прав, в концепции ИЛИ в реализации. Если я включу Android NFC Beam от settings чем я получаю уведомление о Initiator устройство для Touch to Beam, В этом случае мне звонят onNewIntent,

Любое направление будет полезно.

1 ответ

Решение

Android Beam - единственная в Android функциональность одноранговой связи. Поэтому, когда вы отключите Android Beam, ваше устройство не сможет отправлять или получать сообщения в одноранговом режиме. Как следствие, onNewIntent (и др.) не срабатывает при соединении двух телефонов, если Beam отключен.

Android Beam реализован поверх стандартного стека протоколов однорангового режима NFC Forum:

+--------------------------------------------+
| Android Beam                               |
+--------------------------------------------+
| NDEF (NFC Data Exchange Format)            |
+--------------------------------------------+
| SNEP (Simple NDEF Exchange Protocol)       |
| (or NDEF Push Protocol (NPP) for backwards |
| compatibility to pre-SNEP Android devices) |
+--------------------------------------------+
| LLCP (Logical Link Control Protocol)       |
+--------------------------------------------+
| NFCIP-1 (ISO/IEC 18092)                    |
+--------------------------------------------+

(Используемая вами терминология "инициатор" и "цель" применима только к уровню NFCIP-1. Обычно обе части будут реализованы на устройстве NFC, и два устройства NFC (несколько автоматически) согласятся с тем, кто берет на себя роль инициатора и кто берет на себя целевую роль.)

Таким образом, вы обычно реализуете все уровни вплоть до SNEP, чтобы взаимодействовать с устройством Android с Beam. Windows Phone 8 и Blackberry уже реализуют SNEP для однорангового обмена данными NDEF.

Другие вопросы по тегам