Я занимаюсь разработкой приложения Wifi Direct. В течение нескольких недель в моем приложении был жестко прописан MAC-адрес Wi-Fi моих тестовых устройств (Pixel 2, Android Pie) для легкого подключения.
Прошлой ночью я начал получать ошибки подключения в стабильном фрагменте кода, который некоторое время оставался нетронутым. Я заметил, что MAC-адрес в «О телефоне» на моем пикселе 2 изменился - раньше он был «42: XX: XX: XX: XX: XX», а теперь это «40: XX: XX: XX: XX». : XX».
Еще более важным является тот факт, что Pixel 2 рекламирует свой старый MAC (тот, который начинается с "42") с Wifi Direct. После того, как Pixel 2 обнаружен соседним устройством, попытка подключиться либо к старому адресу («42»), либо к новому адресу («40») немедленно завершается неудачей в WifiP2pManager.ActionListener, переданном в WifiP2pManager.connect с причиной сбоя == WifiP2pManager.ERROR.
Итак, мои общие вопросы ...
1. Почему MAC-адрес WiFi на моем Pixel 2 изменился, казалось бы, наугад? . Обратите внимание, что это Wifi MAC, отображаемый в настройках, а не фиктивное значение из WifiInfo.getMacAddress ()
2. Почему мой телефон транслирует MAC-адрес, отличный от того, который указан в настройках при рекламе для одноранговых узлов Wifi Direct? Это ошибка на уровне ОС, о которой следует сообщать? Как вернуть мой телефон в согласованное состояние (надеюсь, без повторного изображения)?
3. Как можно однозначно идентифицировать рекламный телефон Wifi Direct, например Pixel 2, во время обнаружения Wifi Direct? WifiP2pDevice.deviceName может быть изменен пользователем. WifiP2pDevice.deviceAddress, по-видимому, НЕ статичен и может быть изменен системой. Я вынужден попытаться установить соединение и выполнить какое-то рукопожатие для идентификации устройств, или же можно идентифицировать устройство уникально (и статически в будущем) только через рекламу Wifi Direct?
Спасибо за понимание.