引言
近年来,随着智能手机的普及和技术的不断进步,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标签,可以使用NdefRecord
、NdefMessage
和Ndef
类来实现。下面是一个简单的写入示例代码:
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标签的交互。希望本文对你有所帮助!
本文来自极简博客,作者:青春无悔,转载请注明原文链接:Android Studio安卓读写NFC Ntag标签源码