附近连接 API:为什么 Wi-Fi Direct 不是我的 Galaxy S8 支持的媒体?

Nearby Connections API: Why isn't Wi-Fi Direct a supported medium for my Galaxy S8?

我正在开发一个使用 Nearby Connections API 的应用程序。连接和文件传输似乎在其他设备上基本正常,但我在使用 Samsung Galaxy S8 时注意到一些奇怪的行为。查看日志后,我发现了这条消息:

NearbyConnections: Computed the intersection of supported mediums with endpoint F77D. Between their supported mediums ([ WIFI_DIRECT WIFI_HOTSPOT BLE_L2CAP BLUETOOTH BLE ]) and my supported mediums ([ WIFI_HOTSPOT BLUETOOTH BLE NFC ]) we decided on the combined subset ([ WIFI_HOTSPOT BLUETOOTH BLE ]). [CONTEXT service_id=54 ]

重要的部分是my supported mediums ([ WIFI_HOTSPOT BLUETOOTH BLE NFC ]),缺少WIFI_DIRECT,这意味着我的S8无法通过Wi-Fi Direct与其他phone建立连接。这似乎很奇怪,因为我测试过的所有其他 phone 都支持 Wi-Fi Direct。这也很奇怪,因为我的S8可以使用Wi-Fi Direct来完成不同的任务,在设置中的Wi-Fi Direct界面this screenshot中可以看到。

附近连接无法在我的 S8 上使用 Wi-Fi Direct 是否有特殊原因?

附近连接仅在 Android R+ 上使用 WiFi Direct。这是因为 Q 中的 API 已更新以允许静默连接(w/o 用户对话框),这是附近连接使用的蓝牙 -> WiFi 升级过程所必需的。然而,在 Q 中,当通过 WiFi Direct 扫描设备时存在一个错误,当它被触发时会导致整个 WiFi 服务崩溃。因此,我们只在 R+ 上使用新的 API。

(免责声明:我在 Nearby Connections 工作)