HarmonyOS碰一碰基本功能如何实现

碰一碰简单来说就是,使用 nfc 拉起配网 fa,入网之后,使用控制 fa 进行设备控制。
总结下来开发碰一碰能力需要 3 部分:
设备端:安装碰一碰固件程序。
手机端:可以使用原子化服务配网模板、控制模板。
nfc 标签:存放设备端信息。用原子化服务的包名→生成 product id,用于拉起 fa。
接下来参考官方 demo 和 onehop 模板来体验下碰一碰的流程。
设备端
①源码下载
硬件需要 hi3861,openharmony 版本需要 1.1.0,可以 repo 拉取。
repo init -u https://gitee.com/openharmony/manifest.git -b refs/tags/openharmony_release_v1.1.0 --no-repo-verifyrepo sync -c   
关于 ubuntu 编译环境搭建可以参考软通动力大佬的帖子,写的特别详细:
https://harmonyos.51cto.com/posts/9453     
首先要完成官方镜像的拉取和编译,成功之后在尝试安装 onehop 设备端代码,设备端代码获取链接:
https://gitee.com/openharmony-sig/knowledge_demo_smart_home/tree/master/dev/team_x/demo_winder  
onehop 设备端固件代码,只需要 hals 和 winder 两个文件夹,为了方便大家下载,我在文末上传了这两个文件夹。这两个文件夹需要拷贝到 applications/sample/wifi-iot/app/ 目录下。
②源码修改
修改文件:
device/hisilicon/hispark_pegasus/hi3861_adapter/hals/communication/wifi_lite/wifiservice/source/wifi_device.c  
代码如下:
static void hiwifiwpaeventcb(const hi_wifi_event *hisievent){    if (hisievent == null) {        return;    }    /*注释此处    if (lockwifieventlock() != wifi_success) {        return;    }    */    for (int i = 0; i  wifiiot_hispark_pegasus      ipcamera_hispark_aries      ipcamera_hispark_taurushb build -b debug    # 执行编译  
烧录推荐使用 hiburn,简单高效,一张图就明白了。
最后烧录完成提示:
execution successful       
手机端
①编辑模板
手机端就简单了,安装 deveco studio 3.0 beta1 及以上版本,然后 ide 自带 onehop 的模板。
https://developer.harmonyos.com/cn/develop/deveco-studio#download_beta
②获取证书
源码不怎么需要修改,但是在真机上运行程序,需要在线获取签名证书。基本流程就是在 appgallery connect 注册项目和应用,然后用 ide 软件自动获取。
https://developer.huawei.com/consumer/cn/service/josp/agc/index.html#/myproject  
需要注意的是网站注册时的包名要和 src/main/config.json 中bundlename保持一致不然是获取不到的。
这部分出问题参考官方文档吧,文档很详细:
https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ide_debug_device-0000001053822404#section837891802519  
再就是为了方便调试可以先关闭免安装功能(在 src/main/config.json 中,将installationfree设置为 false)这样桌面会生成应用图标,无需 nfc 贴纸,打开图标一样可以实现设备配网、控制。
installationfree: false  
③测试 app
  到这里可以先打开桌面的 app 测试下配网功能,这里有坑,目前示例的稳定性很差,配网大概率会失败。
先关闭手机 wifi 再打开,然后 hi3861 上电,再然后开启配网 app 可以提高成功率。
正常情况下配网成功就会自动拉起控制 fa,控制 fa 需要在 deveco studio 菜单栏 run→edit configurations。
勾选 entry 模块下的“deploy multi hap packages”选项,这样项目中的多个模块都能添加到手机端。
如果这样配网完成还是不能自动拉起控制 fa,那么检查下 default/pages/netconfig/netconfig.js,检查下这个函数参数是否正确。
let target = {    bundlename: 'com.liangzili.myonehop.hmservice',    abilityname: 'com.liangzili.myonehop.controlmainability',    devicetype: 1,    data: {        session_id: getapp(this).configparams.deviceinfo.sessionid,        product_id: getapp(this).product.productid,        product_name: getapp(this).product.productname    }}featureability.startability(target);       
nfc 标签
      标签的作用类似新建一个快捷方式,然后把快捷方式贴到设备上,手机碰一下打开这个快捷方式就可以自动下载配网 fa 和控制 fa,只要 app 体积在 10m 以内,这些操作用户是感受不到的。接下来就说说这个标签的制作方法。  
①制作贴纸
首先当然是需要购买一些 nfc 贴纸,我使用的是下图这一种。
给 nfc 贴纸写内容需要一个 app,在华为应用市场,搜索“应用调测助手”安装即可。
写入贴纸的信息一共 2 条 product id 和设备 sn,或者一些自定义信息。只有 product id 是必填的,这个在 app 拿包名申请即可。  
②设置意图
  当手机碰触 nfc 贴纸的时候,手机需要通过 product id 去云端获取用户意图。
所以需要登录华为开发者门户设置下,当检测到设置的 product id 是要执行的操作。
主要的设置就在这里,可以看到配网 fa 是通过 nfc 贴纸拉起的,而控制 fa 是配网 fa 拉起的:
“app 包名”填写为 config.json 文件中的 bundlename 字段取值。
“模块名”填写为入口原子化服务(即设备配网模块)config.json 文件中的 modulename 字段取值。
“服务名”填写为入口原子化服务(即设备配网模块)config.json 文件中的 mainability 字段取值。
这样碰一碰的功能基本就实现了。    
总结
      大部分的内容官方文档都有详细说明,我只写了不一样的地方,和我踩过的雷,希望能给大家避避坑。详细流程还是要结合官方文档看。
原文标题:鸿蒙“碰一碰”功能实现!
文章出处:【微信公众号:harmonyos技术社区】欢迎添加关注!文章转载请注明出处。


音频信号采集与AGC算法的DSP实现
AMD推出ProRender 2.0渲染器:支持RX 6900 XT硬件光追、AI加速的降噪
华为HarmonyOS 2.0手机应用开发者Beta发布 助力开发者创造无限可能
Arduino Ethernet扩展板产品介绍(意大利原装正版)
声控小车设计
HarmonyOS碰一碰基本功能如何实现
荣耀V9怎么样?荣耀V9评测:华为荣耀V9对比华为荣耀8要速度还是要颜值?降价的荣耀8和荣耀V9你买谁?
加倍并减轻PWM的滤波要求
2020性价比高的蓝牙耳机价格 价格实惠好用的降噪耳机
无人驾驶汽车将在2020年乃至更早的某个时间来临
如今为什么大部分都不会选择扫地机器人
如何将CAD图到SW做三维处理
如何选择箱式淋雨试验机,参数的区别是什么
正极、负极和电解质在正常测试环境和热失控环境下的产气机制
三相电压源型高频链逆变技术
倒计时计数电路
SaberRD示例设计:三相230V交流转28V直流变换器
二进制解码器案例说明
中国无人机发展迅速,但涡桨发动机依旧是短板
大联大友尚集团推出ST新款高性能功率MOSFET