Android Studio安卓读写NFC Ntag标签源码

青春无悔 2024-05-23 ⋅ 51 阅读

引言

近年来,随着智能手机的普及和技术的不断进步,NFC(Near Field Communication)技术也逐渐被广泛应用。NFC技术具备快速、简便、安全的特点,使得它成为安卓开发者们炙手可热的一个技术点。本文将介绍如何通过Android Studio来读写NFC Ntag标签。

准备工作

在开始之前,需要确保你的开发设备支持NFC,并且已经安装了Android Studio。如果你的设备不支持NFC,可以选择借用一台支持该技术的设备进行开发调试。

设置读写权限

在开始读写NFC Ntag标签之前,我们需要在AndroidManifest.xml文件中添加相应的权限。打开AndroidManifest.xml文件并添加以下代码:

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

创建NFCAdapter实例

为了与NFC进行交互,我们首先需要获取NFCAdapter实例。在你的Activity文件中,添加以下代码:

private NfcAdapter mNfcAdapter;
...
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ...
    mNfcAdapter = NfcAdapter.getDefaultAdapter(this);
    if (mNfcAdapter == null) {
        Toast.makeText(this, "Device does not support NFC", Toast.LENGTH_SHORT).show();
        finish();
        return;
    }
    // 检查NFC是否已经启用
    if (!mNfcAdapter.isEnabled()) {
        Toast.makeText(this, "Please enable NFC", Toast.LENGTH_SHORT).show();
        finish();
        return;
    }
}

设置NFC标签检测

接下来,我们需要在Activity的onResume()方法中设置NFC标签检测。在你的Activity文件中,添加以下代码:

@Override
protected void onResume() {
    super.onResume();
    // 设置标志位用于指示是否进行NFC检测
    mNfcAdapter.enableForegroundDispatch(this, pendingIntent, null, null);
}

@Override
protected void onPause() {
    super.onPause();
    mNfcAdapter.disableForegroundDispatch(this);
}

处理NFC标签读取

在Activity文件中,添加以下代码来处理NFC标签的读取:

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) {
        Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
        // 获取Tag对象之后,在这里编写对标签读取的逻辑代码
        // ...
    }
}

写入NFC标签

要写入NFC标签,可以使用NdefRecordNdefMessageNdef类来实现。下面是一个简单的写入示例代码:

private boolean writeNfcTag(Tag tag, NdefMessage ndefMessage) {
    try {
        Ndef ndef = Ndef.get(tag);
        if (ndef != null) {
            ndef.connect();
            if (ndef.isWritable()) {
                int maxSize = ndef.getMaxSize();
                int messageSize = ndefMessage.toByteArray().length;
                if (messageSize < maxSize) {
                    ndef.writeNdefMessage(ndefMessage);
                    return true;
                } else {
                    Toast.makeText(this, "Message is too long for the tag", Toast.LENGTH_SHORT).show();
                }
            } else {
                Toast.makeText(this, "Tag is not writable", Toast.LENGTH_SHORT).show();
            }
            ndef.close();
        } else {
            NdefFormatable formatable = NdefFormatable.get(tag);
            if (formatable != null) {
                formatable.connect();
                formatable.format(ndefMessage);
                return true;
            } else {
                Toast.makeText(this, "Tag is not NDEF formatable", Toast.LENGTH_SHORT).show();
            }
        }
    } catch (Exception e) {
        e.printStackTrace();
        Toast.makeText(this, "Write error", Toast.LENGTH_SHORT).show();
    }
    return false;
}

总结

本文介绍了如何在Android Studio中读写NFC Ntag标签的源码。通过使用NFCAdapter和相关的类,我们可以轻松地实现与NFC标签的交互。希望本文对你有所帮助!


全部评论: 0

    我有话说: