Android杂谈--HTC等手机接收不到UDP广播报文的解决方案_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > Android杂谈--HTC等手机接收不到UDP广播报文的解决方案

Android杂谈--HTC等手机接收不到UDP广播报文的解决方案

 2013/11/25 15:34:04  娄立军  博客园  我要评论(0)
  • 摘要:最近遇到个问题,在android手机上发送UDP报文的时候,HTC等机型(测试用HTCnewone)接收不到广播报文,而其他的samsung,huawei,xiaomi,nexus等等均没有问题。所以猜测应该是HTC优化了系统,把它给关掉了。由于手机开启UDP广播功能不仅耗电,而且占用系统资源。可能有些手机厂家默认把这个功能给关掉了,你若想要用手机来发送接收UDP报文,得先申请,才能使用这个功能。解决方案:1.在oncreate()方法里面实例化一个WifiManager
  • 标签:解决方案 手机 android 解决 HTC

最近遇到个问题,在android手机上发送UDP报文的时候,HTC等机型(测试用HTC new one)接收不到广播报文,而其他的samsung, huawei, xiaomi, nexus等等均没有问题。

所以猜测应该是HTC优化了系统,把它给关掉了。由于手机开启UDP广播功能不仅耗电,而且占用系统资源。可能有些手机厂家默认把这个功能给关掉了,

你若想要用手机来发送接收UDP报文,得先申请,才能使用这个功能。

解决方案:

1.在oncreate()方法里面实例化一个WifiManager.MulticastLock 对象lock

WifiManager manager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE); WifiManager.MulticastLock lock= manager.createMulticastLock("localWifi");

2. 在调用广播发送、接收报文之前先调用lock.acquire()方法

3. 用完之后及时调用lock.release()释放资源,否决多次调用lock.acquire()方法,程序可能会崩

例如:

Caused by: java.lang.UnsupportedOperationException: Exceeded maximum number of wifi locks

另外,需要加入权限

<uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />

这样HTC new one即可发送和接收广播报文了

 

参考:

http://developer.android.com/reference/android/net/wifi/WifiManager.MulticastLock.html

http://blog.csdn.net/lvron/article/details/6606755

 

发表评论
用户名: 匿名