1

我需要能够在这部手机的 Wifi 上接收广播。这是 HTC Desire,大约 2 岁,运行 Android 2.2。

我遵循了我找到的文档和一些示例代码,并最终使用了这段代码来启用多播:

mWifiManager = (WifiManager)getSystemService(Context.WIFI_SERVICE);
WifiManager.MulticastLock multicastLock = mWifiManager.createMulticastLock("net.inside.broadcast");
multicastLock.setReferenceCounted(true);
multicastLock.acquire();
Log.i("BCXXX", "multicastLock.isHeld() = " + multicastLock.isHeld());
Log.i("BCXXX", "multicastLock.toString() = " + multicastLock.toString());       

日志输出如下:

I/BCXXX   ( 3302): multicastLock.isHeld() = true
I/BCXXX   ( 3302): multicastLock.toString() = MulticastLock{ 45fa2b88; held; refcounted: refcount = 1 }

这似乎证实了应该保持多播锁定,这意味着多播应该可以工作。然而,事实并非如此。除了它自己的广播数据包,即它发送给其他应用程序的广播数据包,Android 应用程序根本不会收到任何广播数据包。我应该提到的其他机器可以很好地看到Android手机并接收它的广播消息。我尝试将数据包寻址到 255.255.255.255 和 192.168.0.255(192.168.0。显然是 LAN 中每个人都连接到的网络)。

这是一个使用 Unity 3.5 构建的项目,Windows 和 OS X 构建都按预期工作。Android 插件确实被调用(从日志条目中可以看出)。

有什么想法吗?

4

0 回答 0