簡體   English   中英

為什么使用 Android 附近共享時通過藍牙傳輸文件?

[英]Why are files transferred via bluetooth when using Android Nearby Share?

Nearby Share 有時會使用藍牙傳輸文件,因此速度很慢。 有時傳輸超過 100 MB 的文件一點也不方便。 最初我認為藍牙僅用於握手目的。 但后來我意識到文件本身是通過藍牙傳輸的。 我很想知道為什么文件可以通過wifi直接傳輸時通過藍牙傳輸。 包括 Google Files 在內的許多第三方應用程序都使用 wifi 直接傳輸文件。 那么為什么像附近共享這樣的內置功能應該使用藍牙。 Nearby Share 本身的唯一目的是在沒有互聯網的情況下通過 wifi 直接實現快速文件傳輸。 因此,如果文件是通過藍牙傳輸的,則使用附近共享毫無意義。

我也很想知道附近共享中存在的各種文件傳輸模式。 共有三種模式:數據模式、僅 Wifi 模式和無 Internet 模式。 我真的很想知道為什么當附近共享用於在沒有互聯網的情況下傳輸文件時,為什么需要互聯網連接來傳輸文件。 它是否用於 Web RTC 中的握手目的?

(免責聲明:我在附近共享上工作)

Nearby Share 將始終在發送大於 1MB 的文件之前嘗試升級到 WiFi。 在回退機制啟動之前,該升級有 10 秒的寬限期,文件作為最后的手段通過藍牙發送。 即使在回退到藍牙后,設備仍會繼續嘗試在后台升級到 WiFi,但有些故障是無法恢復的,文件將完全通過藍牙發送。 請注意,url 和非常小的文件將立即通過藍牙發送。


由於多種原因,此升級可能會失敗。 最常見的是,這是一個並發問題。 相同的無線電用於藍牙、p2p WiFi 和您的正常接入點連接,並且必須相應地分時。 如果這三個人都想在不同的頻道上,你會錯過消息——這是一個保證。 如果這些消息很重要,例如通過 WiFi Direct 連接時的身份驗證幀,則連接將失敗。 如果這些消息不太重要,它們可能會被重新發送,直到成功接收,但它會降低傳輸的吞吐量,因此即使是 5GHz WiFi 也可能看起來像藍牙一樣慢。

附近共享試圖通過幾種方式避免這種情況。 當法規允許時,我們將嘗試在與接入點相同的頻道上啟動 WiFi Direct 組。 這樣手機就不用分時了(雖然確實有和接入點發來的消息沖突的副作用。但一般情況下雙方都會回退一個隨機量重傳,損失小於損失多通道並發)。 不幸的是,許多國家確實有規定只允許在室內使用某些(或所有)5GHz 信道——在這種情況下,可以設置接入點來使用它,但 WiFi Direct 不能。

我們也更喜歡 WiFi Direct 等媒體而不是 Hotspot,因為 WiFi Direct 通常使用 CTS2SELF 幀來宣傳“在此期間請勿傳輸”。 不幸的是,它不像“我要離開頻道,不要嘗試與我交流”那樣簡單直接的消息——CTS2SELF 有一個副作用,就是讓接入點上的所有通信都安靜下來,即使它不是針對手機的——但它確實明白了這一點。

我們暫停任何我們可以控制的藍牙活動,以減少與其分時共享的需要。 在某些嚴重的情況下,如果 OEM 實施了過於激進的分時,我們將關閉藍牙無線電以強制中斷藍牙活動,但這具有破壞性並且通常會導致糟糕的用戶體驗。

我們可能會嘗試通過您的接入點本身發送數據,而不是設置 WiFi Direct。 這可以避免上面描述的 MCC 情況,但代價是數據需要重新加密(因為我們不知道 LAN 上連接了哪些其他設備並且可能被竊聽),並且它確實引入了另一個躍點,因為即使設備並排,數據也需要通過 AP 傳輸到 go。 TDLS 有助於避免最后一個問題,但它有一些限制(例如,如果沒有為它設置 AP,它不會使用 40/80/160MHz 帶寬,如果 AP 在 2.4 上,它將通過 2.4GHz 發送赫茲)。


其他可能的故障包括設備進入錯誤的 state(切換飛行模式可以在這里提供幫助),Android 版本太低(理想情況下兩個設備都應該是 R+,因為幾乎不可能修復舊 ZE84E30B9390CDB46DZ 版本的錯誤,即使我們嘗試),或者只是運氣不好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM