为什么广播接收器未检测到WIFI_P2P_CONNECTION_CHANGED_ACTION?

时间:2019-02-05 23:11:50

标签: android raspberry-pi wifi-direct wifip2p raspberry-pi-zero

所以这是我第一次使用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吗?

2 个答案:

答案 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