利用NFC增强用户体验:HarmonyOS Next的NFC应用指南

HarmonyOS开发:【NFC配置流程】 碰一碰是HarmonyOS具备的多终端业务协同技术。其依托NFC短距通信协议,通过碰一碰的交互方式,将手机和全场景设备连接起来。然后通过手机端的原子化服务能力,快速完成配网、远程控制的能力,解决了应用与设备之间接续慢、配网复杂、传输难的问题,为用户带来无缝切换的流畅体验。设备信息内容包括:华为IoTDA平台的Product ID、NodeID、配网方式以及对应的参数信息,如下列表格;所有信息需要写入到调测助手的自定义数据。 阅读详情
AI摘要

本文深入探讨华为HarmonyOS Next系统的NFC模块,涵盖标签读写与卡模拟功能。NFC标签读写可用于公交卡充值等场景,有前台和后台读取方式;NFC卡模拟(HCE)能替代实体卡,用于移动支付和门禁系统。介绍了相关技术类型、应用场景及实现示例,助力开发者挖掘NFC潜力。

本文旨在深入探讨华为鸿蒙HarmonyOS Next系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。

在智能设备的交互领域,NFC(Near Field Communication,近场通信)技术以其便捷、快速的特点,为用户带来了诸多便利。HarmonyOS Next中的NFC模块更是将这种便利发挥到了极致,涵盖了从标签读写到卡模拟等丰富功能,为开发者提供了广阔的创新空间。今天,我们就深入探究HarmonyOS Next中NFC模块的奇妙世界,看看如何利用它为用户打造更加智能、高效的体验。

一、NFC模块功能概述

HarmonyOS Next的NFC模块主要提供了以下几个方面的功能:

1. NFC标签读写

设备可以通过NFC通信技术与NFC标签进行交互,读取标签中存储的数据,或者向标签写入新的数据。这一功能在很多场景中都有广泛应用,比如在智能公交卡充值、图书馆书籍借阅管理、商品信息查询等方面,用户只需将设备靠近NFC标签,就能轻松完成相应操作。

2. NFC卡模拟(HCE)

应用程序可以模拟NFC卡片,与NFC读卡器进行通信,实现NFC刷卡业务。这使得电子设备能够替代传统的实体卡片,如银行卡、门禁卡等,为用户提供更加便捷的支付和门禁通行方式。例如,用户在乘坐地铁时,无需拿出实体交通卡,只需使用手机模拟的交通卡靠近闸机读卡器,即可完成刷卡进站。

二、NFC标签读写详解

1. 技术类型与应用场景

NFC标签可能支持多种通信技术,不同技术类型适用于不同的应用场景。

NFC技术类型应用场景
NfcA(ISO 14443 - 3A)广泛应用于门禁卡、公交卡等场景,如常见的城市公交一卡通系统。
NfcB(ISO 14443 - 3B)在一些特定的门禁系统或会员卡系统中使用。
NfcF(JIS 6319 - 4)主要在日本等地区用于电子钱包、交通卡等应用。
NfcV(ISO 15693)常用于物流管理、图书管理等领域,实现物品的快速识别和信息读取。
IsoDep支持与符合ISO 7816标准的智能卡进行通信,可用于电子护照、银行卡等安全要求较高的应用。
NDEF用于存储和交换格式化的数据,如文本、URL等,在信息共享和传输方面有广泛应用,例如分享联系人信息、Wi-Fi密码等。
MifareClassic常用于门禁控制、会员卡等场景,具有较高的安全性和稳定性。
MifareUltralight适用于简单的数据存储和识别应用,如活动门票、优惠券等。
2. 前台标签读取实现

前台标签读取是指用户在触碰NFC标签之前,先打开特定的应用程序,明确使用该应用与NFC标签进行读写操作。以下是实现前台标签读取的关键步骤和API调用示例:

首先,在module.json5文件中声明NFC标签读取的权限以及相关action:

{
  "abilities": [
    {
      "name": "EntryAbility",
      "srcEntry": "./ets/entryability/EntryAbility.ts",
      "description": "$string:EntryAbility_desc",
      "icon": "$media:icon",
      "label": "$string:EntryAbility_label",
      "startWindowIcon": "$media:icon",
      "startWindowBackground": "$color:start_window_background",
      "exported": true,
      "skills": [
        {
          "entities": [
            "entity.system.home"
          ],
          "actions": [
            "action.system.home",
            "ohos.nfc.tag.action.TAG_FOUND"
          ]
        }
      ]
    }
  ],
  "requestPermissions": [
    {
      "name": "ohos.permission.NFC_TAG",
      "reason": "$string:app_name"
    }
  ]
}

然后,在应用代码中进行以下操作:

import { tag } from '@kit.ConnectivityKit';
import { hilog } from '@kit.PerformanceAnalysisKit';

// 判断设备是否支持NFC能力
if (!canIUse("SystemCapability.Communication.NFC.Core")) {
    hilog.error(0x0000, 'testTag', 'nfc unavailable.');
    return;
}

// 调⽤tag模块中前台优先的接⼝,使能前台应⽤程序优先处理所发现的NFC标签功能
tag.enableForegroundDispatch((result) => {
    if (result === 0) {
        hilog.info(0x0000, 'testTag', 'enableForegroundDispatch success');
    } else {
        hilog.error(0x0000, 'testTag', 'enableForegroundDispatch failed with error code:'+ result);
    }
});

// 获取特定技术类型的NFC标签对象(以NfcA为例)
tag.getNfcA(tagInfo).then((nfcATag) => {
    // 执行读写接口完成标签数据的读取或写入数据到标签
    // 例如,读取标签数据
    nfcATag.read().then((data) => {
        hilog.info(0x0000, 'testTag', 'Read data from NFC tag:'+ JSON.stringify(data));
    }).catch((err) => {
        hilog.error(0x0000, 'testTag', 'Error reading NFC tag:'+ JSON.stringify(err));
    });
}).catch((err) => {
    hilog.error(0x0000, 'testTag', 'Error getting NfcA tag object:'+ JSON.stringify(err));
});

// 退出应⽤程序NFC标签页面时,调⽤tag模块退出前台优先功能
tag.disableForegroundDispatch((result) => {
    if (result === 0) {
        hilog.info(0x0000, 'testTag', 'disableForegroundDispatch success');
    } else {
        hilog.error(0x0000, 'testTag', 'disableForegroundDispatch failed with error code:'+ result);
    }
});
3. 后台标签识别实现

后台标签识别是指设备在未打开特定NFC标签应用程序的情况下,触碰发现NFC标签后,根据标签的技术类型,分发给能够处理的应用程序。如果匹配到多个应用程序,则弹出应用选择器让用户手动选择。

在module.json5文件中声明NFC标签读取的权限、相关action以及应用能够处理的AID(应用程序标识符):

{
  "abilities": [
    {
      "name": "EntryAbility",
      "srcEntry": "./ets/entryability/EntryAbility.ts",
      "description": "$string:EntryAbility_desc",
      "icon": "$media:icon",
      "label": "$string:EntryAbility_label",
      "startWindowIcon": "$media:icon",
      "startWindowBackground": "$color:start_window_background",
      "exported": true,
      "skills": [
        {
          "entities": [
            "entity.system.home"
          ],
          "actions": [
            "action.system.home",
            "ohos.nfc.tag.action.TAG_FOUND"
          ]
        ]
      },
      "metadata": [
        {
          "name": "payment-aid",
          "value": "A0000000031010"
        },
        {
          "name": "other-aid",
          "value": "A0000000031011"
        }
      ]
    }
  ],
  "requestPermissions": [
    {
      "name": "ohos.permission.NFC_TAG",
      "reason": "$string:app_name"
    }
  ]
}

在应用代码中,主要是订阅标签发现事件,当检测到符合条件的标签时,进行相应处理:

import { tag } from '@kit.ConnectivityKit';
import { hilog } from '@kit.PerformanceAnalysisKit';

// 判断设备是否支持NFC能力
if (!canIUse("SystemCapability.Communication.NFC.Core")) {
    hilog.error(0x0000, 'testTag', 'nfc unavailable.');
    return;
}

// 订阅标签发现事件
tag.on('tagFound', (tagInfo) => {
    hilog.info(0x0000, 'testTag', 'NFC tag found:'+ JSON.stringify(tagInfo));
    // 根据标签信息进行处理,例如获取标签类型并根据业务逻辑进行相应操作
    const techList = tagInfo.techList;
    if (techList.includes('NfcA')) {
        // 处理NfcA类型标签
        handleNfcATag(tagInfo);
    } else if (techList.includes('NfcB')) {
        // 处理NfcB类型标签
        handleNfcBTag(tagInfo);
    }
});

三、NFC卡模拟(HCE)实现

1. HCE应用场景

HCE在很多场景中都具有重要应用价值。例如,在移动支付领域,用户可以将银行卡信息模拟到手机中,在支持NFC支付的终端上进行刷卡消费,无需携带实体银行卡;在门禁系统中,手机模拟门禁卡,方便用户进出办公场所或住宅小区。

2. HCE卡模拟实现示例

以下是一个简单的HCE卡模拟的基本代码示例,包括前台刷卡和后台刷卡的部分实现。

前台刷卡:

在module.json5文件中声明NFC卡模拟权限和HCE特定的action:

{
  "abilities": [
    {
      "name": "EntryAbility",
      "srcEntry": "./ets/entryability/EntryAbility.ts",
      "description": "$string:EntryAbility_desc",
      "icon": "$media:icon",
      "label": "$string:EntryAbility_label",
      "startWindowIcon": "$media:icon",
      "startWindowBackground": "$color:start_window_background",
      "exported": true,
      "skills": [
        {
          "entities": [
            "entity.system.home"
          ],
          "actions": [
            "action.system.home",
            "ohos.nfc.cardemulation.action.HOST_APDU_SERVICE"
          ]
        ]
      },
      "metadata": []
    }
  ],
  "requestPermissions": [
    {
      "name": "ohos.permission.NFC_CARD_EMULATION",
      "reason": "$string:app_name"
    }
  ]
}

在应用代码中:

import { cardEmulation } from '@kit.ConnectivityKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { AsyncCallback } from '@kit.BasicServicesKit';
import { AbilityConstant, UIAbility, Want, bundleManager } from '@kit.AbilityKit';

let hceElementName: bundleManager.ElementName;
let hceService: cardEmulation.HceService;

const hceCommandCb: AsyncCallback<number[]> = (error: BusinessError, hceCommand: number[]) => {
    if (!error) {
        if (hceCommand == null || hceCommand == undefined) {
            hilog.error(0x0000, 'testTag', 'hceCommandCb has invalid hceCommand.');
            return;
        }
        // 根据接收到的命令进行处理,然后发送响应
        let responseData = [0x90, 0x00]; // 根据不同命令修改响应数据
        hceService.transmit(responseData).then(() => {
            hilog.info(0x0000, 'testTag', 'hceService transmit Promise success.');
        }).catch((err: BusinessError) => {
            hilog.error(0x0000, 'testTag', 'hceService transmit Promise error ='+ JSON.stringify(err));
        });
    } else {
        hilog.error(0x0000, 'testTag', 'hceCommandCb error'+ JSON.stringify(error));
    }
};

export default class EntryAbility extends UIAbility {
    onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
        hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
        // 判断设备是否支持NFC能力和HCE能力
        if (!canIUse("SystemCapability.Communication.NFC.Core")) {
            hilog.error(0x0000, 'testTag', 'nfc unavailable.');
            return;
        }
        if (!cardEmulation.hasHceCapability()) {
            hilog.error(0x0000, 'testTag', 'hce unavailable.');
            return;
        }
        hceElementName = {
            bundleName: want.bundleName?? '',
            abilityName: want.abilityName?? '',
            moduleName: want.moduleName
        };
        hceService = new cardEmulation.HceService();
    }

    onForeground() {
        // 使能前台HCE应用程序优先处理NFC刷卡功能
        let aidList = ["A0000000031010", "A0000000031011"]; // 根据实际情况修改AID
        hceService.start(hceElementName, aidList);
        // 订阅HCE APDU数据的接收
        hceService.on('hceCmd', hceCommandCb);
    }

    onBackground() {
        // 退出应用程序NFC标签页面时,退出前台优先功能
        hceService.stop(hceElementName);
    }
}

后台刷卡:

在module.json5文件中声明NFC卡模拟权限、HCE特定的action以及应用能够处理的AID:

{
  "abilities": [
    {
      "name": "EntryAbility",
      "srcEntry": "./ets/entryability/EntryAbility.ts",
      "description": "$string:EntryAbility_desc",
      "icon": "$media:icon",
      "label": "$string:EntryAbility_label",
      "startWindowIcon": "$media:icon",
      "startWindowBackground": "$color:start_window_background",
      "exported": true,
      "skills": [
        {
          "entities": [
            "entity.system.home"
          ],
          "actions": [
            "action.system.home",
            "ohos.nfc.cardemulation.action.HOST_APDU_SERVICE"
          ]
        ]
      },
      "metadata": [
        {
          "name": "payment-aid",
          "value": "A0000000031010"
        },
        {
          "name": "other-aid",
          "value": "A0000000031011"
        }
      ]
    }
  ],
  "requestPermissions": [
    {
      "name": "ohos.permission.NFC_CARD_EMULATION",
      "reason": "$string:app_name"
    }
  ]
}

在应用代码中:

import { cardEmulation } from '@kit.ConnectivityKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { AsyncCallback } from '@kit.BasicServicesKit';
import { AbilityConstant, UIAbility, Want, bundleManager } from '@kit.AbilityKit';

let hceElementName: bundleManager.ElementName;
let hceService: cardEmulation.HceService;

const hceCommandCb: AsyncCallback<number[]> = (error: BusinessError, hceCommand: number[]) => {
    if (!error) {
        if (hceCommand == null || hceCommand == undefined) {
            hilog.error(0x0000, 'testTag', 'hceCommandCb has invalid hceCommand.');
            return;
        }
        // 根据接收到的命令进行处理,然后发送响应
        let responseData = [0x90, 0x00]; // 根据不同命令修改响应数据
        hceService.transmit(responseData).then(() => {
            hilog.info(0x0000, 'testTag', 'hceService transmit Promise success.');
        }).catch((err: BusinessError) => {
            hilog.error(0x0000, 'testTag', 'hceService transmit Promise error ='+ JSON.stringify(err));
        });
    } else {
        hilog.error(0x0000, 'testTag', 'hceCommandCb error'+ JSON.stringify(error));
    }
};

export default class EntryAbility extends UIAbility {
    onCreate(want: Want, launchParam: AbilityConstant.LaunchParam) {
        hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate');
        // 判断设备是否支持NFC能力和HCE能力
        if (!canIUse("SystemCapability.Communication.NFC.Core")) {
            hilog.error(0x0000, 'testTag', 'nfc unavailable.');
            return;
        }
        if (!cardEmulation.hasHceCapability()) {
            hilog.error(0x0000, 'testTag', 'hce unavailable.');
            return;
        }
        hceElementName = {
            bundleName: want.bundleName?? '',
            abilityName: want.abilityName?? '',
            moduleName: want.moduleName
        };
        hceService = new cardEmulation.HceService();
        hceService.on('hceCmd', hceCommandCb);
    }

    onForeground() {
        // 前台模式下,可进行一些界面提示或准备工作
        hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onForeground');
    }

    onDestroy() {
        // 退出应用程序时,取消订阅
        if (hceElementName!= undefined) {
            try {
                hceService.stop(hceElementName);
            } catch (error) {
                hilog.error(0x0000, 'testTag', 'hceService.stop error ='+ JSON.stringify(error));
            }
        }
    }
}

通过以上对HarmonyOS Next中NFC模块的标签读写和卡模拟功能的详细介绍,我们可以看到NFC技术为智能设备带来了丰富的交互方式和便捷的应用体验。无论是在便捷支付、门禁管理还是信息交互等方面,NFC都有着巨大的潜力等待开发者去挖掘。就像一把神奇的钥匙,开启了智能设备之间近场通信的新大门,让设备之间的交互变得更加自然和流畅。嘿,想象一下,以后出门只带手机,就能轻松搞定各种事情,是不是感觉生活变得更加美好了呢?哈哈!希望这篇文章能够帮助开发者们更好地理解和运用HarmonyOS Next中的NFC技术,创造出更多有趣、实用的应用程序。

鸿蒙开发之@ohos.nfc.cardEmulation (标准NFC-cardEmulation) 系统能力: SystemCapability.Communication.NFC.CardEmulation。系统能力: SystemCapability.Communication.NFC.CardEmulation。系统能力: SystemCapability.Communication.NFC.CardEmulation。定义卡模拟应用所使用的业务类型,是支付类型,还是其他类型。判断指定的应用是否为指定业务类型的默认应用。定义不同的NFC卡模拟类型。是否支持某种类型的卡模拟。判断是否支持HCE功能。 阅读详情

相关推荐

鸿蒙Next NFC开发避坑指南:手把手教你搞定标签读写(附完整代码)

本文详细介绍了鸿蒙Next NFC开发的实战技巧与避坑指南,涵盖标签读写、环境配置、事件监听、NDEF消息编码等关键环节,并提供完整代码示例。特别针对设备兼容性、权限配置等常见问题给出解决方案,帮助开发者高效完成NFC功能开发。

weixin_29303701的博客 445

鸿蒙开发(API 12 Beta6版)【NFC标签读写】 网络篇

近场通信(Near Field Communication,NFC)是一种短距高频的无线电技术,在13.56MHz频率运行,通信距离一般在10厘米距离内。电子设备可以通过NFC通信技术和NFC标签通信,从标签中读取数据,或写入数据到标签。

鸿蒙的技术博客 1928

鸿蒙版微信VS安卓版深度对比:从安装包大小到分布式能力实测

本文深度对比了鸿蒙版微信与安卓版在安装包大小、资源占用、分布式能力等方面的差异。实测数据显示,鸿蒙版微信在安装包体积、内存占用、跨设备协同等方面表现更优,特别是在分布式功能如跨设备通话流转、碰一碰文件传输等方面具有显著优势。这些优化得益于HarmonyOS的底层技术,为用户带来更流畅、高效的体验。

weixin_29274969的博客 721

HarmonyOS从入门到精通:NFC应用开发

本文介绍了在鸿蒙系统中开发NFC应用的关键技术。鸿蒙支持三种NFC工作模式:读卡器、卡模拟和点对点模式。开发前需配置"ohos.permission.NFC"权限。文章详细讲解了NFC管理器初始化、标签读取和写入的实现方法,包括: 使用nfc.Controller进行NFC开关控制 通过tagDiscovered事件监听标签 NDEF消息的读取解析和写入操作 数据格式转换工具方法 最后展示了一个NFC电子名片应用案例,演示如何综合运用这些技术实现完整功能。开发者可

haolove527的专栏 1496

鸿蒙DevEco 7.0模拟器与云手机协同开发实战指南

HarmonyOS NEXT开发者面临的核心挑战是API 26兼容性验证,而真机缺位倒逼工程实践升级。模拟器作为ArkTS编译守门员,提供快速UI与逻辑验证能力;云手机则作为分布式能力完备的远程真机,支撑Stage模型生命周期、国密算法、软总线调用等硬核场景。二者并非替代关系,而是构成‘编译-运行-分布式’三层验证矩阵的关键基础设施。掌握DevEco Studio 7.0模拟器启动原理(QEMU直通虚拟化)、环境冲突规避(WHPX/Rosetta/内核参数),以及云手机真实HDF硬件抽象与分布式调度特性,已

weixin_27918373的博客 264

HarmonyOS系统中内核实现NFC无线通信的方法

nfc即近距离无线通讯技术。这个技术由非接触式射频识别(RFID)演变而来,由飞利浦半导体(现恩智浦半导体公司)、诺基亚和索尼共同研制开发,其基础是RFID及互连技术。近场通信(NearFieldCommunicaTIon,NFC)是一种短距高频的无线电技术,在13.56MHz频率运行于10厘米距离内。其传输速度有106Kbit/秒、212Kbit/秒或者424Kbit/秒三种。目前近场通信已通过成为ISO/IECIS18092国际标准、ECMA-340标准与ETSITS102190标准。

嵌入式技术开发 1832

利用NFC增强用户体验:HarmonyOS NEXT的NFC应用指南

通过以上对HarmonyOS NEXT中NFC模块的标签读写和卡模拟功能的详细介绍,我们可以看到NFC技术为智能设备带来了丰富的交互方式和便捷的应用体验。踏入鸿蒙世界的敲门砖,标志着您在技术征途上的全新起点,提升就业竞争力,获得行业认可,点亮职业成长先机,快人一步抢占未来应用开发赛道!设备可以通过NFC通信技术与NFC标签进行交互,读取标签中存储的数据,或者向标签写入新的数据。后台标签识别是指设备在未打开特定NFC标签应用程序的情况下,触碰发现NFC标签后,根据标签的技术类型,分发给能够处理的应用程序。

xinyuan82的博客 847

鸿蒙起航:深入解析鸿蒙应用开发与职业进阶之路

《鸿蒙操作系统应用开发指南》是一份面向开发者的全面技术手册,重点介绍了华为鸿蒙操作系统(HarmonyOS)的核心特性与开发实践。文章首先阐述了鸿蒙诞生的背景及其分布式技术理念,强调其"一次开发,多端部署"的优势。随后详细解析了HarmonyOS Next的架构分层和关键特性,包括分布式软总线、原子化服务等创新设计。在开发实践部分,指南深入讲解了ArkUI声明式框架、ArkTS语言特性、Ability组件等核心技术,并提供了从环境搭建到应用发布的完整开发流程。

郑伟强dev的专栏 301

鸿蒙NEXT安全单元访问开发指南:构建可信应用的安全基石

鸿蒙NEXT的安全访问机制旨在改变传统应用获取用户数据的方式,从粗放式管理转变为精细化控制,确保用户隐私得到充分保护。系统通过引入系统 Picker 和安全控件等机制,让用户能够更加精准地掌控应用对敏感数据的访问权限,实现按需授权,使数据与应用之间的交互处于受控状态。这就好比为用户数据设置了一道道智能关卡,只有在用户明确授权的情况下,应用才能获取相应的数据资源。安全单元是一种独立的硬件或软件组件,它提供了一个安全的执行环境,用于存储和处理敏感数据,如加密密钥、用户凭证、支付信息等。

专注于移动开发的干货分享。提供高效解决方案、避坑指南与前沿技术解析。为开发者创造价值。 867

Aras Innovator系统配置-01对象类(一)

对象类配置-对象类属性说明

企业信息化(PLM,ERP.MES) 2031

基于STM32的Keil5代码自动补全设置操作指南

掌握Keil5代码自动补全设置技巧,提升STM32开发效率。通过合理配置编辑器选项,实现智能提示与语法补全,让嵌入式编程更流畅,尤其适合使用keil5代码自动补全设置的开发者快速上手。

weixin_32287387的博客 761

HarmonyOS Next卡证识别技术与应用

图像采集要点在HarmonyOS Next的卡证识别系统中,图像采集是第一步关键环节。为了获取清晰、完整的卡证图像,需要考虑多个因素。摄像头的分辨率和对焦能力至关重要,高分辨率摄像头能够捕捉到更多的卡证细节信息,准确对焦则确保图像的清晰度。例如,在识别身份证时,身份证上的文字、照片和防伪标识等细节需要清晰可辨,否则会影响后续的信息提取和识别。同时,拍摄角度和距离也需要合理控制,保证卡证在图像中的比例合适,避免出现变形或部分信息缺失的情况。

same4869的博客 1438

Jetson Nano官方镜像下载&烧录

在NVIDIA Jetson Nano开发者套件上安装NVIDIA官方Ubuntu镜像

weixin_44222088的博客 8843

HarmonyOS NEXT安全单元(Secure Element)访问:保护敏感数据

例如,在移动支付场景中,安全单元可以安全地存储银行卡信息,当进行 NFC 支付时,通过安全单元进行身份验证和数据加密,确保支付过程的安全可靠。在远程医疗设备中,安全单元可确保患者的医疗数据在传输和存储过程中的保密性和完整性,为远程医疗的发展提供坚实的安全支撑。在开发过程中,要注意遵循安全最佳实践,如妥善管理安全单元的访问权限,确保只有授权的应用或组件能够与安全单元进行交互。例如,在将加密后的 NFC 数据传输到目标设备时,安全单元可以对传输的数据进行签名和加密,防止数据在传输过程中被篡改或窃取。

xinyuan82的博客 520

ANC降噪学习

概述 ANC,英文名称:Active Noise Control,主动降噪。其原理是降噪系统电路产生降噪MIC接收的外界环境噪音相等的反相信号,将噪声抵消。核心算法 ANC降噪实现核心算法为:FxLMS(最小均方差算法)。最小均方差算法以均方误差为代价函数,并使误差降到最小的算法。 具体算法推导这里不做具体介绍,这里直接列出表达式: ...

王小壮的博客 2万+

【关于四足机器人那些事】足端轨迹规划-八次多项式轨迹

系列文章目录 文章目录系列文章目录前言一、多项式曲线二、八次多项式曲线总结 前言 在四足机器人的研究中,有一个很关键的问题,就是如何减少足端在触地瞬间的冲击,避免把机器人把自己给蹬倒了?这时候就需要一个合理的足端轨迹规划。本篇将会介绍几种足端轨迹。 本文将对四足机器人的足端轨迹进行规划。将数学中的复合摆线和多项式曲线引入到足端轨迹的规划中,根据零冲击原则[2],规划出 3 条满足要求的足端轨迹,包括: 复合摆线轨迹 八次多项式轨迹 分段五次多项式轨迹 本篇先介绍 - 八次多项式轨迹 一、多项式曲

LiuZ的博客 2955

鸿蒙Next启航:解码HarmonyOS未来生态与Api12+技术革命

Harmony Next并非简单的版本迭代,而是一场对操作系统本质的哲学重构。它打破了传统操作系统"以设备为中心"的设计范式,将"服务原子化"与"算力泛在化"提升至核心架构层面。分布式能力的三重进化无感协同:通过增强型分布式软总线技术,设备间通信延迟降低至10ms级,用户在多设备切换服务时如同操作单一设备。算力聚合:支持跨设备GPU/NPU算力池化,手机、平板、智慧屏可联合渲染4K视频,智能手表也能调用PC的AI算力完成复杂语义分析。动态韧性。

Lin_Zhong_的博客 1142

INMP441麦克风与ESP32的I2S音频采集实战指南

本文提供了INMP441数字麦克风与ESP32开发板通过I2S接口进行高质量音频采集的完整实战指南。详细讲解了硬件连接、软件配置、数据读取及基础处理,并分享了常见的避坑技巧与性能优化建议,帮助开发者快速构建物联网音频应用。

weixin_28396629的博客 598

HarmonyOS Next仓颉语言入门:标识符与Unicode规范解析

在HarmonyOS Next的开发环境中,仓颉语言作为核心开发语言,其基础概念的掌握至关重要。其中,标识符与Unicode规范是编写正确且高效代码的基石。作为一名在该领域有丰富实践经验的技术人员,下面我将结合实际项目中的经验,深入解析这些关键知识点。

same4869的博客 651

【速通RAG实战:索引】4.RAG文档解析技术

通过本文技术方案,可构建高精准、高效率的文档解析流水线,为 RAG 应用提供坚实的知识底座。核心在于**格式解析的鲁棒性**和**语义分块的准确性**,后续通过持续的性能优化和质量监控,逐步提升索引质量和检索效率。

2025博客之星Top81。专注AI工程化与架构实战。从分布式思维到模型部署,用工程化视角为你厘清AI落地的真实路径。 1544

携程机票数据爬取实战:使用 Python 获取携程网机票信息

通过本篇博客,我们详细介绍了如何使用 Python 爬取携程网的机票信息,涉及了静态网页爬取(使用 Requests 和 BeautifulSoup)和动态网页爬取(使用 Selenium)两种方法。通过获取的数据,我们不仅能够进行票价分析,还可以构建更为复杂的预测模型或趋势分析工具。爬虫技术不仅能够帮助我们收集有价值的数据,还能够为商业决策提供数据支持。在实际应用中,我们可以结合更多的分析方法,如自然语言处理、图像处理等,进一步提升数据的价值。

2201_76125261的博客 1657

鸿蒙开发核心功能全解析

鸿蒙开发核心功能解析与实战 本文系统介绍了鸿蒙操作系统的核心开发模块,包括: 分布式架构:涵盖软总线、数据管理和任务调度三大核心技术,实现跨设备无缝协同 方舟开发框架:基于ArkTS语言和ArkUI声明式编程,提供高效开发体验 状态管理:详细解析@State、@Prop等装饰器体系及最佳实践 行业应用:展示金融、教育、出行等领域的典型落地案例 开发工具:介绍DevEco Studio的调试技巧和多设备模拟能力 文章通过代码示例和架构图解,完整呈现了鸿蒙开发的分布式特性、UI框架和实战方法论,为开发者提供全面

2502_93036221的博客 2004

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

p40pro会升级鸿蒙,华为鸿蒙OS终于要来了?华为P40Pro性能外观全面升级:相机参数确定...

信赖各人都知道,随着三星S20 Ultra和小米10 Pro纷纷发布,其搭载强悍的1亿800万像素相机主摄,也成为了广大消费者所关注的焦点,此中小米10Pro更是成为了现在环球性能最强的照相旗舰机皇,那么不停以来在相机照相方面,有着较为领先上风的华为,毕竟会如何应战呢?从现在的爆料情况来看,似乎华为在当下并不会接纳三星这颗1亿800万像素CMOS,那么华为这次带来华为P40Pro系列到底情况如何呢...

weixin_36234738的博客 685

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

鸿蒙Next用户认证高级应用:从生物特征到分布式协同[特殊字符]

鸿蒙Next的用户认证系统在基础功能之上,通过生物特征增强、分布式协同与行业定制,构建了更安全、智能的认证体系。本文解析三大进阶方向,附实战案例~

lyc233333的博客 319

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

软通动力子公司鸿湖万联携多款重磅创新产品亮相华为开发者大会

搭载SwanLinkOS操作系统的车道收费盒子,相较传统收费盒子具备更高的计算性能,支持功能定制,可以灵活增减接口,能满足各类高速收费智能化场景需求,目前已成功应用于多个项目。,首次发布的统一智慧煤矿装备APP,即鸿鹄智联矿山版APP,基于矿鸿(MineHarmony)系统,以MDTP技术和设备物模型为基础,对煤矿设备实现统一APP框架的设备管理,可应用于煤矿行业采集类、生产类、运输类、巡检类设备,统一通信和作业终端,统一装备交互入口和操作体验,降低工人操作复杂度,保障安全生产。统一智慧煤矿装备APP。

isoftstone_HOS的博客 1100

2026 年跨端开发决战:小程序原生 vs uni-app vs Taro 深度对比

在 2026 年,“唯框架论”已经过时。原生不再是落后的代名词,而是高性能场景的基石。uni-app证明了效率与生态可以兼得,是商业变现的利器。Taro展示了工程化的力量,是复杂系统架构的优选。最明智的策略往往是混合架构:核心高频模块采用原生或高度优化的 Taro 组件,长尾功能和营销页面使用 uni-app 快速构建。未来的前端工程师,不应被框架束缚,而应成为驾驭多种工具、在性能与效率之间寻找最佳平衡点的架构师。

2603_94941239的博客 1497
上一篇: 从STA到P2P:HarmonyOS WLAN多模式开发指南
下一篇: HarmonyOS蓝牙串口协议(SPP)详解:实现设备间可靠数据交换
SameX-4869
博客等级 码龄17年 3354粉丝 657原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值