Pengenalan
Menulis rekod NDEF ke teg NFC memerlukan pendekatan berbeza dalam Android untuk memastikan kebolehpercayaan dan mengelakkan penulisan gagal. Sistem berasaskan Niat yang lebih lama sering membawa kepada isu akibat bacaan terganggu dan ralat senyap.
Menggunakan API enableReaderMode
API enableReaderMode yang lebih baharu menyediakan pendekatan yang lebih mantap. Ia melumpuhkan pemberitahuan sistem, membenarkan apl anda mengawal masa bunyi dan mengendalikan proses baca/tulis dengan cekap. Dengan berbuat demikian, anda boleh meminimumkan penulisan yang gagal dan rasuah data.
Kod Contoh
Coretan kod Java berikut menunjukkan cara menggunakan API enableReaderMode:
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 } } } } }
Tambahan Nota
Atas ialah kandungan terperinci Bagaimana untuk Menulis Rekod NDEF ke Teg NFC dengan API enableReaderMode Android?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!