Moto G 不通过 WIFI 网络接收 UDP 数据包

Ash*_*ora -1 android udp

我的接收器在 Moto G 中没有收到任何 UDP 数据包,但它适用于其他设备。

通过 WiFi 网络,我已经成功地从其他设备发送了 UDP 数据包。但是在 Moto E 和 Moto G 中它不起作用。

谁能帮助弄清楚为什么它不适用于 Moto G/E?

我的问题是我没有通过 WiFi 网络接收任何 UDP 数据包。

Anu*_*ain 5

我遇到了完全相同的问题!UDP 数据包适用于除 Moto E 之外的每部手机。然后我发现了一些非常有趣的信息interwebz

问题是 Moto E(可能还有 Moto G)需要应用程序来获取WifiManager.MulticastLock. 从android 文档-

允许应用程序接收 Wifi 多播数据包。通常,Wifi 堆栈会过滤掉未明确寻址到此设备的数据包。获取 MulticastLock 将导致堆栈接收寻址到多播地址的数据包。处理这些额外的数据包会导致明显的电池消耗,在不需要时应禁用。

您需要为您的应用添加以下权限 -

<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
Run Code Online (Sandbox Code Playgroud)

然后在你的代码中获得一个像这样的锁 -

WifiManager wifi = (WifiManager)getSystemService( Context.WIFI_SERVICE );
if(wifi != null){
    WifiManager.MulticastLock lock = wifi.createMulticastLock("Log_Tag");
    lock.acquire();
}
Run Code Online (Sandbox Code Playgroud)