onNewIntent não está sendo chamado para implementação do Android NFC sem ativar o Android Beam

StackOverflow https://stackoverflow.com//questions/22013058

Pergunta

Tenho trabalhado em amostras de NFC há Peer-To-Peer modo.eu implementei onResume método de duas maneiras diferentes, para modo iniciador e modo alvo conforme abaixo:

Para modo iniciador:

mAdapter.setNdefPushMessage(getTestNdefMessage(), this);

e para modo de destino:

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

Fiz um telefone Android como iniciador e outro como alvo e coloquei-os costas com costas.Aqui, posso ouvir o som de detecção do dispositivo NFC, mas não recebo nenhuma chamada para onNewIntent no telefone Android definido como modo de destino.

Alguém pode me ajudar onde estou errado, no conceito OU na implementação.Se eu habilitar Android NFC Beam de settings do que recebo notificação Initiator dispositivo para Touch to Beam.Neste caso, recebo uma ligação para onNewIntent.

Qualquer direção será útil.

Foi útil?

Solução

Android Beam é A única funcionalidade de comunicação ponto a ponto do Android.Portanto, ao desativar o Android Beam, seu dispositivo não poderá enviar ou receber mensagens no modo ponto a ponto.Consequentemente, onNewIntent (et al) não disparará ao colocar dois telefones juntos se o Beam estiver desativado.

O Android Beam é implementado sobre a pilha de protocolos de modo ponto a ponto padrão do 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)                    |
+--------------------------------------------+

(A terminologia "iniciador" e "destino" que você usa só é relevante na camada NFCIP-1.Normalmente, ambas as partes seriam implementadas em um dispositivo NFC e dois dispositivos NFC concordariam (de forma um tanto automática) sobre quem assume o papel de iniciador e quem assume o papel de destino.)

Portanto, você normalmente implementaria todas as camadas até SNEP para se comunicar com um dispositivo Android que tenha Beam.O Windows Phone 8 e o Blackberry já implementam o SNEP para troca de dados NDEF ponto a ponto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top