Android 读写 NFC 的基础知识

NFC(近场通信)是一种短距离无线通信技术,可以让设备在彼此靠近时交换信息。Android 提供了对 NFC 的支持,使其开发者能够轻松地实现读写 NFC 标签的功能。本文将介绍 Android 中如何实现 NFC 的读写,并提供相关的代码示例。

NFC 基础知识

NFC 工作在 13.56 MHz 的频带上,通常在 10 厘米以内的范围内有效。NFC 标签一般有三种类型:

  1. Type 1:可读写,速度慢,通常用于简单应用。
  2. Type 2:更常见,支持读写,具有较快的速度。
  3. Type 3:速度快,存储空间大,多用于专业应用。
  4. Type 4:灵活,可用于大多数用途。

Android 中的 NFC 操作

为了在 Android 应用中使用 NFC,首先需要在 AndroidManifest.xml 中声明 NFC 权限和特性。

<uses-permission android:name="android.permission.NFC" />
<uses-feature android:name="android.hardware.nfc" android:required="true" />

读取 NFC 标签

在实现 NFC 读取功能时,我们需要创建一个 NfcAdapter 对象并重写 onNewIntent 方法,以获取 NFC 标签的内容。

public class MainActivity extends AppCompatActivity {
    private NfcAdapter nfcAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        nfcAdapter = NfcAdapter.getDefaultAdapter(this);
    }

    @Override
    protected void onResume() {
        super.onResume();
        Intent intent = getIntent();
        resolveIntent(intent);
    }

    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        resolveIntent(intent);
    }

    private void resolveIntent(Intent intent) {
        if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) {
            Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
            // 读取数据
            ReadNfc(tag);
        }
    }

    private void ReadNfc(Tag tag) {
        // 读取 NDEF 记录的示例
    }
}

写入 NFC 标签

写入 NFC 标签的过程稍微复杂一些,我们需要使用 NdefRecordNdefMessage 来创建要写入的数据。

private void WriteNfc(Tag tag) {
    NdefMessage ndefMessage = new NdefMessage(new NdefRecord[]{
        NdefRecord.createTextRecord("en", "Hello NFC!")
    });

    try {
        NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this);
        Ndef ndef = Ndef.get(tag);
        ndef.connect();
        ndef.writeNdefMessage(ndefMessage);
        ndef.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
}

类图

下面是用于表示 NFC 操作的类图:

classDiagram
    class MainActivity {
        +NfcAdapter nfcAdapter
        +void onCreate(Bundle savedInstanceState)
        +void onResume()
        +void onNewIntent(Intent intent)
        +void resolveIntent(Intent intent)
        +void ReadNfc(Tag tag)
        +void WriteNfc(Tag tag)
    }

总结

通过以上的示例代码,我们可以看到,Android 为我们提供了一个简单的接口来读取和写入 NFC 标签。只需简单的代码,我们便能够实现与 NFC 标签的交互。这种技术在很多场景中都有广泛应用,如门禁控制、交通卡、支付等。希望本文能帮助您了解 Android 的 NFC 操作,期待您在实际开发中充分利用这一强大功能!