소개
NFC 태그에 NDEF 레코드를 쓰려면 다음이 필요합니다. 안정성을 보장하고 쓰기 실패를 방지하기 위한 Android의 다른 접근 방식입니다. 이전 인텐트 기반 시스템에서는 읽기 중단 및 자동 오류로 인해 문제가 발생하는 경우가 많았습니다.
enableReaderMode API 사용
최신 enableReaderMode API는 더욱 강력한 접근 방식을 제공합니다. 시스템 알림을 비활성화하여 앱이 소리 타이밍을 제어하고 읽기/쓰기 프로세스를 효율적으로 처리할 수 있도록 합니다. 이렇게 하면 쓰기 실패 및 데이터 손상을 최소화할 수 있습니다.
예제 코드
다음 Java 코드 조각은 활성화ReaderMode API를 사용하는 방법을 보여줍니다.
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 } } } } }
추가 참고 사항
위 내용은 Android의 활성화ReaderMode API를 사용하여 NFC 태그에 NDEF 레코드를 쓰는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!