Почему WIFI_P2P_CONNECTION_CHANGED_ACTION не обнаруживается приемником вещания? - PullRequest
0 голосов
/ 06 февраля 2019

Так что в первый раз, когда я работаю с Wi-Fi Direct, я пытаюсь подключить свой телефон Android к Raspberry Pi нулевой W по Wi-Fi-Direct.с помощью этого примера приложения на моем телефоне Android: https://github.com/ahmontero/wifi-direct-demo

Я могу перейти в состояние «Подключено» через пи в интерфейсе wpa_cli и на телефоне под именем устройства, которое я вижу «подключено» за progressDialogполе с надписью «Подключение к 1e: 67: 58: 4c: 78: 92», которое следует отключить после подключения, но это не так, поскольку WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION не запускается после подключения.

my wpa_supplicant.conf:

ctrl_interface = DIR = / var / run / wpa_supplicant GROUP = netdev update_config = 1страна = LBap_scan = 1имя_устройства = малинаdevice_type = 1-0050F204-1driver_param = use_p2p_group_interface = 1p2p_go_intent = 7p2p_go_ht40 = 1p2p_listen_reg_class = 81p2p_listen_channel = 1p2p_oper_reg_class = 81p2p_oper_channel = 1

и выполнили следующие действия:

на Pi:

$ sudo wpa_supplicant -B -dd -iwlan0 -Dnl80211 -c / etc /wpa_supplicant / wpa_supplicant.conf

$ sudo wpa_cli p2p-dev-wlan0

p2p_group_addХорошо<3> P2P-GROUP-STARTED p2p-wlan0-0 GO ssid = "DIRECT-VC" freq = 2412 passphrase = "JrLfUAJf" go_dev_addr = 5a: d3: 65: e8: fc: e7wps_pbcХорошо<3> P2P-DEVICE-FOUND 1e: 67: 58: 4c: 78: 92 p2p_dev_addr = 1e: 67: 58: 4c: 78: 92 pri_dev_type = 10-0050F204-5 name = 'HUAWEI' config_methods = 0x188 dev_capab = 0x25group_capab = 0x0 wfd_dev_info = 0x00101c440032 new = 1<3> P2P-PROV-DISC-PBC-REQ 1e: 67: 58: 4c: 78: 92 p2p_dev_addr = 1e: 67: 58: 4c: 78: 92 pri_dev_type = 10-0050F204-5 name = 'HUAWEI' config_methods =0x188 dev_capab = 0x25 group_capab = 0x0

На телефоне: я запускаю прямое приложение Wi-Fi от Google, и я вижу устройство с его информацией, и когда я нажимаю на соединение, я застреваю при подключении progressDialog и не могу пройти эту точку крежим подключения, хотя я вижу «подключен» под именем устройства.

приложение работает нормально между двумя телефонами, но с пи эта строка в WiFiDirectBroadcastReceiver.java не выполняется, когдабыло установлено соединение с pi

} иначе if (WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION.equals (action))

однако, когда соединение теряется по истечении времени ожидания, например, оносрабатывает!

мой вопрос в том, что я делаю не так, почему WIFI_P2P_CONNECTION_CHANGED_ACTION не обнаруживается приемником вещания?

Примечание: телефон работает под управлением Android7.1 compileSdkVersion 26 targetSdkVersion 26

edit:

Как Бен указал в своем ответениже, что мне нужно иметь DHCP-сервер, работающий на устройстве GO (в моем случае PI), поэтому я продолжил и установил и настроил службу DHCP на pi, следуя первому разделу по этой ссылке https://www.raspberrypi.org/documentation/configuration/wireless/access-point.md, но,Я больше не могу запускать команду sudo wpa_supplicant -B -dd -iwlan0 -Dnl80211 -c /etc/wpa_supplicant/wpa_supplicant.conf, так как это может привести к конфликту с dhcp conf?Любая идея, как я могу включить P2P во время работы DHCP?

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Ваш Raspberry Pi выполняет роль GO и должен выступать в качестве DHCP-сервера.Устройство Android в роли клиента не будет транслировать WIFI_P2P_CONNECTION_CHANGED_ACTION, пока не получит IP-адрес от GO через DHCP.

См. Мой ответ здесь для получения дополнительной информации.

0 голосов
/ 06 февраля 2019

Ну, так как часть реализации GDPR (ЕС) и тому подобное.Начиная с android 8 и далее, будет ограничение на то, как устройства android получают трансляцию в любом событии (конечно, чтобы скрыть несколько специфических для устройства сведений / спецификаций.)

Пожалуйста, посмотрите на это: https://developer.android.com/guide/components/broadcasts

Ура.

...