Почему изменился адрес Wifi Mac на моем Pixel 2 (Android Pie)? - PullRequest
0 голосов
/ 04 сентября 2018

Я занимаюсь разработкой приложения 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?

Спасибо за понимание.

1 Ответ

0 голосов
/ 05 сентября 2018

В итоге мне пришлось забыть предыдущее соединение вручную в настройках Wifi Direct на телефоне. Это казалось, чтобы сбросить вещи. Тем не менее, следующий логистический кошмар для разработчиков Wifi Direct остается:

  1. Вы связываете два устройства. Устройства запоминают MAC-адреса друг друга для будущих автоматических подключений.
  2. MAC-адрес одного из устройств изменяется системой без предупреждения / широковещания / уведомления разработчика
  3. Ваши устройства больше не могут подключаться, не забывая свою старую группу соединений. Кроме того, объявленный MAC-адрес будет неправильным до тех пор, пока старая группа соединений не будет очищена.

Я думаю, что вы можете забыть старую группу программно, но вам, возможно, придется использовать отражение ...

...