1. 程式人生 > >如何用HMS Nearby Service給自己的App新增近距離資料傳輸功能

如何用HMS Nearby Service給自己的App新增近距離資料傳輸功能

  當你給朋友傳送手機資料時,過了很久進度條卻動也不動;當你想傳送大檔案給同事時,僅一個檔案就用光了你所有流量;當你跟朋友乘坐飛機時想一起玩遊戲時,卻因沒有網路無奈放棄。 ![](https://img2020.cnblogs.com/blog/1969374/202007/1969374-20200713102422260-368868673.jpg)   們生活中似乎經常能遇到這種尷尬的場景,近距離資料傳輸功能是使用者的一個痛點。現在,只需要接入華為近距離通訊服務,通過Nearby Connection便可以輕鬆實現裝置間的資料傳輸,傳輸型別支援短文字、流資料和檔案資料等型別,可幫助app實現本地多人遊戲、實時協作、多屏遊戲和離線檔案傳輸等功能。下圖是功能演示: ![](https://img2020.cnblogs.com/blog/1969374/202007/1969374-20200713102436182-1297096810.gif)   如果你對實現方式感興趣,可以在Github上下載原始碼:   [https://github.com/HMS-Core/hms-nearby-demo/tree/master/NearbyConnection](https://github.com/HMS-Core/hms-nearby-demo/tree/master/NearbyConnection)   首先需要了解Nearby Connection 開發流程 ![](https://img2020.cnblogs.com/blog/1969374/202007/1969374-20200713102451074-1606070105.png) # 1. 業務流程   整體流程可以劃分為4個階段。   **廣播掃描階段**:廣播端啟動廣播,發現端啟動掃描以發現廣播端。 1. 廣播端呼叫startBroadcasting()啟動廣播。 2. 發現端呼叫startScan()啟動掃描以發現附近的裝置。 3. 由onFound()方法通知掃描結果。   **建立連線階段**:發現端發起連線並啟動對稱的身份驗證流程,雙端獨立接受或拒絕連線請求。 1. 發現端呼叫requestConnect()向廣播端發起連線請求。 2. 兩端由onEstablish()通知連線啟動後,均可以呼叫acceptConnect()接受連線或呼叫rejectConnect()拒絕連線。 3. 兩端由onResult()通知連線結果。僅當兩端都接受連線時,連線才能建立。   **傳輸資料階段**:建立連線後,雙端進行資料交換。 1. 連線建立後,雙端均可以呼叫sendData()傳送資料給對端。 2. 接收資料的一端由onReceived()通知接收到資料;兩端由onTransferUpdate()通知當前的傳輸狀態。   **斷開連線階段**:雙端任意一端發起斷開連線,通知對端連線斷開。 1. 主動斷開連線的一端呼叫disconnect()斷開連線,對端由onDisconnected()通知連線斷開。 # 2. 開發步驟 ## 2.1 開發準備   如果你以前沒有整合華為移動服務的經驗,那麼需要先配置AppGallery Connect,開通近距離通訊服務並整合HMS SDK。相關步驟請參考官方文件。 ## 2.2 宣告系統許可權   Nearby Connection開發場景需要使用Nearby Discovery API和Nearby Transfer API,你的應用必須根據所使用的策略宣告適當的許可權。例如:使用POLICY_STAR策略開發檔案傳輸的應用,需要新增特定的許可權到AndroidManifest.xml: