Android のenableReaderMode API を使用して NDEF レコードを NFC タグに書き込む方法

Barbara Streisand
リリース: 2024-11-15 09:20:03
オリジナル
307 人が閲覧しました

How to Write NDEF Records to NFC Tags with Android's enableReaderMode API?

enableReaderMode API を使用して NDEF レコードを NFC タグに書き込む方法

概要

NFC タグに NDEF レコードを書き込むには、以下が必要ですAndroid では、信頼性を確保し、書き込み失敗を回避するための別のアプローチを採用しています。古いインテント ベースのシステムでは、読み取りの中断やサイレント エラーが原因で問題が発生することがよくありました。

enableReaderMode API の使用

新しいenableReaderMode API は、より堅牢なアプローチを提供します。システム通知を無効にすることで、アプリがサウンドのタイミングを制御し、読み取り/書き込みプロセスを効率的に処理できるようになります。そうすることで、書き込みの失敗とデータの破損を最小限に抑えることができます。

サンプル コード

次の Java コード スニペットは、enableReaderMode 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
                }
            }
        }
    }
}
ログイン後にコピー

追加メモ

  • キャッシュされた NDEF メッセージは、mNdef.getCachedNdefMessage() を使用して読み取ることができます。
  • サイレント エラーを回避するには、次のようにする必要があります。読み取り/書き込み操作中のすべての例外を処理します。
  • Android 12L 以降では、Tag オブジェクトが古くなると SecurityException がスローされる可能性があります。

以上がAndroid のenableReaderMode API を使用して NDEF レコードを NFC タグに書き込む方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート