How To Receive Multicast Packets On Android
Solution 1:
Lukas gives the best explanation and examples that I've seen on his blog: http://codeisland.org/2012/udp-multicast-on-android
In summary: 1. You need the permissions:
<uses-permissionandroid:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" /><uses-permissionandroid:name="android.permission.INTERNET"/><uses-permissionandroid:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permissionandroid:name="android.permission.ACCESS_WIFI_STATE"/>
2. You need a lock:
WifiManager wifi = (WifiManager)getSystemService(Context.WIFI_SERVICE);
if (wifi != null){
WifiManager.MulticastLock lock = wifi.createMulticastLock("mylock");
lock.acquire();
}
3. You have to have a device that supports receiving multicast. Or you can follow his work around for rooted devices.
Solution 2:
As it seems, there is no proper multicast support in the emulator.
Here's a bug report and related thread. It is being fixed for froyo.
Solution 3:
You need to do something like this
WifiManagerwifi= (WifiManager)getSystemService( Context.WIFI_SERVICE );
if(wifi != null)
{
MulticastLockmcLock= wifi.createMulticastLock("mylock");
mcLock.acquire();
}
Reference: http://developer.android.com/reference/android/net/wifi/WifiManager.MulticastLock.html
Solution 4:
I read all 2.1 devices not supporting IGMP stack.
IGMP was missing on different HTC, Samsung, and Motorola devices of all android version from 2.1 up to 3.2.
Link in which i read http://www.programmingmobile.com/2012/01/multicast-and-android-big-headache.html
Post a Comment for "How To Receive Multicast Packets On Android"