Android UDP通信

来源:互联网 发布:水产加工erp软件 编辑:程序博客网 时间:2024/05/01 11:06

同一套程序在中兴手机和华为手机上可以接收到UDP广播报文,但在HTC手机上却接收不到?


问题原因:(仅猜测而已,未经过验证)

手机开启UDP广播功能不仅耗电,而且占用系统资源。可能有些手机厂家默认把这个功能给关掉了,

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

具体如何申请和释放:

1、可先在oncreate()方法里面实例化一个WifiManager.MulticastLock 对象lock;具体如下:

[java] view plaincopy
  1. WifiManager manager = (WifiManager) this  
  2.                 .getSystemService(Context.WIFI_SERVICE);  
  3. WifiManager.MulticastLock lock= manager.createMulticastLock("test wifi");  

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手机也能正常发送接收到广播报文。

小结:事出有因,多想想为啥,这样我们才有可能找到问题的真正原因。

0 0