Rumah  >  Artikel  >  Java  >  Bagaimana untuk Menulis Rekod NDEF ke Teg NFC Menggunakan API enableReaderMode?

Bagaimana untuk Menulis Rekod NDEF ke Teg NFC Menggunakan API enableReaderMode?

Patricia Arquette
Patricia Arquetteasal
2024-11-12 20:38:02164semak imbas

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

Cara Menulis Rekod NDEF ke Teg NFC

Memahami Isu

NDEF, atau Format Pertukaran Data NFC, digunakan untuk menyimpan data pada tag NFC. Untuk menulis rekod NDEF pada teg NFC, anda perlu:

  1. Karang mesej NDEF dengan data yang dikehendaki.
  2. Kenal pasti dan sambungkan ke teg NFC.
  3. Tulis mesej NDEF pada teg.

Menulis Rekod NDEF Menggunakan API enableReaderMode

Pendekatan sebelumnya menggunakan operasi NFC berasaskan Niat memperkenalkan had dan pengguna masalah pengalaman. Untuk menanganinya, pendekatan yang lebih baharu dan disyorkan ialah menggunakan API enableReaderMode.

API ini menyediakan kawalan terus ke atas pembaca NFC, membolehkan anda:

  • Matikan bunyi pemberitahuan sistem
  • Halang apl anda daripada dijeda semasa operasi baca
  • Kendalikan ralat secara senyap dan berikan maklum balas apabila operasi tulis berjaya

Contoh Pelaksanaan

Di bawah ialah coretan kod yang melaksanakan pendekatan ini:

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

Pendekatan ini memastikan pengalaman menulis NFC yang lebih dipercayai dan mesra pengguna.

Atas ialah kandungan terperinci Bagaimana untuk Menulis Rekod NDEF ke Teg NFC Menggunakan API enableReaderMode?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn