WIFI(1)WIFI直连 + socket 可以用来实现类似蓝牙传输数据的功能

  从Android4.0(API Level=14)开始,允许通过Wi-Fi模块在两个移动设备之间建立直接连接(这种技术称为Wi-Fi Direct),这种连接不需要无线路由作为中介,而只是像蓝牙一样在两个设备之间直接建立的数据传输通道。在Android SDK中提供了一些API,通过这些API可以发现其它支持Wi-Fi Direct的设备,也可以接收其它设备的Wi-Fi Direct请求。在Wi-Fi Direct出现之前,通常使用蓝牙或利用无线路由连接多部Android设备,蓝牙的有效距离比较短,而且传输速率不如Wi-Fi。不过有了Wi-Fi Direct后,两部设备可以直接连接,既方便又快速,非常适合数据分享。

WIFI 直连基本基本过程

  通常WIFI 直连设备即有socket客户端,又有socket服务端.

  1,搜索附近WIFI 直连设备

  2,连接WIFI 直连设备,

  3,用socket通信.

Wi-Fi Direct的核心API WifiP2pManager类   该类中提供了允许用户发现、请求和连接其它支持Wi-Fi Direct设备的API。  
Wi-Fi Direct广播接收器类   用于监听Wi-Fi Direct请求的广播接收器.  
事件接口   被Wi-Fi Direct框架检测到的事件通知,例如,终止连接、发现新的Wi-Fi Direct设备等。  
Wi-Fi Direct广播接收器的广播消息 WifiP2pManager.WIFI_P2P_STATE_CHANGED_ACTION   检测Wi-Fi是否可用,并且将检测结果通知相应的窗口。  
WifiP2pManager.WIFI_P2P_PEERS_CHANGED_ACTION  

调用WifiP2pManager.requestPeers方法获取成功连接的设备列表。

注意它是搜索完所有设备后产生一个广播消息,而蓝牙是搜到一个产生一个广播消息
 
WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION   响应Wi-Fi连接状态(连接或断开)。  
WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION   响应设备的Wi-Fi状态变化。  
搜索Wi-Fi Direct设备 1,开始搜索

  使用Wi-Fi Direct进行通信,首先要搜索周围有没有其它的Wi-Fi Direct设备。完成这项工作需要调用WifiP2pManager.discoverPeers方法.

1 mChannel = mManager.initialize(this, getMainLooper(), null); 2 mManager.discoverPeers(mChannel, new WifiP2pManager.ActionListener() 3 { 4 // 成功发现周围有Wi-Fi Direct设备 5 @Override 6 public void onSuccess() {//只通知成功,并没有数据 7 ... 8 } 9 // 未发现周围有Wi-Fi Direct设备 10 @Override 11 public void onFailure(int reasonCode) {//只通知失败,并没有数据 12 ... 13 } 14 });

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzsgyz.html