当前位置: 首页 > news >正文

Android NFC通信示例

前言

近距离无线通信 (NFC) 是一组近距离无线技术,通常只有在距离不超过 4 厘米时才能启动连接。借助 NFC,您可以在 NFC 标签与 Android 设备之间或者两台 Android 设备之间共享小型负载。

支持 NFC 的 Android 设备同时支持以下三种主要操作模式:

  1. 读取器/写入器模式:支持 NFC 设备读取和/或写入被动 NFC 标签和贴纸。
  2. 点对点模式:支持 NFC 设备与其他 NFC 对等设备交换数据;Android Beam 使用的就是此操作模式。
  3. 卡模拟模式:支持 NFC 设备本身充当 NFC 卡。然后,可以通过外部 NFC 读取器(例如 NFC 销售终端)访问模拟 NFC 卡。

示例

下面是一个简单的 Android NFC 通信示例,它演示了如何使用 NFC 技术在两个 Android 设备之间进行通信。

在 AndroidManifest.xml 文件中添加以下权限:

<uses-permission android:name="android.permission.NFC" />

在您的 Activity 中,您需要创建一个 NfcAdapter 对象,并注册一个 NDEF 消息接收器来处理接收到的 NDEF 消息。以下是一个示例:

public class MainActivity extends AppCompatActivity {private NfcAdapter nfcAdapter;private PendingIntent pendingIntent;private IntentFilter[] intentFiltersArray;private String[][] techListsArray;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);// 获取 NfcAdapter 对象nfcAdapter = NfcAdapter.getDefaultAdapter(this);// 创建一个 PendingIntent 对象,用于处理 NFC IntentIntent intent = new Intent(this, getClass());intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);pendingIntent = PendingIntent.getActivity(this, 0, intent, 0);// 创建一个 IntentFilter 对象,用于过滤 NFC IntentIntentFilter intentFilter = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED);try {intentFilter.addDataType("application/vnd.com.example.android.beam");} catch (IntentFilter.MalformedMimeTypeException e) {e.printStackTrace();}intentFiltersArray = new IntentFilter[] { intentFilter };// 创建一个 TechList 数组,用于指定 NFC 技术列表techListsArray = new String[][] { new String[] { NfcF.class.getName() } };}@Overrideprotected void onResume() {super.onResume();// 在 onResume() 方法中启用 NFC 功能,注册 NDEF 消息接收器if (nfcAdapter != null) {nfcAdapter.enableForegroundDispatch(this, pendingIntent, intentFiltersArray, techListsArray);}}@Overrideprotected void onPause() {// 在 onPause() 方法中禁用 NFC 功能,注销 NDEF 消息接收器super.onPause();if (nfcAdapter != null) {nfcAdapter.disableForegroundDispatch(this);}}@Overrideprotected void onNewIntent(Intent intent) {super.onNewIntent(intent);// 处理接收到的 NDEF 消息String action = intent.getAction();if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(action)) {Parcelable[] rawMsgs = intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);if (rawMsgs != null) {NdefMessage[] msgs = new NdefMessage[rawMsgs.length];for (int i = 0; i < rawMsgs.length; i++) {msgs[i] = (NdefMessage) rawMsgs[i];}// 处理接收到的 NDEF 消息// ...}}}
}

在上述代码中,我们创建了一个 NfcAdapter 对象,使用 enableForegroundDispatch() 方法启用 NFC 功能,并在 onResume() 方法中注册了一个 NDEF 消息接收器。在 onPause() 方法中禁用 NFC 功能,并在 onNewIntent() 方法中处理接收到的 NDEF 消息。

此示例使用 NfcF 技术来进行 NFC 通信。如果您需要使用其他 NFC 技术进行通信,您需要修改 techListsArray 数组中的技术列表。同时,您还需要修改 IntentFilter 中的数据类型,以适应您的应用程序需求。

请注意,此示例仅演示了如何使用 NFC 技术在两个 Android 设备之间进行通信。在实际应用中,您可能需要更复杂的通信协议和数据格式。

http://www.lryc.cn/news/109149.html

相关文章:

  • 2023年08月IDE流行度最新排名
  • 使用Beego和MySQL实现帖子和评论的应用,并进行接口测试(附源码和代码深度剖析)
  • 物联网潜在的巨大价值在于大数据分析
  • SSL原理详解
  • linux下的etc目录代表什么意思
  • iOS 两种方式设置状态栏
  • html5:webSocket 基础使用
  • html学习10-----总结(完)
  • Spring使用P命名空间实现注入数值信息-----Spring框架
  • windows环境下安装RabbitMQ
  • Java源码规则引擎:jvs-rules决策流的自定义权限控制
  • Python-字符串的世界
  • 使用上 Spring 的事件机制
  • Linux安装QT
  • 如何用arduino uno主板播放自己想要的曲子。《我爱你中国》单片机版本。
  • redis入门2-命令
  • Typescript 枚举类型
  • docker小记-容器中启动映射端口号但访问不到
  • Java中的Map常见使用案例代码
  • 计算机视觉实验:图像处理综合-路沿检测
  • Linux环境下VS code的python与C++调试环境的安装
  • AlexNet卷积神经网络-笔记
  • 剑指 Offer 53 - I. !!在排序数组中查找数字 I (考查二分法)
  • RANSAC算法在Python中的实现与应用探索:线性拟合与平面拟合示例
  • PHP接口自动化测试框架实现
  • VLAN原理+配置
  • MongoDB文档-基础使用-在客户端(dos窗口)/可视化工具中使用MongoDB基础语句
  • “RISC-V成长日记” blog发布,第一个运行在RISC-V服务器上的blog?
  • gitlab配置webhook
  • 编译安装Linux内核实践与踩坑