Android杂谈--HTC等手机接收不到UDP广播报文的解决方案
2024-10-12 21:43:34
最近遇到个问题,在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
最新文章
- libtcc使用问题一二
- UML系列03之 UML类图(二)
- Linux功能-环境变量
- python写的自动签到脚本。
- bzoj3140: [Hnoi2013]消毒
- php转化输入日期为Unix 纪元到当前时间的秒数 日期筛选
- linux awk命令详细使用方法
- [原创]ubuntu14.04部署ELK+redis日志分析系统
- Spring Boot使用Maven打包替换资源文件占位符
- test request&;&;response 代码实现
- maven打包并上传到nexus3私服
- Flask框架(一)
- Peter&#39;s smokes -poj 2509
- Android studio 中,遇到报错:ERROR: x86_64 emulation currently requires hardware acceleration! CPU acceleration status:HAXM must be updated(version 1.1.1<;6.0.1)的解决方法
- AutoCAD开发3--修改文字图层,颜色
- 转载:Unity3D游戏对象消失enabled、Destroy与active的区别
- Color the ball(HDU1556)树状数组
- Why do people integrate Spark with TensorFlow even if there is a distributed TensorFlow framework?
- QoS的构建模块与机制
- Django框架model实现数据库增删查改