Wifi-Direct获取WiFiDirectBroadcastReceiver中连接设备的地址

时间:2018-06-12 12:00:56

标签: android android-wifi android-broadcastreceiver wifi-direct wifip2p

我遵循了这个文档,并使我的Android设备的wifi对等工作:

The link to android wifi p2p document

它在工作。我能够连接并发送数据。但我也希望在发现设备时从一开始就跟踪它们的状态。问题是,当我的BroadcastReceiver中出现WIFI_P2P_CONNECTION_CHANGED_ACTION时,我无法知道哪个设备已连接(或断开连接)。我需要它在我的设备列表中找到它并改变它的状态 这是实施广播接收机代码的一部分:

public class WiFiDirectBroadcastReceiver extends BroadcastReceiver {
@Override
  public void onReceive(Context context, Intent intent) {
    String action = intent.getAction();
    ...
     if (WifiP2pManager.WIFI_P2P_CONNECTION_CHANGED_ACTION.equals(action)) {
  NetworkInfo networkInfo = intent.getParcelableExtra(WifiP2pManager.EXTRA_NETWORK_INFO);
  Log.d("SERVICESTATUS", "Connection status changed.");
  if (networkInfo.isConnected()) {
    WifiP2pDevice dev = intent.getParcelableExtra(WifiP2pManager.EXTRA_WIFI_P2P_DEVICE); 
    // Here the result is null!!! [dev = null] I want to have its address here

    mP2PManager.requestConnectionInfo(mChannel, info -> {
      // even here there is no information about the address of connected device in 'info' object!!!
    });
  }
} 
...
}

那么,是否有人知道如何在广播接收器中获得有关已更改设备的信息。或者是否有更好的方法来跟踪我的设备状态。

我的要求是让一个List包含到目前为止所有已发现的设备,其状态可以是此枚举中的值:

public enum DeviceStatus
{
  Unknown,
  WifiConnecting,
  WifiConnected,
  ReadyForTcpConnection,
  TcpConnecting,
  TcpConnected,
  Authorizing,
  Authorized,
  Idle,
  Error
}

提前感谢您的帮助。

0 个答案:

没有答案