Heim >Java >javaLernprogramm >Wie schreibe ich NDEF-Datensätze mit der enableReaderMode-API von Android in NFC-Tags?
Einführung
Das Schreiben von NDEF-Datensätzen auf NFC-Tags erfordert ein anderer Ansatz in Android, um Zuverlässigkeit sicherzustellen und fehlgeschlagene Schreibvorgänge zu vermeiden. Das ältere Intent-basierte System führte häufig zu Problemen aufgrund unterbrochener Lesevorgänge und stiller Fehler.
Verwendung der „enableReaderMode“-API
Die neuere „enableReaderMode“-API bietet einen robusteren Ansatz. Dadurch werden Systembenachrichtigungen deaktiviert, sodass Ihre App das Timing von Tönen steuern und den Lese-/Schreibvorgang effizient durchführen kann. Auf diese Weise können Sie fehlgeschlagene Schreibvorgänge und Datenbeschädigungen minimieren.
Beispielcode
Der folgende Java-Codeausschnitt zeigt, wie die API „enableReaderMode“ verwendet wird:
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); // Rest of Activity setup } @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 protected void onPause() { super.onPause(); if(mNfcAdapter!= null) mNfcAdapter.disableReaderMode(this); } @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(); }); Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); Ringtone r = RingtoneManager.getRingtone(getApplicationContext(), notification); r.play(); } catch (Exception e) { // Handle errors } finally { try { mNdef.close(); } catch (IOException e) { // Handle I/O failure or cancelled operation } } } } }
Zusätzliche Hinweise
Das obige ist der detaillierte Inhalt vonWie schreibe ich NDEF-Datensätze mit der enableReaderMode-API von Android in NFC-Tags?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!