HarmonyOS鸿蒙Next中NFC读取示例代码

HarmonyOS鸿蒙Next中NFC读取示例代码

介绍

本项目使用系统提供的NFC能力,简单实现了应用前台读卡效果,参考NFC标签读写开发指南

NFC读取源码链接

效果预览

图片名称

使用说明

安装到设备上后,开启NFC,打开应用,将NFC标签靠近设备即可。

实现思路

  1. 在入口Ability中注册前台读卡能力。

  2. 在BasicTagTest.ets中,对NFC_A、NFC_B、NFC_F、NFC_V、ISO_DEP类型标签进行处理(以NFCV为例)。

    async doNfcVTagTest() {
      let nfcV: tag.NfcVTag = tag.getNfcV(this.tagInfo);
      if (nfcV === null || nfcV === undefined) {
        hilog.error(0x0000, 'TestTag', "[ReadTagTest-Demo] doNfcVTagTest nfcV is null");
        return;
      }
      GlobalContext.getContext().setTextShow('\n\n### NfC_V Tag detailed protocol information:\n\n')
      let responseFlags: number = nfcV.getResponseFlags();
      hilog.debug(0x0000, 'TestTag', "[ReadTagTest-Demo] doNfcVTagTest nfcV responseFlags= " + responseFlags);
      GlobalContext.getContext().setTextShow('\t\t' + 'responseFlag: ' + responseFlags + '\n')
      let dsfId: number = nfcV.getDsfId();
      hilog.debug(0x0000, 'TestTag', "[ReadTagTest-Demo] doNfcVTagTest nfcV dsfId= " + dsfId);
      GlobalContext.getContext().setTextShow('\t\tdsfId: ' + dsfId + '\n');
      let maxSendLength: number = nfcV.getMaxSendLength();
      hilog.debug(0x0000, 'TestTag', "[ReadTagTest-Demo] doNfcVTagTest nfcV maxSendLength= " + maxSendLength);
      GlobalContext.getContext().setTextShow('\tmaxSendLength = ' + maxSendLength + ' bytes\n')
    }
  3. 在MifareTest.ets中,对MIFARE_CLASSIC类型标签进行处理。

    async doMifareClassicTagTest(){...}//MIFARE Classic技术
    async doMifareUlTagTest(){...}//MIFARE_ULTRALIGHT
  4. 在NdefTest.ets中,对NDEF类型标签进行处理。

    async doNdefTagTest(){...}//NDEF技术
6 回复

更多关于HarmonyOS鸿蒙Next中NFC读取示例代码的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


开发伙伴,你好。

我需要开发一个NFC读取的页面,按照官网的开发指导(https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/nfc-tag-access-guide-V5)按步骤开发,比如,已添加了权限:ohos.permission.NFC_TAG 等。在此过程中,遇到了问题。如下:

开发NFC读取NFC卡片遇到无法读取NFC卡片信息的问题,顶部弹框 “发现NFC标签 部分应用需开启内部NFC开关”,如图:

点击了弹框后,底部又出现“选择打开方式”,如图:

实际上,我已经开启 NFC 开关,如图:

这个是为什么呢?请帮忙指导一下。谢谢。

开发者您好,已收到您的问题反馈,当前已安排技术人员分析处理,请您耐心等待。

开发者您好,经测试,样例demo能正常前台读取NFC标签,请严格按照指南步骤设置。尤其是(4. 调用tag模块中前台优先的接口,使能前台应用程序优先处理所发现的NFC标签功能。)

https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/nfc-tag-access-guide-V5#前台读取标签,

我解决了问题了。谢谢指导。

在HarmonyOS(鸿蒙)Next中,使用NFC读取数据的示例代码如下:

import ohos.nfc.NfcController;
import ohos.nfc.NfcTag;
import ohos.nfc.NfcTagCallback;

public class NfcExample {
    private NfcController nfcController;

    public void initNfc() {
        nfcController = NfcController.getInstance();
        nfcController.registerTagCallback(new NfcTagCallback() {
            @Override
            public void onTagDiscovered(NfcTag tag) {
                // 处理读取到的NFC标签数据
                String tagId = tag.getId();
                // 其他处理逻辑
            }
        });
    }

    public void startNfc() {
        if (nfcController != null) {
            nfcController.start();
        }
    }

    public void stopNfc() {
        if (nfcController != null) {
            nfcController.stop();
        }
    }
}

此代码展示了如何初始化NFC控制器、注册标签回调以及启动和停止NFC读取。在onTagDiscovered方法中处理读取到的NFC标签数据。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!