onNewIntent не вызывается для реализации Android NFC без включения луча Android
-
21-12-2019 - |
Вопрос
Я работал над образцами NFC для Peer-To-Peer
режим.я реализовал onResume
метод двумя разными способами: для режима инициатора и целевого режима, как показано ниже:
Для режима инициатора:
mAdapter.setNdefPushMessage(getTestNdefMessage(), this);
и для целевого режима:
mAdapter.enableForgroundDispatch(this, pendingIntent, null, null);
Я сделал один телефон Android в качестве инициатора, а другой в качестве цели и соединил их друг с другом.Здесь я могу слушать звук обнаружения устройства NFC, но не получаю никаких вызовов. onNewIntent
на телефоне Android установлен целевой режим.
Может ли кто-нибудь помочь мне, где я ошибаюсь, в концепции ИЛИ в реализации.Если я включу Android NFC Beam
от settings
чем я получаю уведомление Initiator
устройство для Touch to Beam
.В этом случае мне позвонят onNewIntent
.
Любое направление будет полезным.
Решение
Android-луч является Единственная функция одноранговой связи 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.