树叶云鸿蒙OS教程:鸿蒙OS Tag读写

场景介绍

应用或其他模块可以通过接口访问多种协议或技术的Tag卡片。

接口说明

类名接口名功能描述
TagInfogetTagId()获取当前 Tag 的 ID。
getTagSupportedProfiles()获取当前 Tag 支持的协议或技术。
isProfileSupported(int profile)判断 Tag 是否支持指定的协议或技术。
TagManagergetTagInfo()获取标签信息。
connectTag()建立与 Tag 设备的连接。
reset()重置与 Tag 设备的连接,同时会把写 Tag 的超时时间恢复为默认值。
isTagConnected()判断与 Tag 设备是否保持连接。
setSendDataTimeout(int timeout)设置发送数据到 Tag 的超时时间,单位是 ms。
getSendDataTimeout()查询发送数据到 Tag 设备的超时时间,单位是 ms。
sendData(byte[] data)写数据到 Tag 设备中。
checkConnected()检查 Tag 设备是否已连接。
getMaxSendLength()获取发送数据的最大长度。在发送数据到 Tag 设备时,用于查询最大可发送数据的长度。
IsoDepTagIsoDepTag(TagInfo tagInfo)根据分发 Tag信息获取 IsoDep 类型 Tag 标签对象。
getHiLayerResponse()获取基于 NfcB 技术的 IsoDep 类型 Tag 的高层响应内容。
getHistoricalBytes()获取基于 NfcA 技术的 IsoDep 类型 Tag 的历史字节内容。
NfcATaggetInstance(TagInfo tagInfo)根据分发 Tag 信息获取 NfcA 标签对象。
getSak()获取 NfcA 类型 Tag 的 SAK。
getAtqa()获取 NfcA 类型 Tag 的 ATQA。
NfcBTaggetInstance(TagInfo tagInfo)根据分发 Tag 信息获取 NfcB 标签对象。
getRespAppData()获取 NfcB 标签对象的应用数据。
getRespProtocol()获取 NfcB 标签对象的协议信息。
NdefTaggetNdefMessage()获取当前连接的 NDEF Tag 设备的 NDEF 信息。
getNdefMaxSize()获取最大的 NDEF 信息尺寸。
getTagType()获取 NDEF Tag 设备类型。
readNdefMessage()从当前连接的 NDEF Tag 设备读取 NDEF 信息。
writeNdefMessage(NdefMessage msg)写 NDEF 信息到当前连接的 NDEF Tag 设备。
canSetReadOnly()检查 NDEF Tag 设备是否可被设置为只读。
setReadOnly()设置 NDEF Tag 设备为只读。
isNdefWritable()判断 NDEF Tag 设备是否可写。
MifareClassicTaggetInstance(TagInfo tagInfo)根据分发 Tag 信息获取 MifareClassic 标签对象。
getMifareType()获取 MifareClassic Tag 设备的 Mifare 类型。
getTagSize()获取 MifareClassic Tag 设备的尺寸。
getSectorsNum()获取 MifareClassic Tag 设备内所有扇区数。
getBlocksNum()获取 MifareClassic Tag 设备内所有块数。
getBlocksNumForSector(int sectorId)获取 MifareClassic Tag 设备内一个扇区的块数。
getSectorId(int blockId)用块ID获取 MifareClassic Tag 设备内扇区号。
getFirstBlockId(int sectorId)获取 MifareClassic Tag 设备内特定扇区的第一个块 ID。
authenSectorUseKey(int sectorId, byte[] key, byte keyType)用密钥鉴权 MifareClassic Tag 设备内特定扇区。
readBlock(int blockId)读取 MifareClassic Tag 设备内特定块内容。
writeBlock(int blockId, byte[] data)在 MifareClassic Tag 设备内特定块写内容。
incBlock(int blockId, int value)在 MifareClassic Tag 设备内特定块的内容加上一个值。
decBlock(int blockId, int value)从 MifareClassic Tag 设备内特定块的内容减去一个值。
restoreBlock(int blockId)把 MifareClassic Tag 设备内特定块的内容移动到一个内部的缓存区。
MifareUltralightTaggetInstance(TagInfo tagInfo)根据分发 Tag 信息获取 MifareUltralight 标签对象。
getMifareType()获取 MifareUltralight Tag 设备类型。
readFourPages(int pageOffset)从 MifareUltralight Tag 设备的特定页数开始读四页。
writeOnePage(int pageOffset, byte[] data)在 MifareUltralight Tag 设备的特定页数写数据。

读取卡片类型

  1. 从 Intent 中获取 TagInfo,初始化 TagInfo 实例。
  1. TagInfo 实例调用 getTagSupportedProfiles()接口查询当前 Tag 支持的技术或协议类型。
  1. 调用 isProfileSupported(int profile)接口查询是否支持 NfcA、IsoDep、MifareClassic 等类型。若支持,可使用 TagInfo 实例构造 NfcATag、IsoDep、MifareClassic 等实例。
  1. 根据不同的 Tag 技术类型的实例,调用不同的API完成 Tag 的访问。
   // 从Intent中获取TagInfo,初始化TagInfo实例
   TagInfo tagInfo = getIntent().getParcelableExtra(NfcController.EXTRA_TAG_INFO);

    
   // 查询Tag设备支持的技术或协议,返回值为支持的技术或协议列表
   int[] profiles = tagInfo.getTagSupportedProfiles();

    
   // 查询是否支持NfcA,若支持,构造一个NfcATag
   boolean isSupportedNfcA = tagInfo.isProfileSupported(TagManager.NFC_A);
   if (isSupportedNfcA) {
       NfcATag tagNfcA = NfcATag.getInstance(tagInfo);
   }

    
   // 查询是否支持NfcB,若支持,构造一个NfcBTag
   boolean isSupportedNfcB = tagInfo.isProfileSupported(TagManager.NFC_B);
   if (isSupportedNfcB) {
       NfcBTag tagNfcB = NfcBTag.getInstance(tagInfo);
   }

    
   // 查询是否支持IsoDep,若支持,构造一个IsoDepTag
   boolean isSupportedIsoDep = tagInfo.isProfileSupported(TagManager.ISO_DEP);
   if (isSupportedIsoDep) {
       IsoDepTag tagIsoDep = new IsoDepTag(tagInfo);
   }

    
   // 查询是否支持NDEF,若支持,构造一个NdefTag
   boolean isSupportedNdefDep = tagInfo.isProfileSupported(TagManager.NDEF);
   if (isSupportedNdefDep) {
       NdefTag tagNdef = new NdefTag(tagInfo);
   }

    
   // 查询是否支持MifareClassic,若支持,构造一个MifareClassicTag
   boolean isSupportedMifareClassic = tagInfo.isProfileSupported(TagManager.MIFARE_CLASSIC);
   if (isSupportedMifareClassic) {
       MifareClassicTag mifareClassicTag = MifareClassicTag.getInstance(tagInfo);
   }

    
   // 查询是否支持MifareUltralight,若支持,构造一个MifareUltralightTag
   boolean isSupportedMifareUltralight = tagInfo.isProfileSupported(TagManager.MIFARE_ULTRALIGHT);
   if (isSupportedMifareUltralight) {
       MifareUltralightTag mifareUltralightTag = MifareUltralightTag.getInstance(tagInfo);
   }

访问 NfcA 卡片

  1. 调用 connectTag() 接口连接 Tag 设备。
  1. 调用 isTagConnected()接口查询 Tag 设备连接状态。
  1. 调用 sendData(byte[] data)接口发送数据到 Tag。
   // 连接 Tag 设备,返回值为是否连接成功
   boolean connSuccess = tagNfcA.connectTag();

    
   // 查询Tag连接状态
   boolean isConnected= tagNfcA.isTagConnected();

    
   // 发送数据到Tag,返回值为Tag的响应数据
   byte[] data = {0x13, 0x59, 0x22};
   byte[] response = tagNfcA.sendData(data);

访问 NfcB 卡片

  1. 调用 connectTag() 接口连接 Tag 设备。
  1. 调用 isTagConnected() 接口查询 Tag 设备连接状态。
  1. 调用 sendData(byte[] data) 接口发送数据到 Tag。
   // 连接Tag设备,返回值为是否连接成功
   boolean connSuccess = tagNfcB.connectTag();

    
   // 查询Tag连接状态
   boolean isConnected= tagNfcB.isTagConnected();

    
   // 发送数据到Tag,返回值为Tag的响应数据
   byte[] data = {0x13, 0x59, 0x22};
   byte[] response = tagNfcB.sendData(data);

访问 IsoDep 卡片

  1. 调用getTagInfo()接口获取TagInfo对象。
  1. 调用connectTag()接口连接Tag设备。
  1. 调用isTagConnected()接口查询Tag设备连接状态。
  1. 调用sendData(byte[] data)接口发送数据到Tag。
   // 连接Tag设备,返回值为是否连接成功
   boolean connSuccess = tagIsoDep.connectTag();

    
   // 查询Tag连接状态
   boolean isConnected= tagIsoDep.isTagConnected();

    
   // 发送数据到Tag,返回值为Tag的响应数据
   byte[] data = {0x13, 0x59, 0x22};
   byte[] response = tagIsoDep.sendData(data);

访问Ndef卡片

  1. 调用 getTagInfo()接口获取 TagInfo 对象。
  1. 调用 connectTag()接口连接 Tag 设备。
  1. 调用 isTagConnected()接口查询 Tag 设备连接状态。
  1. 调用 sendData(byte[] data)接口发送数据到 Tag。
   // 连接Tag设备,返回值为是否连接成功
   boolean connSuccess = tagNdef.connectTag();

    
   // 查询Tag连接状态
   boolean isConnected = tagNdef.isTagConnected();

    
   // 发送数据到Tag,返回值为Tag的响应数据
   byte[] data = {0x13, 0x59, 0x22};
   byte[] response = tagNdef.sendData(data);

访问 MifareClassic 卡片

  1. 调用 getTagInfo()接口获取 TagInfo 对象。
  1. 调用 connectTag()接口连接 Tag 设备。
  1. 调用 isTagConnected()接口查询 Tag 设备连接状态。
  1. 调用 sendData(byte[] data)接口发送数据到 Tag。
   // 连接Tag设备,返回值为是否连接成功
   boolean connSuccess = mifareClassicTag.connectTag();

    
   // 查询Tag连接状态
   boolean isConnected = mifareClassicTag.isTagConnected();

    
   // 发送数据到Tag,返回值为Tag的响应数据
   byte[] data = {0x13, 0x59, 0x22};
   byte[] response = mifareClassicTag.sendData(data);

访问 MifareUltralight 卡片

  1. 调用 getTagInfo() 接口获取 TagInfo 对象。
  1. 调用 connectTag() 接口连接 Tag 设备。
  1. 调用 isTagConnected() 接口查询 Tag 设备连接状态。
  1. 调用 sendData(byte[] data) 接口发送数据到 Tag。
   // 连接Tag设备,返回值为是否连接成功
   boolean connSuccess = mifareUltralightTag.connectTag();

    
   // 查询Tag连接状态
   boolean isConnected = mifareUltralightTag.isTagConnected();

    
   // 发送数据到Tag,返回值为Tag的响应数据
   byte[] data = {0x13, 0x59, 0x22};
   byte[] response = mifareUltralightTag.sendData(data);

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/160929.html<

(0)
运维的头像运维
上一篇2025-03-17 23:58
下一篇 2025-03-18 00:00

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注