nfc 安卓 广播 监听代码
时间: 2024-09-06 18:00:58 浏览: 106
Android 使用手机NFC的读取NFC标签数据
5星 · 资源好评率100%
在Android中,NFC(近场通信)功能需要通过BroadcastReceiver来监听NFC相关的事件。以下是创建一个简单的NFC BroadcastReceiver并注册监听nfc标签或数据交互的基本步骤:
```java
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.nfc.NdefMessage;
import android.nfc.Tag;
import android.nfc.tech.MifareUltralight;
public class NfcReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) { // 当检测到NDEF格式的数据
Tag tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
NdefMessage message = NdefMessage.readFrom(tag); // 读取NDEF消息
// 对Mifare Ultralight技术的卡片做特殊处理,这里假设你只关心这种类型的卡片
MifareUltralight mifareTech = MifareUltralight.get(tag);
if (mifareTech != null) {
// 这里进行Mifare操作
}
// 处理其他NDEF消息,例如解析其内容并执行相应操作
processNdefMessage(message);
}
}
private void processNdefMessage(NdefMessage message) {
for (NdefRecord record : message.getRecords()) {
String text = new String(record.getData());
// 打印或进一步处理文本数据
System.out.println("Detected NDEF Record: " + text);
}
}
}
// 在主Activity中注册广播接收器
IntentFilter filter = new IntentFilter();
filter.addAction(NfcAdapter.ACTION_NDEF_DISCOVERED);
registerReceiver(new NfcReceiver(), filter);
// 启动NFC扫描
startNfcScanning();
// 关闭时记得注销接收器
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(NfcReceiver);
}
```
注意,`startNfcScanning()`是一个简化的示例,实际应用中可能需要检查设备是否支持NFC以及权限情况,并调用NfcAdapter的相关API来启动扫描。
阅读全文