2017-01-23 5 views
0

Ich möchte P2P zwischen zwei Android-Apps mit NFC implementieren.Android nfc Nachricht an und von HCE senden?

Ich habe den Cardemulator (https://github.com/googlesamples/android-CardEmulation) und Cardreader (https://github.com/googlesamples/android-CardReader) Apps ausprobiert. sie funktionieren gut.

In diesem Beispiel werden nur Daten vom Cardemulator zum Cardreader gesendet. Ich möchte auch den anderen Weg gehen.

Ist es möglich, zusätzliche Daten innerhalb des Befehls apdu zu senden? Das Datenfeld enthält jetzt die Hilfe, wenn ich dies ändere oder zusätzliche Daten nach der Hilfe hinterlege, ändert meine App natürlich die Hilfe, so dass keine Verbindung hergestellt wird.

Sollte ich einen zusätzlichen apdu-Befehl mit meinen Daten senden?

oder ist es nicht möglich?

+0

haben Sie gelöst in gleicher Weise hilft? – firegloves

+0

Was meinst du ??, ich habe es nicht gelöst. Jetzt kann ich nur in eine Richtung senden (durch Lesen der emulierten Karte). – Han

+0

Ich wüsste von dir habe versucht und eine lösung mit apdu-befehlen gefunden, wenn also lass mich bitte wissen – firegloves

Antwort

0

NFC Peer 2 Der Peer-Modus ist nicht das Gleiche wie der NFC-Kartenleser-Modus.

Wenn Sie Daten zwischen zwei Android-App senden möchten, benötigen Sie Android Beam, um im Peer 2 Peer-Modus zu arbeiten.

Starten Sie von hier, um etwas über LLCP and SNEP protocols zu lesen.

Grundsätzlich müssen Sie NDEFMessage von einem Gerät zum anderen senden mit Android Callback-Methoden.

Um einen NDEFMessage mit Android Beam senden müssen Sie diese beiden Schnittstellen implementieren:

CreateNdefMessageCallback 
OnNdefPushCompleteCallback 

In createNdefMessage() Methode, die Sie erstellen müssen und das Rück ein NDEFMessage (here Sie eine Beschreibung finden) zu senden.

In onNdefPushComplete() Methode können Sie etwas tun auf NDEFMessage Senden abgeschlossen.

Sie müssen herausfinden, welches Gerät als Initiator fungiert, dann sollten Sie in createNdefMessage() eine NDEFMessage zurücksenden, um sie an das andere Gerät zu senden.

Auf dem empfangenden Gerät (in NFC namens Target-Gerät) sollten Sie NDEFMessage in Activity.onNewIntent(Intent intent) erhalten und das verwalten.

Danach können Sie das gleiche auf der anderen Seite tun.

Theoretisch mit SNEP-Protokoll sollten Sie SNEP GET-Anforderungen senden können, aber auf Android wurde diese Funktionalität deaktiviert. Hier können Sie eine Diskussion lesen über Android SNEP implementation

Denken Sie daran, dass Sie einen IntentFilter in yout manifest.xml definieren müssen, um anzugeben, welche NDEFMessage Ihre Aktivität "abfangen" muss, um eine NDEFMessage empfangen zu können.Dies ist ein Beispiel AndroidApplicationRecord NDEFMessage zu fangen:

<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> 

prüfen diese Android Beam Example

Hoffnung, die

+0

ich weiß, aber ich will nicht Android beam verwenden. So ist es möglich, mit dem Leser zu interagieren, ohne auf den Bildschirm zu drücken. Deshalb betrachte ich Android-Leser und HCE. – Han

Verwandte Themen