NFC标签上写入联系人实战演示

需积分: 10 1 下载量 30 浏览量 更新于2024-11-17 收藏 2.46MB ZIP 举报
资源摘要信息:"ContactWriterNFC: NFC标签上写入联系人演示" NFC(Near Field Communication,近场通信)技术允许设备在短距离内进行数据交换。这项技术广泛应用于非接触式支付、门禁卡、公交卡、智能海报等多种场景。NFC标签是一种可以存储信息的被动设备,当它靠近NFC读写器或NFC功能手机时,可以读取标签内的信息或者向标签写入新的信息。 在本次的演示项目“ContactWriterNFC”中,主要演示了如何通过Java语言在Android平台上实现NFC标签的写入操作。Android系统的NFC API提供了强大的支持,使得开发者可以方便地进行NFC相关的应用开发。 在实现过程中,首先需要确保设备支持NFC功能并且已经在Android系统设置中启用了NFC。然后,开发者的应用程序需要声明NFC权限,在AndroidManifest.xml文件中添加如下权限声明: ```xml <uses-permission android:name="android.permission.NFC" /> ``` 除了基本的权限声明外,还需要确保应用具有处理NFC意图(Intent)的能力。当NFC标签靠近设备时,系统会发送一个ACTION_NDEF_DISCOVERED Intent,应用程序需要正确处理这个Intent,以便执行相应的NFC标签写入操作。 以下是一个简单的代码示例,展示如何检测NFC标签并写入联系人信息: ```java NfcAdapter nfcAdapter = NfcAdapter.getDefaultAdapter(this); if (nfcAdapter == null) { // 设备不支持NFC功能 Toast.makeText(this, "设备不支持NFC", Toast.LENGTH_LONG).show(); finish(); return; } if (!nfcAdapter.isEnabled()) { // NFC功能未开启,提示用户开启NFC promptEnableNfc(); } PendingIntent pendingIntent = PendingIntent.getActivity( this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0); // 设置前台调度系统,用于优化NFC的处理过程 NdefMessage ndefMessage = buildContactNdefMessage(); NdefFormatable ndefFormatable = NdefFormatable.get(tag); if (ndefFormatable != null) { try { ndefFormatable.connect(); ndefFormatable.format(ndefMessage); Toast.makeText(this, "NFC标签写入成功!", Toast.LENGTH_LONG).show(); return; } catch (IOException e) { Toast.makeText(this, "无法格式化NFC标签", Toast.LENGTH_LONG).show(); } } else { Ndef ndef = Ndef.get(tag); if (ndef != null) { // NFC标签已经格式化,可以直接写入 try { ndef.connect(); if (ndef.isWritable()) { ndef.writeNdefMessage(ndefMessage); Toast.makeText(this, "NFC标签写入成功!", Toast.LENGTH_LONG).show(); } else { Toast.makeText(this, "NFC标签不可写入", Toast.LENGTH_LONG).show(); } ndef.close(); } catch (IOException e) { Toast.makeText(this, "无法写入NFC标签", Toast.LENGTH_LONG).show(); } } else { Toast.makeText(this, "不支持的NFC标签", Toast.LENGTH_LONG).show(); } } ``` 在这段代码中,首先通过`NfcAdapter.getDefaultAdapter(this)`获取NFC适配器的实例,然后检查设备是否支持NFC功能并已启用。接下来,使用`PendingIntent`来接收NFC标签的检测事件,并构建一个`NdefMessage`对象用于存放要写入的数据。在这个例子中,我们将构建一个包含联系人信息的NDEF(NFC Data Exchange Format)消息。`NdefFormatable`接口用于格式化未被格式化的NFC标签,而`Ndef`接口则用于直接向已经格式化的NFC标签写入NDEF消息。 需要注意的是,上述代码中的`buildContactNdefMessage()`方法是一个自定义方法,用于创建包含联系人信息的NDEF消息。联系人信息通常以vCard格式存储,NDEF消息可以通过相应的MIME类型标识包含的数据格式。 在Android平台上,处理NFC标签的写入操作还需要考虑用户体验。为了防止数据冲突,通常需要在写入数据之前检查NFC标签是否已经被写入过数据。此外,对于需要写入大量数据的情况,还需要考虑NFC标签的容量限制,并在写入过程中提供适当的用户反馈。 最后,该项目“ContactWriterNFC”展示了通过Java和Android平台的NFC API实现NFC标签写入联系人信息的整个过程。开发者可以利用这一演示项目快速了解NFC技术在Android平台上的应用,并且在此基础上开发更多实用的NFC应用。