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.