为了正常的体验网站,请在浏览器设置里面开启Javascript功能!
首页 > Android中怎么打开Wifi的组播功能(学习资料)

Android中怎么打开Wifi的组播功能(学习资料)

2018-04-29 4页 doc 17KB 39阅读

用户头像

is_482581

暂无简介

举报
Android中怎么打开Wifi的组播功能(学习资料)Android中怎么打开Wifi的组播功能(学习资料) Android中怎么打开Wifi的组播功能 了解Android的都知道Android的wifi在默认的情况下是不接收组播的,默认情况下,应用是不接收组播信息的,这样要接收处理的报文太多,很快就会把电池用尽。要知道移动设备(特指电话一类的,平板要好得多)目前最重要的因素是电量。下面就看看怎么样打开Android中Wifi的组播功能。主要有以下几个步骤: 在Manifest文件中加入:android.permission.CHANGE_WIFI_MULTICAST_STA...
Android中怎么打开Wifi的组播功能(学习资料)
Android中怎么打开Wifi的组播功能(学习资料) Android中怎么打开Wifi的组播功能 了解Android的都知道Android的wifi在默认的情况下是不接收组播的,默认情况下,应用是不接收组播信息的,这样要接收处理的报文太多,很快就会把电池用尽。要知道移动设备(特指电话一类的,平板要好得多)目前最重要的因素是电量。下面就看看怎么样打开Android中Wifi的组播功能。主要有以下几个步骤: 在Manifest文件中加入:android.permission.CHANGE_WIFI_MULTICAST_STATE,这个权限 获取到MulticastLock对象,这个对象不能直接实例化,要通过WifiManager间接得到,工厂模式 调用MulticastLock对象的acquire方法,获取到组播锁 相应的,用完组播,为了不浪费电力,要调用MulticastLock的release方法释放锁 下面写了个简单示例,通过组播发现服务器。 Activity写的比较简单 public class MulticastDemoActivity extends Activity { MulticastLock multicastLock; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); allowMulticast(); try { NetUtil.findServerIpAddress(); } catch (IOException e) { throw new RuntimeException(e); } Log.d("multicast.demo", "find ip ok."); multicastLock.release(); } private void allowMulticast(){ WifiManager wifiManager=(WifiManager)getSystemService(Context.WIFI_SERVICE); multicastLock=wifiManager.createMulticastLock("multicast.test"); multicastLock.acquire(); } } 在Activity中打开和释放组播锁。使用组播发送报文和接收ip地址信息的工具类代码: public class NetUtil { private static final String TAG="Net.Utils"; private static final int MULTICAST_PORT=5111; private static final String GROUP_IP="224.5.0.7"; private static byte[] sendData; static{ sendData=new byte[4]; // 0xEE78F1FB sendData[3] = (byte) 0xEE; sendData[2] = (byte) 0×78; sendData[1] = (byte) 0xF1; sendData[0] = (byte) 0xFB; } public static String findServerIpAddress() throws IOException{ String ip=null; MulticastSocket multicastSocket=new MulticastSocket(MULTICAST_PORT); multicastSocket.setLoopbackMode(true); InetAddress group = InetAddress.getByName(GROUP_IP); multicastSocket.joinGroup(group); DatagramPacket packet=new DatagramPacket(sendData, sendData.length,group,MULTICAST_PORT); for(;;){ multicastSocket.send(packet); Log.d(TAG,">>>send packet ok"); byte[] receiveData=new byte[256]; packet=new DatagramPacket(receiveData, receiveData.length); multicastSocket.receive(packet); String packetIpAddress=packet.getAddress().toString(); packetIpAddress=packetIpAddress.substring(1, packetIpAddress.length()); Log.d(TAG,"packet ip address: "+packetIpAddress); StringBuilder packetContent=new StringBuilder(); for(int i=0;i
/
本文档为【Android中怎么打开Wifi的组播功能(学习资料)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索