Java 使用android接收广播UDP消息
我最近尝试移植需要接收(udp)广播消息的应用程序。我的udp接收代码在pc(windows/linux)上工作,但在android上接收广播消息似乎有一些问题,然而,我似乎能够用android发送广播消息,并从pc版本接收确认数据包 试图找到解决方案,但接近答案的是,它可能在我的设备上不起作用,而且确实有任何关于我如何确保这一点的信息,所以我觉得应该有线程来确保它确实是硬件/固件问题,而不是我的代码中的问题,比如说,如果我忘记启用某个特定于android的东西?使用galaxy S(kitkat)和galaxy s3 mini(kitkat)进行测试,两者都有相同的问题 (在onCreate下) 在udpserver类下Java 使用android接收广播UDP消息,java,android,udp,broadcast,Java,Android,Udp,Broadcast,我最近尝试移植需要接收(udp)广播消息的应用程序。我的udp接收代码在pc(windows/linux)上工作,但在android上接收广播消息似乎有一些问题,然而,我似乎能够用android发送广播消息,并从pc版本接收确认数据包 试图找到解决方案,但接近答案的是,它可能在我的设备上不起作用,而且确实有任何关于我如何确保这一点的信息,所以我觉得应该有线程来确保它确实是硬件/固件问题,而不是我的代码中的问题,比如说,如果我忘记启用某个特定于android的东西?使用galaxy S(kitka
public volatile boolean keepServerRunning=true;
public void run()
{
boolean none=true;
try {
byte[] buffer = new byte[Settings.udppacketsize];
while (keepServerRunning==true)
{
DatagramPacket inpacket = new DatagramPacket(buffer,buffer.length);
Settings.socket.setSoTimeout(1000);
try
{
Settings.socket.receive(inpacket);
none=false;
}
catch (SocketTimeoutException e)
{
none=true;
}
if (none==false)
{
handler handler = new handler(Settings.socket, inpacket);
handler.start();
}
}
Settings.socket.close();
} catch (IOException e)
{
}
}
wifilock的日志记录提供:
02-01 16:34:07.516 17365-17365/com.test.oappi.qft I/Wifilock﹕ multicastLock.isHeld() = false
02-01 16:34:07.516 17365-17365/com.test.oappi.qft I/wifilock﹕ multicastLock.toString() = MulticastLock{ 425b3ff8; refcounted: refcount = 0 }
02-01 16:34:07.516 17365-17365/com.test.oappi.qft I/wifilock﹕ multicastLock.isHeld() = true
02-01 16:34:07.516 17365-17365/com.test.oappi.qft I/wifilock﹕ multicastLock.toString() = MulticastLock{ 425b3ff8; held; refcounted: refcount = 1 }
清单权限
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"/>
由于wifi状态肯定会发生变化,这是否意味着我真的有两部android手机无法接收广播消息,或者我尝试开发的API版本很重要,因为我正在尝试开发API lvl 10。如果有人知道如何检查设备的广播接收能力,请告知
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE"/>