Heim >Java >javaLernprogramm >Wie schreibe ich NDEF-Datensätze mithilfe der enableReaderMode-API in ein NFC-Tag?

Wie schreibe ich NDEF-Datensätze mithilfe der enableReaderMode-API in ein NFC-Tag?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-12 20:38:02224Durchsuche

How to Write NDEF Records to an NFC Tag Using enableReaderMode API?

So schreiben Sie NDEF-Datensätze in ein NFC-Tag

Das Problem verstehen

NDEF, oder NFC Data Exchange Format wird zum Speichern von Daten auf NFC-Tags verwendet. Um NDEF-Datensätze auf ein NFC-Tag zu schreiben, müssen Sie:

  1. Eine NDEF-Nachricht mit den gewünschten Daten verfassen.
  2. Das NFC-Tag identifizieren und eine Verbindung herstellen.
  3. Schreiben Sie die NDEF-Nachricht in das Tag.

Schreiben von NDEF-Datensätzen mithilfe der enableReaderMode-API

Der bisherige Ansatz der Verwendung absichtsbasierter NFC-Operationen führte zu Einschränkungen und Benutzereinschränkungen Erfahrungsprobleme. Um diese zu beheben, besteht der neuere und empfohlene Ansatz darin, die API „enableReaderMode“ zu verwenden.

Diese API ermöglicht die direkte Steuerung des NFC-Lesegeräts und ermöglicht Ihnen:

  • Systembenachrichtigungstöne ausschalten
  • Verhindern Sie, dass Ihre App während des Lesevorgangs angehalten wird
  • Behandeln Sie Fehler stillschweigend und geben Sie Feedback, wenn der Schreibvorgang erfolgreich ist

Beispielimplementierung

Unten finden Sie einen Codeausschnitt, der diesen Ansatz implementiert:

public class NFCActivity extends AppCompatActivity implements NfcAdapter.ReaderCallback {
    private NfcAdapter mNfcAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_nfc);

        mNfcAdapter = NfcAdapter.getDefaultAdapter(this);
    }

    @Override
    protected void onResume() {
        super.onResume();

        if (mNfcAdapter != null) {
            Bundle options = new Bundle();
            options.putInt(NfcAdapter.EXTRA_READER_PRESENCE_CHECK_DELAY, 250);

            mNfcAdapter.enableReaderMode(this, this,
                    NfcAdapter.FLAG_READER_NFC_A |
                            NfcAdapter.FLAG_READER_NFC_B |
                            NfcAdapter.FLAG_READER_NFC_F |
                            NfcAdapter.FLAG_READER_NFC_V |
                            NfcAdapter.FLAG_READER_NFC_BARCODE |
                            NfcAdapter.FLAG_READER_NO_PLATFORM_SOUNDS,
                    options);
        }
    }

    @Override
    public void onTagDiscovered(Tag tag) {
        Ndef mNdef = Ndef.get(tag);
        if (mNdef != null) {
            NdefRecord mRecord =
                    NdefRecord.createTextRecord("en", "English String");
            NdefMessage mMsg = new NdefMessage(mRecord);

            try {
                mNdef.connect();
                mNdef.writeNdefMessage(mMsg);

                runOnUiThread(() -> {
                    Toast.makeText(getApplicationContext(),
                            "Write to NFC Success", Toast.LENGTH_SHORT).show();
                });

                try {
                    Uri notification = RingtoneManager.
                            getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
                    Ringtone r = RingtoneManager.getRingtone(getApplicationContext(),
                            notification);
                    r.play();
                } catch (Exception e) {
                    // Handle error playing sound
                }

            } catch (Exception e) {
                // Handle errors
            } finally {
                try {
                    mNdef.close();
                } catch (Exception e) {
                    // Handle error closing tag
                }
            }
        }
    }
}

Dieser Ansatz sorgt für ein zuverlässigeres und benutzerfreundlicheres NFC-Schreiberlebnis.

Das obige ist der detaillierte Inhalt vonWie schreibe ich NDEF-Datensätze mithilfe der enableReaderMode-API in ein NFC-Tag?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn