1

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

虽然许多开发人员建议这样的要求需要应用程序来获取 MulticastLock,但有经验表明:

  1. 不能依赖成功获取 MulticastLock,因为 acquire() 方法不会返回请求操作的任何状态。
  2. 即使您确实获得了锁,也不能保证 WiFi 堆栈不会过滤掉未针对设备的数据包。

还有其他人说多播锁在 2.3.3 及更高版本上可靠工作,可靠性问题仅适用于运行 2.3.2 及更低版本的设备。

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

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

4

1 回答 1

1

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

上面提到的两个应用程序都表示他们的应用程序适用于 Android 版本 2.1 或 2.2 及更高版本

于 2013-10-06T09:16:27.853 回答