本文原创发布在华为开发者社区,更多鸿蒙场景化示例请见华为开发者联盟官网“行业实践与常见问题”专题页。
介绍
本项目使用系统提供的NFC能力,简单实现了应用前台读卡效果,参考NFC标签读写开发指南。
效果预览
使用说明
安装到设备上后,开启NFC,打开应用,将NFC标签靠近设备即可。
实现思路
在入口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'); }
在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') }
在MifareTest.ets中,对MIFARE_CLASSIC类型标签进行处理。
async doMifareClassicTagTest(){...}//MIFARE Classic技术 async doMifareUlTagTest(){...}//MIFARE_ULTRALIGHT
在NdefTest.ets中,对NDEF类型标签进行处理。
async doNdefTagTest(){...}//NDEF技术
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。