Почему WIFI_P2P_CONNECTION_CHANGED_ACTION не обнаруживается приемником вещания?
Так что это первый раз, когда я работаю с 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 не запускается после подключения.
мой wpa_supplicant.conf:
ctrl_interface = DIR = / var / run / wpa_supplicant GROUP = netdev update_config = 1
страна = LB
ap_scan = 1
имя_устройства = малина
device_type = 1-0050F204-1
driver_param = use_p2p_group_interface = 1
p2p_go_intent = 7
p2p_go_ht40 = 1
p2p_listen_reg_class = 81
p2p_listen_channel = 1
p2p_oper_reg_class = 81
p2p_oper_channel = 1
и сделали следующее:
на пи:
$ 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: e7
wps_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 = 0x25 group_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 Direct от Google, и я вижу устройство с его информацией, и когда я нажимаю на соединение, я застреваю при подключении progressDialog и не могу пройти через эту точку в подключенном режиме, хотя я вижу "подключен" в имя устройства.
кажется, что приложение отлично работает между двумя телефонами, но с пи эта строка в WiFiDirectBroadcastReceiver.java не выполняется, когда было установлено соединение с пи
} else if (WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION.equals(action))
однако, когда соединение теряется после тайм-аута, например, оно срабатывает!
мой вопрос в том, что я делаю не так, почему WIFI_P2P_CONNECTION_CHANGED_ACTION не обнаруживается приемником вещания?
Примечание: телефон работает под управлением Android 7.1 compileSdkVersion 26 targetSdkVersion 26
редактировать:
Как Бен указал в своем ответе ниже, что мне нужно иметь 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 ответа
Ваш Raspberry Pi играет роль GO и должен выступать в качестве сервера DHCP. Устройство Android в роли клиента не будет транслироваться WIFI_P2P_CONNECTION_CHANGED_ACTION
пока он не получил IP-адрес от GO через DHCP.
Смотрите мой ответ здесь для более подробной информации.
Ну, так как в рамках реализации GDPR (ЕС) и тому подобное. Начиная с android 8 и далее, будет установлено ограничение на то, как устройства android получают трансляцию в любом событии (конечно, чтобы скрыть несколько специфических для устройства сведений / спецификаций).
Пожалуйста, посмотрите на это: https://developer.android.com/guide/components/broadcasts
Приветствия.