0

Nearby Share 有时会使用蓝牙传输文件,因此速度很慢。有时传输超过 100 MB 的文件一点也不方便。最初我认为蓝牙仅用于握手目的。但后来我意识到文件本身是通过蓝牙传输的。我很想知道为什么文件可以通过wifi直接传输时通过蓝牙传输。包括 Google Files 在内的许多第三方应用程序都使用 wifi 直接传输文件。那么为什么像附近共享这样的内置功能应该使用蓝牙。Nearby Share 本身的唯一目的是在没有互联网的情况下通过 wifi 直接实现快速文件传输。因此,如果文件是通过蓝牙传输的,则使用附近共享毫无意义。

我也很想知道附近共享中存在的各种文件传输模式。共有三种模式:数据模式、仅 Wifi 模式和无 Internet 模式。我真的很想知道为什么当附近共享用于在没有互联网的情况下传输文件时,为什么需要互联网连接来传输文件。它是否用于 Web RTC 中的握手目的?

4

1 回答 1

1

(免责声明:我在附近共享上工作)

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。TDLS 有助于避免最后一个问题,但它有局限性(例如,如果没有为它设置 AP,它不会使用 40/80/160MHz 带宽,如果 AP 在 2.4 上,它将通过 2.4GHz 发送赫兹)。


其他可能的故障包括设备进入错误状态(切换飞行模式可以提供帮助)、Android 版本太低(理想情况下两台设备都应该是 R+,因为几乎不可能修复旧 Android 操作系统版本上的错误,即使我们尝试),或者只是运气不好。

于 2022-01-31T21:05:03.690 回答