本文原创发布在华为开发者社区,更多鸿蒙场景化示例请见华为开发者联盟官网“行业实践与常见问题”专题页。

介绍

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

NFC读取源码链接

效果预览

请添加链接描述

使用说明

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

实现思路

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

    if (technology[i] === tag.NFC_A && !isNfcATag) {
      isNfcATag = true;
      hilog.debug(0x0000, 'TestTag', '[ReadTagTest-Demo] find NFC_A and start read');
      await new BasicTagTest(tagInfo).doNfcATagTest();
      hilog.info(0x0000, 'TestTag', '[ReadTagTest-Demo] find NFC_A and end read');
    }
  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\t' + 'dsfId: ' + dsfId + '\n');
      let maxSendLength: number = nfcV.getMaxSendLength();
      hilog.debug(0x0000, 'TestTag',"[ReadTagTest-Demo] doNfcVTagTest nfcV maxSendLength= " + maxSendLength);
      GlobalContext.getContext().setTextShow('\t\tmaxSendLength = ' + maxSendLength + ' bytes\n')
    }
  3. 在MifareTest.ets中,对MIFARE_CLASSIC类型标签进行处理。

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

    async doNdefTagTest(){...}//NDEF技术

鸿蒙场景化代码
1 声望0 粉丝