所以这是我第一次使用wifi-direct,我正尝试通过wifi-direct将我的android手机连接到树莓派0。 在我的Android手机上使用此示例应用程序:https://github.com/ahmontero/wifi-direct-demo
我能够在wpa_cli界面的pi处进入Connected状态 在设备名称下的电话上,我在进度对话框后面看到“已连接”,该对话框显示“正在连接至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_name =树莓
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
并已执行以下操作:
在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: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
在电话上: 我从Google运行wifi直接示例应用程序 而且我可以看到带有其信息的设备,并且当我单击“连接”时,即使在设备名称下看到“已连接”,我也仍然停留在连接progressDialog上,并且无法将该点传递给已连接模式。
该应用似乎可以在两部手机之间正常工作,但带有pi 与pi建立连接后,WiFiDirectBroadcastReceiver.java中的这一行不会执行
}否则(WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION.equals(action))
但是,例如在超时后丢失连接时,它将被触发!
我的问题是我在做什么错,为什么广播接收器未检测到WIFI_P2P_CONNECTION_CHANGED_ACTION?
注意:手机正在运行Android 7.1 编译版本26 targetSdkVersion 26
编辑:
正如Ben在下面的回答中指出的那样,我需要在GO设备(本例中为PI)上运行DHCP服务器,因此我继续按照第一部分在pi上安装和配置DHCP服务在此链接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冲突?你知道我如何在运行DHCP的同时启用p2p吗?
答案 0 :(得分:0)
好吧, 因此,作为GDPR(EU)实施和类似内容的一部分。 从android 8及更高版本开始,在任何事件下android设备接收广播的方式都会受到限制(当然可以隐藏一些设备特定的信息/规格。)
请查看以下内容: https://developer.android.com/guide/components/broadcasts
干杯。
答案 1 :(得分:0)
您的Raspberry Pi处于GO角色,需要充当DHCP服务器。具有客户端角色的Android设备只有在通过DHCP从GO接收到IP地址后,才会广播WIFI_P2P_CONNECTION_CHANGED_ACTION
。
有关更多详细信息,请参见我的答案here。