Android Wi-Fi Direct 在连接前发送数据

Posted

技术标签:

【中文标题】Android Wi-Fi Direct 在连接前发送数据【英文标题】:Android Wi-Fi Direct send data before connection 【发布时间】:2016-03-02 19:00:47 【问题描述】:

我正在开发一个使用 Wi-Fi 直接连接设备的应用。我在这里阅读了如何连接、发送数据和断开设备连接:http://developer.android.com/guide/topics/connectivity/wifip2p.html。现在,我想在连接之前发送一些数据,以显示有关设备的一些信息。我用谷歌搜索了这个,但我找到的唯一答案是:Sending data in Android WiFi Direct service discovery instead of connecting,它使用服务发现。

有没有一种方法可以在配对过程之前发送数据而不使用服务发现?如果我不能,你能解释一下服务发现和普通的 Wi-Fi P2P 有什么区别吗?

谢谢。

【问题讨论】:

【参考方案1】:

除非您有其他可以依赖的媒介(例如某种可以用来交换信息的后端),否则您将需要Service Discovery

我已经写了一些关于WifiP2pService Discovery的答案,建议你先看看。最后一个应该是你最感兴趣的。

    Why is discovering peers for Android WifiDirect so unreliable Wi-fi P2P. Inform all peers available of some event Wifi P2P service discovery works intermittently

为了回答您关于WifiP2pServiceDiscovery 之间区别的问题,让我用一个小比喻:

想象一下你在机场,你刚刚降落在一个外国 国家。你要离开免税区,你会看到所有的人 正在等待降落在机场的人,就像 你做到了。你需要找到你的出租车司机。你知道他应该是 拿着一张写着你名字的小纸等着你。你 可以看到很多这样的人,每个人都拿着一个 一张纸,上面写着名字。你需要通读许多 直到你找到你的那个。但你不必说话 所有这些人。你只会和你的出租车司机交谈,你会 可能不仅仅是你的名字。

现在让我解释一下……每个拿着一张纸的人都代表一个Broadcasted Service。每个broadcasted service 都可以携带一小段信息(人名)。信息的空间非常有限(你不能在纸上写太多),并且是“相对永久的”(需要一点改变它)。当您在寻找合适的人时,您正在执行Service Discovery。您无需与所有这些人交谈即可阅读这些文件上的名称 - 您无需连接到他们(WiFiP2p-wise)。当您找到您感兴趣的人时,您与该人交谈 - 您建立了 WiFiP2p 连接。现在您可以随心所欲地与他交谈 - 您可以通过连接传递尽可能多的数据。

【讨论】:

非常感谢,您的回答很清楚,而且做得很好。不幸的是,我正在考虑发送图像和其他一些信息之类的数据,但似乎这是不可能的。我将对此进行更多研究,以了解我可以将多少数据放入广播中。谢谢,+1 并接受。 是的,您可能无法发送图像。也许你可以广播一个图片的网址(我不记得广播消息的限制)

以上是关于Android Wi-Fi Direct 在连接前发送数据的主要内容,如果未能解决你的问题,请参考以下文章

Android Wi-Fi Direct P2P 连接多个设备

Android Wi-Fi Direct:onPeersAvailable

通过 Wi-Fi Direct 传输文件时是不是可以使用移动数据?

我可以在应用程序中使用 Wi-Fi Direct 和蜂窝数据吗?

Wi-Fi Direct 用于 VANET 中的 wifihonk,无需连接

32 - 如何克服 Android 中 Wi-Fi Direct 32 对凭据的限制?