加入我們的郵寄清單,取得關於「鄰近分享」的最新消息和公告。

總覽

透過集合功能整理內容 你可以依據偏好儲存及分類內容。

Nearby Connections 是一種點對點網路 API,無論網路連線狀況為何,應用程式都能輕鬆地即時探索、連線及與鄰近裝置交換資料。API 位於 com.google.android.gms.nearby.connection 套件中。

使用範例:

  • 協作白板:在共用虛擬白板上,與附近的參與者寫下想法。
  • 本地多人對戰遊戲:設定多人對戰遊戲,並邀請附近附近的其他使用者加入。
  • 多螢幕遊戲:使用手機或平板電腦做為遊戲控制器,在附近的大螢幕 Android 裝置 (例如 Android TV) 上播放遊戲。
  • 離線檔案傳輸:無需網路連線,即可快速分享相片、影片或其他任何類型的資料。

簡介

Nearby Connections 可讓您透過完全離線的點對點方式,在鄰近裝置之間放送廣告、探索和連線。裝置之間的連線具有高頻寬、低延遲且完全加密的狀態,可實現快速安全的資料傳輸。

這個 API 的主要目標是提供簡單、可靠且效能卓越的平台。基本上,API 會搭配使用藍牙、BLE 和 Wi-Fi 無線基地台,在充分利用各自有益的弱點時,同時運用各項優勢。這項功能可有效簡化藍牙和 Wi-Fi 的各種 Android 作業系統版本及硬體,讓開發人員能專注於使用者最重視的功能。

為方便起見,系統不會提示使用者開啟藍牙或 Wi-Fi,鄰近連線功能可視需要啟用這些功能,並在應用程式使用 API 後,將裝置還原至先前的狀態,確保使用者享有流暢的使用體驗。

API 總覽

API 的運作分為兩個階段:預先連線和連線後。

在預先連線階段,廣告客戶會自行放送廣告,探索者則探索附近的廣告客戶並傳送連線要求。從探索者到廣告客戶的連線要求會啟動對稱驗證流程,進而兩方分別接受 (或拒絕) 連線要求。

在雙方接受連線要求後,系統會將連線視為已連線,而裝置在進入連線後後階段將能交換資料。

廣告和探索

廣告客戶會先叫用 startAdvertising(),並傳入 ConnectionLifecycleCallback,每當探索者想要透過 onConnectionInitiated() 回呼進行連線時,您就會收到通知。

探索工具會先叫用 startDiscovery(),並傳入 EndpointDiscoveryCallback,只要有透過 onEndpointFound() 回呼找到附近的廣告客戶,就會收到通知。

建立連線

當探索者想要連線到附近的廣告客戶時,探索工具會叫用 requestConnection(),並傳入其本身的 ConnectionLifecycleCallback

這樣兩端都會透過 ConnectionLifecycleCallback.onConnectionInitiated() 回呼通知連線啟動程序,且現在都必須分別透過呼叫 acceptConnection()rejectConnection() 選擇要接受或拒絕連線。

這時,應用程式可視需要提示使用者接受連線。詳情請參閱驗證連線一文。

當兩方都回應後,系統會透過 ConnectionLifecycleCallback.onConnectionResult() 回呼通知結果。如果雙方都接受連線,則在回呼中提供的 ConnectionResolution 將會成功,系統會將連線視為已連線,隨後可以開始傳輸酬載。

交換資料

建立連線後,進一步使用 API 是對稱的,因此廣告客戶和探索者不再有區別。

兩側現在可將資料以 Payload 物件交換。支援的酬載有 3 種類型:

  • BYTES 位元組陣列限制為 32k;適合用來傳送中繼資料或控制訊息等內容。
  • FILE 任何大小的檔案;這些檔案會從應用程式轉移至網路介面,且跨越界線範圍。
  • STREAM 即時產生的資料串流,如錄製音訊/視訊,之前沒有已知最終大小。

傳送方使用 sendPayload() 方法傳送酬載。這個方法可以多次叫用,但由於我們保證會依循序傳送,因此第二次酬載將排入傳送佇列,直到第一個酬載完成為止。

接收者可以在收到新的連入酬載時叫用 PayloadCallback.onPayloadReceived() 回呼。

傳送者和接收器都能預期叫用 PayloadCallback.onPayloadTransferUpdate() 回呼,以分別更新傳出和傳入酬載的進度。

已建立的連線具有雙工功能,這表示廣告客戶和探索者可以同時傳送和接收酬載。

正在中斷通話

最後,disconnectFromEndpoint() 會中斷特定遠端端點的連線,stopAllEndpoints() 則會中斷所有連線端點的連線。遠端端點會透過 ConnectionLifecycleCallback.onDisconnected() 發出連線中斷通知。

資料收集

使用 Google Play 服務 Nearby SDK 時,系統會收集用量分析資訊,藉此改善使用體驗。

  • 效能指標:使用 Nearby SDK 掃描及連線裝置時,系統會收集探索和連線延遲時間、可靠性和總處理量。
  • 裝置資訊:系統會收集裝置型號、國家/地區、版本和應用程式套件名稱,並與該成效指標建立關聯,以識別特定區域和裝置的特定區塊。

如要允許使用者允許或拒絕這個集合,請依序前往「設定」>「Google」>「使用狀況與診斷」。