示例#1
0
        // Set connection configuration and request connection to given MAC address
        public static void Connect(string DeviceAddress)
        {
            WifiP2pConfig config = new WifiP2pConfig {
                DeviceAddress = DeviceAddress
            };

            config.Wps.Setup        = WpsInfo.Pbc;
            config.GroupOwnerIntent = 0;
            Manager.Connect(Channel, config, new ConnectActionListener());
            //System.Threading.Thread.Sleep(1000);
            //Manager.CancelConnect(Channel, new ConnectActionListener());
        }
            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);
            }
示例#3
0
        private void OnListViewItemClick(object sender, AdapterView.ItemClickEventArgs itemClickEventArgs)
        {
            var           peer = mAdapter.GetItem(itemClickEventArgs.Position);
            WifiP2pConfig conf = new WifiP2pConfig
            {
                DeviceAddress = peer.Address,
                Wps           =
                {
                    Setup = WpsInfo.Pbc
                }
            };

            mManager.Connect(mChannel, conf, new WifiDirectActionListener(this, "Connect", () => { }));
        }
示例#4
0
        //step2
        public void ConnectDevice(string DeviceName)
        {
            foreach (var p in WifiManager.PhoneDevices)
            {
                if (p.DeviceName != DeviceName)
                {
                    continue;
                }

                WifiP2pConfig config = new WifiP2pConfig();
                config.DeviceAddress    = p.DeviceAddress;
                config.Wps.Setup        = WpsInfo.Pbc;
                config.GroupOwnerIntent = 0;

                WifiManager.manager.Connect(WifiManager.channel, config, new MyActionListner(ConnectSuccess));
            }
        }
示例#5
0
        /// <summary>
        /// <see cref="Activity.OnCreate(Bundle)"/>
        /// </summary>
        override protected void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            SetContentView(Resource.Layout.activity_client);

            m_Views = new ClientViews(this);

            m_Views.ButtonProgressBar.Visibility = ViewStates.Gone;
            m_Views.GlobalProgressBar.Visibility = ViewStates.Visible;
            m_Views.TitleLayout.Visibility       = ViewStates.Gone;
            m_Views.NoPeersLayout.Visibility     = ViewStates.Gone;
            m_Views.RefreshLayout.SetOnRefreshListener(this);
            m_Views.RefreshButton.SetOnClickListener(new BaseOnClickListener(v =>
            {
                m_Views.RefreshButton.Visibility     = ViewStates.Invisible;
                m_Views.ButtonProgressBar.Visibility = ViewStates.Visible;

                StartDiscovering();
            }));

            m_CurrentPeers = new HashSet <WifiP2pDevice>();
            m_Adapter      = new WifiPeerAdapter(m_CurrentPeers, false, device =>
            {
                WifiP2pConfig config = new WifiP2pConfig
                {
                    DeviceAddress = device.DeviceAddress
                };

                WifiP2pManager.Connect(WifiP2pChannel, config, new WifiP2pActionListener(this, EWifiP2pAction.Connect));
            });

            m_Views.PeersRecyclerView.SetAdapter(m_Adapter);

            m_PermissionService = new PermissionService(this);

            StartDiscovering();
        }
        public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            _contentView = inflater.Inflate(Resource.Layout.device_detail, null);
            _contentView.FindViewById <Button>(Resource.Id.btn_connect).Click += (sender, args) =>
            {
                var config = new WifiP2pConfig
                {
                    DeviceAddress = _device.DeviceAddress,
                    Wps           =
                    {
                        Setup = WpsInfo.Pbc
                    },
                    GroupOwnerIntent = 15
                };
                if (_progressDialog != null && _progressDialog.IsShowing)
                {
                    _progressDialog.Dismiss();
                }

                _progressDialog = ProgressDialog.Show(Activity, "Press back to cancel",
                                                      "Connecting to: " + _device.DeviceAddress, true, true);

                ((IDeviceActionListener)Activity).Connect(config);
            };

            _contentView.FindViewById <Button>(Resource.Id.btn_disconnect).Click += (sender, args) =>
                                                                                    ((IDeviceActionListener)Activity).Disconnect();

            _contentView.FindViewById <Button>(Resource.Id.btn_start_client).Click += (sender, args) =>
            {
                var intent = new Intent(Intent.ActionGetContent);
                intent.SetType("image/*");
                StartActivityForResult(intent, ChooseFileResultCode);
            };

            return(_contentView);
        }
 public void Connect(WifiP2pConfig config)
 {
     _manager.Connect(_channel, config, new MyActionListner(this, "Connect", () => { }));
 }