在Android设备上获取WifiManager.MulticastLock - 可靠且一致吗?

时间:2013-10-05 07:29:40

标签: android jmdns

我正在考虑开发一款Android应用程序,作为其功能的一部分,可以发送和接收来自当前连接到WiFi网络的所有设备的广播消息。

虽然很多开发人员已经建议这样的要求需要应用程序来获取MulticastLock,但有experiences out there说:

  1. 无法成功获取MulticastLock,因为acquire()方法不会返回所请求操作的任何状态。
  2. 即使您确实获得了锁定,也无法保证WiFi堆栈不会过滤掉未定向到设备的数据包。
  3. 还有其他人认为多播锁在版本2.3.3及更高版本上可靠运行,并且可靠性问题仅适用于运行2.3.2及更低版本的设备。

    他们中的一些人说没有任何保证(现在或未来的设备),因为对广播和多播的支持是芯片组控制的功能,并且OEM拥有最终决定权。他们认为电池消耗是OEM允许或拒绝芯片组软件配置的主要动机。

    所以,在我深入研究我的项目之前,我想知道这个问题的当前状态是什么,以及我想做的是否可行,即不涉及猜测工作。如果有解决方法,我愿意实施,只要我知道它将可靠地工作。请分享您的意见和经验。提前谢谢。

1 个答案:

答案 0 :(得分:1)

我使用了基于DLNA的Android应用程序(如iMediaShareWDTV Live Media Player),它们使用多播进行发现和流式传输,虽然这是在JellyBean而不是在2.3.3之前。这些应用程序能够发现网络上的其他设备。这很可能是2.3.3之前的问题。

上述两个应用都表示他们的应用适用于Android 2.1或2.2及更高版本