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  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应用程序。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/220040.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-09 11:03
下一篇 2024-12-09 11:03

相关推荐

  • Unity3D 创建没有 Terrain Tile 的场景

    这篇文章将会介绍如何在 Unity3D 中创建一个没有 Terrain Tile 的场景,同时也让读者了解如何通过编程实现这个功能。 一、基础概念 在 Unity3D 中,Terr…

    编程 2025-04-29
  • Python强制转型的实现方法和应用场景

    本文主要介绍Python强制转型的实现方法和应用场景。Python强制转型,也叫类型转换,是指将一种数据类型转换为另一种数据类型。在Python中,强制转型主要通过类型构造函数、转…

    编程 2025-04-29
  • Django框架:从简介到项目实战

    本文将从Django的介绍,以及如何搭建Django环境开始,逐步深入到Django模型、视图、模板、表单,最后通过一个小型项目实战,进行综合性的应用,让读者获得更深入的学习。 一…

    编程 2025-04-28
  • 键值存储(kvs):从基础概念到实战应用

    本文将从基础概念入手,介绍键值存储(kvs)的概念、原理以及实战应用,并给出代码实现。通过阅读本文,您将了解键值存储的优缺点,如何选择最适合的键值存储方案,以及如何使用键值存储解决…

    编程 2025-04-28
  • Android ViewPager和ScrollView滑动冲突问题

    Android开发中,ViewPager和ScrollView是两个常用的控件。但是当它们同时使用时,可能会发生滑动冲突的问题。本文将从多个方面介绍解决Android ViewPa…

    编程 2025-04-28
  • Python编程实战:用Python做网页与HTML

    Python语言是一种被广泛应用的高级编程语言,也是一种非常适合于开发网页和处理HTML的语言。在本文中,我们将从多个方面介绍如何用Python来编写网页和处理HTML。 一、Py…

    编程 2025-04-28
  • Android如何点击其他区域收起软键盘

    在Android应用中,当输入框获取焦点弹出软键盘后,我们希望能够点击其他区域使软键盘消失,以提升用户体验。本篇文章将说明如何实现这一功能。 一、获取焦点并显示软键盘 在Andro…

    编程 2025-04-28
  • Webrtc音视频开发React+Flutter+Go实战PDF

    本文将从多个方面介绍如何使用React、Flutter和Go来进行Webrtc音视频开发,并提供相应的代码示例。 一、Webrtc音视频开发介绍 Webrtc是Google开发的一…

    编程 2025-04-27
  • Access执行按钮的实现方法及应用场景

    本文将详细介绍Access执行按钮的实现方法及其在实际应用场景中的使用方法。 一、创建Access执行按钮的方法 在Access中,创建执行按钮的方法非常简单。只需要按照以下步骤进…

    编程 2025-04-27
  • Python自动化交易实战教程

    本教程将详细介绍使用Python进行自动化交易的方法,包括如何选择优秀的交易策略、如何获取市场数据、如何实现策略并进行回测,以及如何使用Python自动化下单,并进行实盘交易,让您…

    编程 2025-04-27

发表回复

登录后才能评论