软件大小:
软件语言:
浏览人数:416人
软件类型:
授权方式:
用户评分:
更新时间:2022-11-17
软件分类:Mac系统
运行环境:
背景:
最近在做一个使用wifi-p2p传输文件的app,通过扫描二维码建立wifi-p2p连接。具体步骤如下:
2、设备B扫描上面设备A的二维码,获取待连接设备A的mac地址;
3、设备B搜索周围可连接的设备,如果某个设备的mac地址与上面获取到的A的mac地址一致,则请求连接该设备。
之后还有app的一系列其他流程,与本文无关,在此不再赘述。
问题:
然而,事实并没有想象中那么顺利。在获取A设备本身的mac地址时,我使用了读取如下文件的方法:
"cat /sys/class/net/wlan0/address "
这样获取到的A设备本身的mac地址与手机“设置”->“wifi”中看到的mac地址是一样的,结果为:78:02:f8:2d:4b:ca
但是问题就出来了安卓系统层获取mac地址,当我通过B设备扫描周围的设备获取A设备的对象,然后使用的时候。得到的A的mac地址是:78:02:f8:2d:4b:c9,我去,这个结果和A前面读到的不一样。这样扫描二维码后,无法匹配到正确的二维码,无法建立连接。
解决:
修改A获取自己mac地址的方式为通过系统广播获取:
case WifiP2pManager.WIFI_P2P_THIS_DEVICE_CHANGED_ACTION: WifiP2pDevice thisDevice = intent.getParcelableExtra(WifiP2pManager.EXTRA_WIFI_P2P_DEVICE); String selfMac = thisDevice.deviceAddress;
注册“.”后 ,可以通过上面的代码获取到设备本身的mac地址。这个mac地址是:78:02:f8:2d:4b:c9安卓系统层获取mac地址安卓系统层获取mac地址,可以和扫描的二维码正确匹配。
笔记:
关于为什么设备A本身的mac地址和它暴露给其他设备的mac地址不一样,有知道这个问题的朋友不吝赐教;
我没写过博客,如果觉得不好,请不要喷。