我正在开发一个Wifi Direct应用程序。几个星期以来,为了方便连接,我在应用程序中硬编码了我的测试设备(Pixel 2,Android Pie)的Wifi MAC地址。
昨天晚上,我开始在一段稳定的代码中遇到连接错误,这段代码已经有一段时间没有动过了。我注意到在我的Pixel2上‘关于手机’的MAC地址已经改变了--以前是“42:XX:XX”,现在是“40:XX:XX”。
更令人担忧的是,Pixel 2正在用Wifi Direct宣传它的旧MAC (以“42”开头的那个)。在像素2被附近的设备发现后,尝试连接到旧地址("42")或新地址("40")的WifiP2pManager.ActionListener立即在传递给WifiP2pManager.connect的== WifiP2pManager.ERROR失败原因中失败。
所以我一般的问题是...
为什么我的像素2上的WiFi 地址看起来是随机改变的?。请注意,这是设置中显示的Wifi,而不是WifiInfo.getMacAddress()中的虚拟值。
2.为什么我的电话广播的MAC地址与通告Wifi Direct对等设备时设置中显示的地址不同?这是应该报告的操作系统级别的错误吗?我如何让我的手机回到一致的状态(希望没有重新镜像)?
3.如何在Wifi Direct discovery期间唯一识别像Pixel2这样的广告Wifi Direct phone?WifiP2pDevice.deviceName可以由用户更改。WifiP2pDevice.deviceAddress显然不是静态的,可以由系统更改。我是否被迫尝试连接并执行某种类型的握手来识别设备,或者是否可以仅通过Wifi Direct advertisement来唯一地识别设备(并在将来静态地识别)?
谢谢你的见解。
发布于 2018-09-05 07:22:33
我最终不得不在手机的Wifi Direct设置中手动忘记之前的配对。这似乎重置了一些东西。然而,对于Wifi Direct devs来说,以下后勤噩梦仍然存在:
我认为您可以通过编程方式忘记旧的组,但您可能必须使用reflection...
https://stackoverflow.com/questions/52173834
复制相似问题