Java 使用android接收广播UDP消息

Java 使用android接收广播UDP消息,java,android,udp,broadcast,Java,Android,Udp,Broadcast,我最近尝试移植需要接收(udp)广播消息的应用程序。我的udp接收代码在pc(windows/linux)上工作,但在android上接收广播消息似乎有一些问题,然而,我似乎能够用android发送广播消息,并从pc版本接收确认数据包 试图找到解决方案,但接近答案的是,它可能在我的设备上不起作用,而且确实有任何关于我如何确保这一点的信息,所以我觉得应该有线程来确保它确实是硬件/固件问题,而不是我的代码中的问题,比如说,如果我忘记启用某个特定于android的东西?使用galaxy S(kitka

我最近尝试移植需要接收(udp)广播消息的应用程序。我的udp接收代码在pc(windows/linux)上工作,但在android上接收广播消息似乎有一些问题,然而,我似乎能够用android发送广播消息,并从pc版本接收确认数据包

试图找到解决方案,但接近答案的是,它可能在我的设备上不起作用,而且确实有任何关于我如何确保这一点的信息,所以我觉得应该有线程来确保它确实是硬件/固件问题,而不是我的代码中的问题,比如说,如果我忘记启用某个特定于android的东西?使用galaxy S(kitkat)和galaxy s3 mini(kitkat)进行测试,两者都有相同的问题

(在onCreate下)

在udpserver类下

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"/>