1. 程式人生 > 實用技巧 >教你整合Nearby Service實現一鍵Wi-Fi分享功能

教你整合Nearby Service實現一鍵Wi-Fi分享功能

前言

朋友來家裡做客、顧客到店裡用餐…當他們想要給自己的手機連結Wi-Fi時,總免不了詢問Wi-Fi名稱和密碼。這種問密碼和給密碼的過程十分麻煩,常常還會有聽錯或者輸錯密碼的情況,更重要的是無意間會造成密碼洩露。如何實現可以不用手動輸入密碼,一鍵登入連結Wi-Fi呢?

華為Nearby Service為您提供了“Wi-Fi分享”新特性。通過此特性,使用者只需要在應用中選中待連網的裝置並確定協助其連網,即可實現一鍵接入Wi-Fi網路。

Wi-FiShareDemo

Wi-FiShareDemo是一個已經整合Nearby Service實現Wi-Fi分享的示例應用,本節介紹如何將這個示例應用執行起來及該示例應用的關鍵程式碼。

工具準備

  • 1臺華為手機(分享方需要是華為手機)

  • 1檯安卓裝置(接受方需要是安卓5.0以上且安裝了HMSCore的裝置,可以是手機,電視盒子等安卓裝置)

  • 分享方已連線Wi-Fi,接受方未連線

  • 開發工具 Android Studio(3.X or later)

構建示例應用

  • 在Android Studio中匯入示例原始碼。

  • 註冊成為華為開發者

  • 參考Nearby Service 開發準備在華為應用市場建立一個您的應用。注意:需要下載“agconnect-services.json”檔案和參考指導生成簽名證書並放置在app/目錄下。

  • 在Android Studio中執行該應用將其安裝到測試機。

操作步驟

如您已經按上述步驟完成編譯構建並安裝到了手機上,則可以按如下步驟進行體驗。注意:測試機A必須是華為手機且已經連線Wi-Fi,測試機B可以是其他安卓手機且未連線目標Wi-Fi。

  1. 在測試機B上開啟Wi-FiShareDemo,點選“Connect Wi-Fi”

  1. 測試機A已連上Wi-Fi,開啟Wi-FiShareDemo,點選Share Wi-Fi”

  1. 在測試機A上選擇待分享的手機,確認兩臺手機上的驗證碼一致,選擇“ALLOW”

  1. 在測試機B上點選彈出框的提示“ALLOW”,允許連線WLAN。

關鍵程式碼說明

示例應用的原始碼託管在GitHub上,您可以直接檢視原始碼。在這個示例應用中,類WifiShareHelper.java基於Nearby Service的介面做了封裝,提供了
原始碼中僅有兩個類MainActivity.java和WifiShareHelper.java,上述分享Wi-Fi過程僅用了WifiShareHelper.java中連線Wi-Fi和分享Wi-Fi的兩個介面。

  1. 連線Wi-Fi(requestWiFiConfig)
// The device request to connect WiFi
public void requestWiFiConfig() {
    Log.d(TAG, "requestWiFiConfig");
    mWifiShareEngine.startWifiShare(mWifiShareCallback, WifiSharePolicy.POLICY_SET)
            .addOnFailureListener(e -> Log.e(TAG, Objects.requireNonNull(e.getMessage())));
}
  1. 分享Wi-Fi(shareWiFiConfig)
// The device to share wifi
public void shareWiFiConfig() {
    Log.d(TAG, "Start to share WiFi");
    mWifiShareEngine.startWifiShare(mWifiShareCallback, WifiSharePolicy.POLICY_SHARE)
            .addOnFailureListener(e -> Log.e(TAG, Objects.requireNonNull(e.getMessage())));
    showListView();
    setListViewListenerMode();
}

更多詳情

華為開發者聯盟官網:
https://developer.huawei.com/consumer/en/hms/huawei-nearbyservice?ha_source=hms1

獲取開發指導文件:
https://developer.huawei.com/consumer/en/doc/development/HMSCore-Guides-V5/introduction-0000001050040566-V5?ha_source=hms1

參與開發者討論請到Reddit社群:https://www.reddit.com/r/HuaweiDevelopers/

下載demo和示例程式碼請到Github:https://github.com/HMS-Core

解決整合問題請到Stack Overflow:
https://stackoverflow.com/questions/tagged/huawei-mobile-services?tab=Newest


原文連結:https://developer.huawei.com/consumer/cn/forum/topic/0204415936476600459?fid=18

原作者:胡椒