Maison > Java > javaDidacticiel > le corps du texte

Comment écrire des enregistrements NDEF sur une balise NFC à l'aide de l'API EnableReaderMode ?

Patricia Arquette
Libérer: 2024-11-12 20:38:02
original
170 Les gens l'ont consulté

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

Comment écrire des enregistrements NDEF sur une balise NFC

Comprendre le problème

NDEF, ou Le format d'échange de données NFC est utilisé pour stocker des données sur des balises NFC. Pour écrire des enregistrements NDEF sur une balise NFC, vous devez :

  1. Composer un message NDEF avec les données souhaitées.
  2. Identifier et vous connecter à la balise NFC.
  3. Écrivez le message NDEF dans la balise.

Écrit des enregistrements NDEF à l'aide de l'API activateReaderMode

L'approche précédente consistant à utiliser des opérations NFC basées sur l'intention introduisait des limitations et des problèmes d’expérience. Pour résoudre ces problèmes, l'approche la plus récente et recommandée consiste à utiliser l'API activateReaderMode.

Cette API fournit un contrôle direct sur le lecteur NFC, vous permettant de :

  • Désactiver les sons de notification du système
  • Empêchez votre application d'être mise en pause pendant l'opération de lecture
  • Gérez les erreurs en silence et fournissez des commentaires lorsque l'opération d'écriture réussit

Exemple de mise en œuvre

Vous trouverez ci-dessous un extrait de code qui implémente cette approche :

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
                }
            }
        }
    }
}
Copier après la connexion

Cette approche garantit une expérience d'écriture NFC plus fiable et plus conviviale.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal