android 实现nfc通讯代码
时间: 2024-01-21 11:04:55 浏览: 140
基于Android系统的NFC技术实现
4星 · 用户满意度95%
好的,下面是 Android 实现 NFC 通讯的基本代码:
1. 在 AndroidManifest.xml 文件中添加以下权限:
```xml
<uses-permission android:name="android.permission.NFC" />
```
2. 在 Activity 中声明一个 NfcAdapter 对象:
```java
private NfcAdapter mNfcAdapter;
```
3. 在 Activity 的 onCreate() 方法中初始化 NfcAdapter 对象:
```java
mNfcAdapter = NfcAdapter.getDefaultAdapter(this);
```
4. 在 Activity 的 onResume() 方法中启用前台调度(Foreground Dispatch),以便在应用程序在前台运行时处理 NFC 意图(Intent):
```java
PendingIntent pendingIntent = PendingIntent.getActivity(
this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);
IntentFilter[] intentFiltersArray = new IntentFilter[] {
new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED),
new IntentFilter(NfcAdapter.ACTION_TECH_DISCOVERED),
new IntentFilter(NfcAdapter.ACTION_TAG_DISCOVERED)
};
String[][] techListsArray = new String[][] {
new String[] { NfcF.class.getName() },
new String[] { IsoDep.class.getName() },
new String[] { NfcA.class.getName() },
new String[] { NfcB.class.getName() },
new String[] { NfcV.class.getName() },
new String[] { MifareClassic.class.getName() },
new String[] { MifareUltralight.class.getName() }
};
mNfcAdapter.enableForegroundDispatch(this, pendingIntent, intentFiltersArray, techListsArray);
```
5. 在 Activity 的 onPause() 方法中禁用前台调度:
```java
mNfcAdapter.disableForegroundDispatch(this);
```
6. 在 Activity 中重写 onNewIntent() 方法,以处理 NFC 意图:
```java
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) {
// 处理 NDEF 意图
} else if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(intent.getAction())) {
// 处理 TECH 意图
} else if (NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) {
// 处理 TAG 意图
}
}
```
这就是 Android 实现 NFC 通讯的基本代码。您可以在 onNewIntent() 方法中根据需要处理不同类型的 NFC 意图,并执行相应的操作。
阅读全文