您的位置:

Android NFC应用场景及开发实战

一、NFC介绍

NFC(Near Field Communication)指的是近场通信技术,它是一种简短距离的、无线的通信技术,最初用于收款机和交通设施,现在被应用于各种场景,如移动支付、智能标签、门禁等。NFC技术是基于RFID技术,但有一个关键的不同之处是距离范围,RFID可以在更长的距离内进行通信,而NFC只能在极短的距离内进行通信,通常距离只有几厘米。

二、NFC应用场景

NFC技术可以用于各种场景,包括:

1. 移动支付

利用NFC技术,手机可以被用作移动支付设备,用户只需将手机放在读卡器上即可完成支付。此外,用户可以使用手机,在商场等地方轻松购物。

2. 智能标签

在任何物品上粘贴一个NFC标签,这个标签上可以包含任何信息,如联系方式、地理位置、甚至是网站链接。用户可以使用NFC手机扫描这些标签来获取这些信息。

3. 门禁

NFC技术可以用于门禁系统,使员工或其他人员通过一些门禁系统从而进入不同的区域。

三、NFC的开发实践

在Android上,开发人员可以使用NFC技术,以更简单,更快速的方式实现多种应用场景。

1. 发送和接收NFC数据

要使用Android中的NFC功能,您需要从NeftService创建一个PendingIntent,并使用它处理所有NDEF_DISCOVERED意图。然后,您需要创建一个IntentFilter,该IntentFilter将在您的应用中的Manifext中注册,以便您可以处理在您的应用内发现的所有NFC标记。

private NfcAdapter mNfcAdapter;
private PendingIntent mPendingIntent;
private IntentFilter[] mIntentFilters;
private String[][] mTechLists;

mNfcAdapter = NfcAdapter.getDefaultAdapter(this);
mPendingIntent = PendingIntent.getActivity(this, 0, new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0);

IntentFilter ndefIntent = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED);
try {
  ndefIntent.addDataType("text/plain");    
} catch (IntentFilter.MalformedMimeTypeException e) {
  e.printStackTrace();
}
mIntentFilters = new IntentFilter[] {ndefIntent,};

mTechLists = new String[][] { new String[] { NfcF.class.getName() } };

当用户扫描一个标签时,如果在您的应用内,它将触发您的PendingIntent,您可以在您的activity中捕获由标签触发的intent,以及包含标签数据的一个Parcelable对象:

public void onNewIntent(Intent intent) {
    if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(intent.getAction())) {
        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];
            }
            if (msgs.length > 0) {
                String text = new String(msgs[0].getRecords()[0].getPayload());
                //将数据显示在UI界面上
            }
        }
    }
}

2. 创建NFC标签

要创建一个NFC标签,您可以使用createUri或createMimeRecord函数创建一个NDEF记录,然后将其添加到NDEFmessage中。消息将被写入一个可写的NFC标签:

NdefRecord record = NdefRecord.createUri("http://www.google.com");
NdefMessage message = new NdefMessage(new NdefRecord[] {record});
Ndef ndef = Ndef.get(tag);
ndef.connect();
ndef.writeNdefMessage(message);
ndef.close();

3. 读取NFC标签的id

要读取NFC标签的ID,您可以调用由标签对象提供的getId方法。标签ID是一个字节数组,可以根据需要进行转换和使用。

String tagId = ByteArrayToHexString(tag.getId());

结论

总的来说,NFC技术是一项非常方便的技术,可以在多种应用场景中使用。开发人员可以轻松使用Android的NFC API构建各种NFC应用程序。

Android NFC应用场景及开发实战

2023-05-14
利用Python实现Android NFC连接与数据传输

2023-05-14
NFC Reader的开发与应用

2023-05-21
Android 权限列表及使用场景

Android 提供了丰富的权限控制机制,应用可以通过系统 API 来获取用户授权后使用各种系统功能,如访问网络、读取手机信息、使用摄像头等等。在开发 Android 应用时,了解各种权限的含义和使用

2023-12-08
Android Activity生命周期及应用场景

2023-05-20
Android开发中常用的设计模式及应用场景

在Android开发中,设计模式是非常重要的一个方面。它们为开发人员提供了一种可复用、可维护和可扩展的解决方案,许多常见的问题已经有了设计模式的解决方案。在本篇文章中,将会介绍在Android开发中常

2023-12-08
Android获取EditText内容及其应用场景

一、获取EditText的内容 在Android开发中使用EditText控件的情形十分普遍,根据需求不同,我们需要获取EditText中输入的内容。下面介绍常见的两种方法。 方法一:通过getTex

2023-12-08
Android Beam:如何实现快速且便捷的设备间数据传输

2023-05-14
带java开发nfc串口读写器(java nfc)

2022-11-14
打造高效稳定的Android系统:Framework开发实战

Android作为目前移动设备上占有率最高的操作系统之一,其Framework开发的重要性不言而喻。好的Framework设计可以大幅提升应用性能、稳定性并方便开发者进行功能扩展,反之则可能带来诸多问

2023-12-08
使用Android Studio进行应用程序开发

2023-05-14
Android Canvas 开发详解

2023-05-18
Android日历开发全方位详解

2023-05-19
创造极致游戏体验的Android游戏开发

Android游戏开发是一门复杂的艺术和技术,它需要开发者拥有广泛的知识、长期的经验和技巧。由于Android系统和硬件环境的多样性和复杂性,因此,Android游戏开发还需要考虑很多挑战和限制。本文

2023-12-08
Android应用程序开发要点

2023-05-14
Android IPC通信方式以及使用场景

2023-05-14
Android技术助您轻松开发强大APP

2023-05-14
使用Start模拟器开发Android应用

2023-05-23
Android R:新一代操作系统的全面升级之路

2023-05-14
Android应用中使用转场动画的方法和实例

2023-05-14