我正在开发一个Wifi Direct应用程序。几周以来,我在我的应用程序中硬编码了我的测试设备(Pixel 2,Android Pie)的Wifi MAC地址,以便于连接。
昨晚,我开始在一段稳定的代码中得到连接错误,这段代码已经有一段时间未被触及了。我注意到我的Pixel 2上的'About Phone'中的MAC地址已经改变 - 它曾经是“42:XX:XX:XX:XX:XX”,现在是“40:XX:XX:XX:XX” :XX”。
更令人担忧的是,Pixel 2正在通过Wifi Direct宣传其旧MAC(以“42”开头)。在附近的设备发现Pixel 2之后,尝试连接到旧地址(“42”)或新地址(“40”)会立即失败,WifiP2pManager.ActionListener会因故障原因传递给WifiP2pManager.connect == WifiP2pManager.ERROR。
所以我的一般问题是......
1.为什么我的像素2上的WiFi MAC地址似乎随机变化?请注意,这是设置中显示的Wifi MAC,而不是来自WifiInfo.getMacAddress()的虚拟值
2.为Wifi Direct同行做广告时,为什么我的手机广播的MAC地址与设置中显示的MAC地址不同?这是一个应该报告的操作系统级错误吗?如何将手机恢复到一致状态(希望没有重新映像)?
3.如何在Wifi Direct发现期间唯一识别像Pixel 2这样的广告Wifi Direct手机?用户可以更改WifiP2pDevice.deviceName。 WifiP2pDevice.deviceAddress显然不是静态的,可以由系统更改。我是否被迫尝试连接并执行某种握手来识别设备,或者是否可以通过Wifi Direct广告单独识别设备(并且静态地在未来)?
感谢您的任何见解。
我最终不得不在手机的Wifi Direct设置中手动忘记以前的配对。这似乎重置了事情。然而,Wifi Direct开发人员的后续噩梦仍然存在:
我认为你可以通过编程方式忘记旧组,但你可能不得不使用reflection...