Android杂谈--HTC等手机接收不到UDP广播报文的解决方案
2013-11-25 14:09
429 查看
最近遇到个问题,在android手机上发送UDP报文的时候,HTC等机型(测试用HTC new one)接收不到广播报文,而其他的samsung, huawei, xiaomi, nexus等等均没有问题。
所以猜测应该是HTC优化了系统,把它给关掉了。由于手机开启UDP广播功能不仅耗电,而且占用系统资源。可能有些手机厂家默认把这个功能给关掉了,
你若想要用手机来发送接收UDP报文,得先申请,才能使用这个功能。
解决方案:
1.在oncreate()方法里面实例化一个WifiManager.MulticastLock 对象lock
2. 在调用广播发送、接收报文之前先调用lock.acquire()方法
3. 用完之后及时调用lock.release()释放资源,否决多次调用lock.acquire()方法,程序可能会崩
例如:
另外,需要加入权限
这样HTC new one即可发送和接收广播报文了
参考:
http://developer.android.com/reference/android/net/wifi/WifiManager.MulticastLock.html
/article/2342181.html
所以猜测应该是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
/article/2342181.html
相关文章推荐
- Android手机接收不到UDP报文
- Android手机接收不到UDP报文
- 基于Android热点的局域网UDP广播,部分手机收不到UDP报文的问题
- Android收发UDP报文详解 及 优雅解决接收不到问题
- Android使用wifi通过UDP协议发送广播数据包给PC接收不到问题解决方法
- android 开机广播接收不到的原因
- weex接收来自Android手机的Broadcast广播消息
- Android接收不到系统广播的原因
- Android开发静态注册广播接收不到的问题的解决办法
- 【案例分析】android广播接收不到原因分析
- Android静态广播接收不到(app之间数据传递)
- Android发送和接收UDP广播
- Android手机实现同一端口发送和接收UDP数据
- 网络UDP广播包发不出去或接收不到问题
- Android客户端接收PC端UDP广播
- Android小米手机接收不到开机广播(个人笔记)
- 记录关于android广播(无序)接收不到的问题解决思路
- android如何推送一个消息给特定的手机,别的手机接收不到
- android接收不到广播的可能原因
- [android] 手机卫士接收打电话广播显示号码归属地