碰一碰簡(jiǎn)單來(lái)說(shuō)就是,使用 NFC 拉起配網(wǎng) FA,入網(wǎng)之后,使用控制 FA 進(jìn)行設(shè)備控制。
總結(jié)下來(lái)開(kāi)發(fā)碰一碰能力需要 3 部分:
設(shè)備端:安裝碰一碰固件程序。
手機(jī)端:可以使用原子化服務(wù)配網(wǎng)模板、控制模板。
NFC 標(biāo)簽:存放設(shè)備端信息。用原子化服務(wù)的包名→生成 Product ID,用于拉起 FA。
接下來(lái)參考官方 demo 和 OneHop 模板來(lái)體驗(yàn)下碰一碰的流程。
設(shè)備端
①源碼下載
硬件需要 Hi3861,OpenHarmony 版本需要 1.1.0,可以 repo 拉取。
repoinit-uhttps://gitee.com/openharmony/manifest.git-brefs/tags/OpenHarmony_release_v1.1.0--no-repo-verify reposync-c
關(guān)于 Ubuntu 編譯環(huán)境搭建可以參考軟通動(dòng)力大佬的帖子,寫(xiě)的特別詳細(xì):
https://harmonyos.51cto.com/posts/9453
首先要完成官方鏡像的拉取和編譯,成功之后在嘗試安裝 OneHop 設(shè)備端代碼,設(shè)備端代碼獲取鏈接:
https://gitee.com/openharmony-sig/knowledge_demo_smart_home/tree/master/dev/team_x/demo_winder
OneHop 設(shè)備端固件代碼,只需要 hals 和 winder 兩個(gè)文件夾,為了方便大家下載,我在文末上傳了這兩個(gè)文件夾。這兩個(gè)文件夾需要拷貝到 applications/sample/wifi-iot/app/ 目錄下。
②源碼修改
修改文件:
device/hisilicon/hispark_pegasus/hi3861_adapter/hals/communication/wifi_lite/wifiservice/source/wifi_device.c
代碼如下:
staticvoidHiWifiWpaEventCb(consthi_wifi_event*hisiEvent) { if(hisiEvent==NULL){ return; } /*注釋此處 if(LockWifiEventLock()!=WIFI_SUCCESS){ return; } */ for(inti=0;i
設(shè)備端使用到了 I2C 的屏幕,所以需要在 make 的 config 文件中開(kāi)啟 I2C 的支持。 具體操作如下:
打開(kāi)下面文件,注意取消前面的#號(hào):
device/hisilicon/hispark_pegasus/sdk_liteos/build/config/usr_config.mk
-#CONFIG_I2C_SUPPORTisnotset +CONFIG_I2C_SUPPORT=y
為了方便調(diào)試需要關(guān)閉 test 子系統(tǒng),在 vendorhisiliconhispark_pegasusconfig.json 文件中,刪除下面代碼,注意逗號(hào)。
, { "subsystem":"test", "components":[ {"component":"xts_acts","features":[]}, {"component":"xts_tools","features":[]} ] }
最后將 app 添加到編譯框架,在 applications/sample/wifi-iot/app/BUILD.gn 文件,將 features 字段中的 startup 修改為 winder,并添加 winder 模塊的索引 deps。
import("http://build/lite/config/component/lite_component.gni") lite_component("app"){ #將startup修改為winder features=[ "winder", ] #添加winder模塊的索引deps deps=["http://applications/sample/wifi-iot/app/hals:hi3861_hals"] }
③構(gòu)建編譯
1.1.0 的構(gòu)建使用的是 hb 命令,方式如下:
hbset#設(shè)置編譯路徑 .#選擇當(dāng)前路徑 #hisilicon#選擇編譯的目標(biāo)類型 >wifiiot_hispark_pegasus ipcamera_hispark_aries ipcamera_hispark_taurus hbbuild-bdebug#執(zhí)行編譯
燒錄推薦使用 HiBurn,簡(jiǎn)單高效,一張圖就明白了。
最后燒錄完成提示:
ExecutionSuccessful
手機(jī)端
①編輯模板
手機(jī)端就簡(jiǎn)單了,安裝DevEco Studio 3.0 Beta1及以上版本,然后 IDE 自帶 OneHop 的模板。
https://developer.harmonyos.com/cn/develop/deveco-studio#download_beta
②獲取證書(shū)
源碼不怎么需要修改,但是在真機(jī)上運(yùn)行程序,需要在線獲取簽名證書(shū)。基本流程就是在AppGallery Connect注冊(cè)項(xiàng)目和應(yīng)用,然后用 IDE 軟件自動(dòng)獲取。
https://developer.huawei.com/consumer/cn/service/josp/agc/index.html#/myProject
需要注意的是網(wǎng)站注冊(cè)時(shí)的包名要和 src/main/config.json 中"bundleName"保持一致不然是獲取不到的。
這部分出問(wèn)題參考官方文檔吧,文檔很詳細(xì):
https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ide_debug_device-0000001053822404#section837891802519
再就是為了方便調(diào)試可以先關(guān)閉免安裝功能(在 src/main/config.json 中,將"installationFree"設(shè)置為 false)這樣桌面會(huì)生成應(yīng)用圖標(biāo),無(wú)需 NFC 貼紙,打開(kāi)圖標(biāo)一樣可以實(shí)現(xiàn)設(shè)備配網(wǎng)、控制。
"installationFree":false
③測(cè)試 APP
到這里可以先打開(kāi)桌面的 app 測(cè)試下配網(wǎng)功能,這里有坑,目前示例的穩(wěn)定性很差,配網(wǎng)大概率會(huì)失敗。
先關(guān)閉手機(jī) wifi 再打開(kāi),然后 Hi3861 上電,再然后開(kāi)啟配網(wǎng) app 可以提高成功率。
正常情況下配網(wǎng)成功就會(huì)自動(dòng)拉起控制 FA,控制 FA 需要在 DevEco Studio 菜單欄 Run→Edit Configurations。
勾選 entry 模塊下的“Deploy Multi Hap Packages”選項(xiàng),這樣項(xiàng)目中的多個(gè)模塊都能添加到手機(jī)端。
如果這樣配網(wǎng)完成還是不能自動(dòng)拉起控制 FA,那么檢查下 default/pages/netconfig/netconfig.js,檢查下這個(gè)函數(shù)參數(shù)是否正確。
lettarget={ 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 標(biāo)簽
標(biāo)簽的作用類似新建一個(gè)快捷方式,然后把快捷方式貼到設(shè)備上,手機(jī)碰一下打開(kāi)這個(gè)快捷方式就可以自動(dòng)下載配網(wǎng) FA 和控制 FA,只要 app 體積在 10M 以內(nèi),這些操作用戶是感受不到的。接下來(lái)就說(shuō)說(shuō)這個(gè)標(biāo)簽的制作方法。
①制作貼紙
首先當(dāng)然是需要購(gòu)買(mǎi)一些 NFC 貼紙,我使用的是下圖這一種。
給 NFC 貼紙寫(xiě)內(nèi)容需要一個(gè) APP,在華為應(yīng)用市場(chǎng),搜索“應(yīng)用調(diào)測(cè)助手”安裝即可。
寫(xiě)入貼紙的信息一共 2 條 Product ID 和設(shè)備 SN,或者一些自定義信息。只有 Product ID 是必填的,這個(gè)在 APP 拿包名申請(qǐng)即可。
②設(shè)置意圖
當(dāng)手機(jī)碰觸 NFC 貼紙的時(shí)候,手機(jī)需要通過(guò) Product ID 去云端獲取用戶意圖。
所以需要登錄華為開(kāi)發(fā)者門(mén)戶設(shè)置下,當(dāng)檢測(cè)到設(shè)置的 Product ID 是要執(zhí)行的操作。
主要的設(shè)置就在這里,可以看到配網(wǎng) FA 是通過(guò) NFC 貼紙拉起的,而控制 FA 是配網(wǎng) FA 拉起的:
“App 包名”填寫(xiě)為 config.json 文件中的 bundleName 字段取值。
“模塊名”填寫(xiě)為入口原子化服務(wù)(即設(shè)備配網(wǎng)模塊)config.json 文件中的 moduleName 字段取值。
“服務(wù)名”填寫(xiě)為入口原子化服務(wù)(即設(shè)備配網(wǎng)模塊)config.json 文件中的 mainAbility 字段取值。
這樣碰一碰的功能基本就實(shí)現(xiàn)了。
總結(jié)
大部分的內(nèi)容官方文檔都有詳細(xì)說(shuō)明,我只寫(xiě)了不一樣的地方,和我踩過(guò)的雷,希望能給大家避避坑。詳細(xì)流程還是要結(jié)合官方文檔看。
原文標(biāo)題:鴻蒙“碰一碰”功能實(shí)現(xiàn)!
文章出處:【微信公眾號(hào):HarmonyOS技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
審核編輯:彭菁
-
華為
+關(guān)注
關(guān)注
216文章
34411瀏覽量
251506 -
nfc
+關(guān)注
關(guān)注
59文章
1621瀏覽量
180515 -
開(kāi)發(fā)者
+關(guān)注
關(guān)注
1文章
563瀏覽量
17005
原文標(biāo)題:鴻蒙“碰一碰”功能實(shí)現(xiàn)!
文章出處:【微信號(hào):gh_834c4b3d87fe,微信公眾號(hào):OpenHarmony技術(shù)社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論