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

相关推荐

发表回复

登录后才能评论