碰一碰簡單來說就是,使用 NFC 拉起配網 FA,入網之后,使用控制 FA 進行設備控制。
總結下來開發碰一碰能力需要 3 部分:
設備端:安裝碰一碰固件程序。
手機端:可以使用原子化服務配網模板、控制模板。
NFC 標簽:存放設備端信息。用原子化服務的包名→生成 Product ID,用于拉起 FA。
接下來參考官方 demo 和 OneHop 模板來體驗下碰一碰的流程。
設備端
①源碼下載
硬件需要 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
關于 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
代碼如下:
staticvoidHiWifiWpaEventCb(consthi_wifi_event*hisiEvent) { if(hisiEvent==NULL){ return; } /*注釋此處 if(LockWifiEventLock()!=WIFI_SUCCESS){ return; } */ for(inti=0;i
設備端使用到了 I2C 的屏幕,所以需要在 make 的 config 文件中開啟 I2C 的支持。 具體操作如下:
打開下面文件,注意取消前面的#號:
device/hisilicon/hispark_pegasus/sdk_liteos/build/config/usr_config.mk
-#CONFIG_I2C_SUPPORTisnotset +CONFIG_I2C_SUPPORT=y
為了方便調試需要關閉 test 子系統,在 vendorhisiliconhispark_pegasusconfig.json 文件中,刪除下面代碼,注意逗號。
, { "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"] }
③構建編譯
1.1.0 的構建使用的是 hb 命令,方式如下:
hbset#設置編譯路徑 .#選擇當前路徑 #hisilicon#選擇編譯的目標類型 >wifiiot_hispark_pegasus ipcamera_hispark_aries ipcamera_hispark_taurus hbbuild-bdebug#執行編譯
燒錄推薦使用 HiBurn,簡單高效,一張圖就明白了。
最后燒錄完成提示:
ExecutionSuccessful
手機端
①編輯模板
手機端就簡單了,安裝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,檢查下這個函數參數是否正確。
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 標簽
標簽的作用類似新建一個快捷方式,然后把快捷方式貼到設備上,手機碰一下打開這個快捷方式就可以自動下載配網 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技術社區】歡迎添加關注!文章轉載請注明出處。
審核編輯:彭菁
-
華為
+關注
關注
216文章
34537瀏覽量
253015 -
nfc
+關注
關注
59文章
1632瀏覽量
180971 -
開發者
+關注
關注
1文章
590瀏覽量
17097
原文標題:鴻蒙“碰一碰”功能實現!
文章出處:【微信號:gh_834c4b3d87fe,微信公眾號:OpenHarmony技術社區】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論