public WifiDirectManager() { _WifiP2pActonListener = new Receiver(this); _DiscoverPeersListener = new WifiP2pActionListener(this); _DroidWifiP2pManager = (WifiP2pManager)Application.Context.GetSystemService(Context.WifiP2pService); _Channel = _DroidWifiP2pManager.Initialize(Application.Context, Application.Context.MainLooper, null); /* * IntentFilter startFilter = new IntentFilter(BluetoothAdapter.ActionDiscoveryStarted); * IntentFilter foundFilter = new IntentFilter(BluetoothDevice.ActionFound); * IntentFilter finshFilter = new IntentFilter(BluetoothAdapter.ActionDiscoveryFinished); * * Application.Context.RegisterReceiver(_DiscoveryStartedReceiver, startFilter); * Application.Context.RegisterReceiver(_DevicesFoundReceiver, foundFilter); * Application.Context.RegisterReceiver(_DiscoveryFinishedReceiver, finshFilter); */ IntentFilter connectionChangedFilter = new IntentFilter(WifiP2pManager.WifiP2pConnectionChangedAction); IntentFilter peersChangedFilter = new IntentFilter(WifiP2pManager.WifiP2pPeersChangedAction); IntentFilter stateChangedFilter = new IntentFilter(WifiP2pManager.WifiP2pStateChangedAction); IntentFilter thisDeviceChangedFilter = new IntentFilter(WifiP2pManager.WifiP2pThisDeviceChangedAction); Application.Context.RegisterReceiver(_WifiP2pActonListener, stateChangedFilter); Application.Context.RegisterReceiver(_WifiP2pActonListener, connectionChangedFilter); Application.Context.RegisterReceiver(_WifiP2pActonListener, peersChangedFilter); //Application.Context.RegisterReceiver() }
public async Task <ConnectionEstablishState> ConnectAsync() { await Task.Run(() => { WifiP2pConfig config = new WifiP2pConfig(); config.DeviceAddress = (WifiDirectDevice as WifiDirectDevice).Address; WifiP2pManager droidWifiP2pManager = _WifiDirectManager._DroidWifiP2pManager; droidWifiP2pManager.Connect(_WifiDirectManager._Channel, config, _ConnectStateListener); while (!_ConnectingSucceeded) { if (_ReconnectMark) { _ReconnectMark = false; droidWifiP2pManager.Connect(_WifiDirectManager._Channel, config, _ConnectStateListener); } } WifiP2pActionListener connectionInfoListener = new WifiP2pActionListener(_WifiDirectManager); _WifiDirectManager._DroidWifiP2pManager.RequestConnectionInfo(_WifiDirectManager._Channel, connectionInfoListener); while (_WifiDirectManager._LatestWifiP2pInfo == null) { System.Diagnostics.Debug.WriteLine("HERE2"); } WifiP2pInfo preInfo = null; while (_WifiDirectManager._LatestWifiP2pInfo.GroupOwnerAddress == null) { if (preInfo != _WifiDirectManager._LatestWifiP2pInfo) { preInfo = _WifiDirectManager._LatestWifiP2pInfo; _WifiDirectManager._DroidWifiP2pManager.RequestConnectionInfo(_WifiDirectManager._Channel, connectionInfoListener); System.Diagnostics.Debug.WriteLine("CHANGE"); } System.Diagnostics.Debug.WriteLine("HERE3"); } if (_ConnectingSucceeded) { ConnectionEstablishState = ConnectionEstablishState.Succeeded; } OnConnectionEstalblishResult?.Invoke(this, ConnectionEstablishState); }); try { System.Diagnostics.Debug.WriteLine("Connect Succeed " + _WifiDirectManager._LatestWifiP2pInfo.GroupOwnerAddress.HostAddress); } catch (Exception) { var f**k = _WifiDirectManager._LatestWifiP2pInfo; } return(ConnectionEstablishState); }