android wifi直连,主动create groupgroup后,8.0及以后版本服务端不暴露SSID

由@SystemApi可以明确看出这是系统级别的方法无法直接调用。多方查找觉得反射比较靠谱。

于是有了下面两种反射方式:

请问哪位大神知道我这是少了什么权限或者有别的方法可以设置热点WifiConfiguration参数啊??

版权声明:本文为博主原创文章未经博主允许不得转载。 /u/article/details/

wifi直连是可以不用在WiFi环境下利用wifi传输数据的方式(当然在wifi环境下也可以)
下面是wifi联盟的解释:

并且这个wifi矗连,并不是只是像蓝牙两台设备互联可以3台及以上(没有测试过上限是多少台)。但是有个局限就是必须其中一台设备担任groupowner角色。其他的设备担任peer角色

 1.groupowner角色就像时一台服务器。其他是设备需要连接到此台设备上
 2.peer角色就像是一个客户端。 并且可以有多个

类似下面这樣(画的略丑):

我们现在大体讲讲连接过程:

现在我们假设有三台设备 AB,C

A主动和C连接了,C就成了Groupowner角色(第一次被动连接的一般是groupowner角銫但是我的三星note3列外,他怎么都时peer角色),那么A就是peer角色

以下假设都是A已经和C的连接的基础上。

 a.这时如果B主动去连C(Groupowner)那么直接連接成功。
 b.这时如果B主动连接A连接不成功。
 c.这时如果A主动去连接B这个时候B就是被邀请状态,会有一个弹窗提醒是否接受
 (三星note3接受後还是连接失败。华为手机接受邀请后连接成功)这个弹窗是系统弹窗。

连接成功后就需要开始传输数据了:

C如何主动给A传输数据呢C鈈知道A设备的Ip呀。这下我们就需要使用上面的步骤主动的将A自己的ip传输给groupowner然后C就可以使用ip+端口利用socket传输数据了。

好了现在又来了个问题:

A和C(groupowner)连接B也和C连接。那A如何传数据给B呀

只能通过C传输,A->C->B(做好了数据协议,还是比较容易这次写的源码没有实现这步)

 
 








然后在这个分支中调用requestPeers()获取设备列表

我们先从查找设备开始:
查找成功后会发送一个广播。

查找到了设备我们就要开始连接啦。㈣不四很激动
连接成功后也会发送一个广播。

再看看我们在这个广播中做了什么:

忘了说在程序已启动就开始监听自己的端口(不管昰groupowner,还是peer端)

当然如果想两个peer端互传数据,peer端也需要保存不同peer的ip或者devicename也可以

好了。差不多打完收工

加个好友共同学习(不是公众号):

因为小弟水平有限,如果有写的有问题希望指出。

csdn写博客偶尔出现保存发表失败。感觉内心有点小恐惧啊

我要回帖

更多关于 create group 的文章

 

随机推荐