2016-05-23 2 views
1

Ich möchte eine Mini-App erstellen, nur um ein NFC-Tag zu lesen und später an ein anderes Gerät auf Android zu senden. Dieser Teil ist bereits fertig und ich kann das Tag lesen und ich kann die Zeichenfolge auf einem EditText drucken. Aber ich möchte auch den Text, den ich von diesem Tag gelesen habe, an ein anderes Gerät mit NFC senden. Wie kann ich das machen?Wie kann ich eine Zeichenkette über NFC an ein anderes Gerät senden?

//I have this code here when a tag is discovered... 
@Override 
protected void onNewIntent(Intent intent) { 
    if (intent.getAction().equals(NfcAdapter.ACTION_TAG_DISCOVERED)) { 
     String result = ""; 
     result = ByteArrayToHexString(intent.getByteArrayExtra(NfcAdapter.EXTRA_ID)); 
     myTag = result; 
     txtTag.setText(myTag); 

    } 
} 

Wie kann ich die Textzeichenfolge über NFC an ein anderes Gerät senden?

Antwort

0

Was Sie machen wollen, ist mit Android einfach nicht möglich (und wird wohl auch in Zukunft nicht mehr möglich sein).

Sie lesen derzeit die Anti-Kollisions-ID (UID, PUPI, oder was auch immer es für diesen bestimmten Tag Plattform genannt wird, die Sie gelesen):

result = ByteArrayToHexString(intent.getByteArrayExtra(NfcAdapter.EXTRA_ID)); 

Die Antikollisionskennung Teil eines sehr gering ist Protokollschicht. Während Android die hostbasierte Kartenemulation unterstützt (siehe Android HCE), hat die Android-API keine Möglichkeit, solche Low-Level-Parameter wie die UID zu steuern. In der Regel ist es auch nicht möglich, diese Informationen zu NFC-Tags zu ändern.

Beachten Sie, dass, wenn Ihr Tag auch einige High-Level-Daten in NDEF Format enthält könnten Sie erhalten, dass die Verwendung:

Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES); 
NdefMessage msg = null; 
if ((rawMsgs != null) && (rawMsgs.length > 0)) { 
    msg = (NdefMessage)rawMsgs[0]; 
} 
if (msg != null) { 
    // do something with the received message 
} 

Android-Unterstützung hat diese NDEF Nachrichten auf (beschreibbar) NFC-Tags zu speichern und es unterstützt auch das Senden NDEF-Nachrichten an andere NFC-Geräte (siehe Beaming NDEF Messages to Other Devices).

  • z. eine NDEF Nachricht auf einem NFC-Tag zu speichern, die Sie verwenden können:

    Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG); 
    Ndef ndef = Ndef.get(tag); 
    if (ndef != null) { 
        try { 
         ndef.connect(); 
         ndef.writeNdefMessage(msg); 
        } finally { 
         ndef.close(); 
        } 
    } else { 
        NdefFormatable ndefFormatable = NdefFormatable.get(tag); 
        if (ndefFormatable != null) { 
         try { 
          ndefFormatable.connect(); 
          ndefFormatable.format(message); 
         } finally { 
          ndefFormatable.close(); 
         } 
        } 
    } 
    
  • Oder, um die Nachricht an einem anderen NFC-Gerät über Peer-to-Peer-Modus (Android Beam) zu senden, könnten Sie verwenden:

    NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this); 
    nfcAdapter.setNdefPushMessage(msg, this); 
    
+0

Dank für ur Antwort .. Sie geht ur Struktur zu folgen, so habe ich eine Frage ... soll ich diese App auf dem Gerät installieren, wo im die Zeichenfolge senden gehen? –

+1

Ja, Sie benötigen auch eine App als Empfänger. Android würde nicht wissen, was mit den Daten ohne eine bestimmte App zu tun ist. –

Verwandte Themen