Exemplo n.º 1
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            Xamarin.Forms.Forms.Init(this, savedInstanceState);

            SetContentView(Resource.Layout.activity_main);

            Toolbar toolbar = FindViewById <Toolbar>(Resource.Id.toolbar);

            SetSupportActionBar(toolbar);

            FloatingActionButton fab = FindViewById <FloatingActionButton>(Resource.Id.fab);

            fab.Click += FabOnClick;

            Tips        = FindViewById <TextView>(Resource.Id.Tips);
            Tips.Click += (s, e) =>
            {
                ShowScanDialog();
            };

            DeviceList = FindViewById <ListView>(Resource.Id.DeviceList);

            try
            {
                data = sqlite.QueryAll();
            }
            catch
            {
                sqlite.CreateTable();
                data = sqlite.QueryAll();
            }

            if (data.Count != 0)
            {
                DeviceList.Visibility = ViewStates.Visible;
                Tips.Visibility       = ViewStates.Gone;
            }

            adapter                   = new DeviceListAdapter(this, Resource.Layout.device_list_item, data);
            DeviceList.Adapter        = adapter;
            DeviceList.ItemLongClick += (s, e) =>
            {
                Wake(e);
            };
            DeviceList.ItemClick += (s, e) =>
            {
                Edit(e);
            };
        }
Exemplo n.º 2
0
        /// <summary>
        /// Called when activity is created
        ///
        /// Formerly we scanned for all devices, including those not yet paired.
        /// However, this returns a lot of devices that aren't usable and we don't have access
        /// to the service information until the device is paired, so we now just look at the bonded devices.
        /// The code infrastructure is still present to go back to scanning for all devices presenetly discoverable.
        /// </summary>
        /// <param name="bundle"></param>
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            // Setup the window
            RequestWindowFeature(WindowFeatures.NoTitle);
            SetContentView(Resource.Layout.DeviceListLayout);

            // Set result CANCELED incase the user backs out
            SetResult(Result.Canceled);

            // Set up button event handlers and initial states

            /*
             * Button scanButton = FindViewById<Button>(Resource.Id.button_scan);
             *  scanButton.Enabled = true;
             *  scanButton.Click += OnScanClick;
             */

            FindViewById <Button>(Resource.Id.button_scan).Visibility = ViewStates.Gone;

            Button endScanButton = FindViewById <Button>(Resource.Id.button_endscan);

            endScanButton.Click += OnEndScanClick;

            //endScanButton.Enabled = false;

            // Set up the list adapter and event handler for clicking on items in the device list
            listAdapter = new DeviceListAdapter(this, AvailableDevices);
            ListAdapter = listAdapter;
            ListView availableDeviceView = FindViewById <ListView>(Android.Resource.Id.List);

            availableDeviceView.ItemClick += DeviceListClick;

            FindViewById <ProgressBar>(Resource.Id.indeterminateBar).Visibility = ViewStates.Invisible;

            // Register for broadcasts when a device is discovered
            RegisterFilters();
            InitialiseDiscovery();
        }
Exemplo n.º 3
0
        private void Edit(AdapterView.ItemClickEventArgs e)
        {
            DeviceInfo device = data[e.Position];

            AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
            View view = View.Inflate(this, Resource.Layout.Add, null);

            InitViewControls(view);
            InitViewControlsContents(device);

            alertDialog.SetView(view)
            .SetPositiveButton(GetString(Resource.String.add_device_save), (_s, _e) =>
            {
                if (!TestDataFormat())
                {
                    Toast.MakeText(this, GetString(Resource.String.add_device_error), ToastLength.Long).Show();

                    return;
                }

                device.Name             = DeviceName.Text;
                device.MacAddress       = $"{DeviceMac1.Text}-{DeviceMac2.Text}-{DeviceMac3.Text}-{DeviceMac4.Text}-{DeviceMac5.Text}-{DeviceMac6.Text}";
                device.IpAddress        = $"{DeviceIp1.Text}.{DeviceIp2.Text}.{DeviceIp3.Text}.{DeviceIp4.Text}";
                device.BroadcastAddress = $"{DeviceBroadcast1.Text}.{DeviceBroadcast2.Text}.{DeviceBroadcast3.Text}.{DeviceBroadcast4.Text}";
                device.Port             = Convert.ToByte(DevicePort.Text);
                device.SendingCount     = Convert.ToByte(SendingCount.Text);
                device.Description      = DeviceDesc.Text;
                device.IsShortcut       = Shortcut.Checked;

                sqlite.Update(device);

                data               = sqlite.QueryAll();
                adapter            = new DeviceListAdapter(this, Resource.Layout.device_list_item, data);
                DeviceList.Adapter = adapter;

                SetShortcut();

                Toast.MakeText(this, GetString(Resource.String.add_device_save_success), ToastLength.Long).Show();
            })
            .SetNegativeButton(GetString(Resource.String.add_device_cancel), (_s, _e) =>
            {
                (_s as AlertDialog).Dismiss();
            })
            .SetNeutralButton(Resource.String.add_device_delete, (_s, _e) =>
            {
                sqlite.Delete(device);

                data               = sqlite.QueryAll();
                adapter            = new DeviceListAdapter(this, Resource.Layout.device_list_item, data);
                DeviceList.Adapter = adapter;

                if (data.Count != 0)
                {
                    DeviceList.Visibility = ViewStates.Visible;
                    Tips.Visibility       = ViewStates.Gone;
                }

                Toast.MakeText(this, GetString(Resource.String.add_device_delete_success), ToastLength.Long).Show();
            })
            .Create();
            AlertDialog show = alertDialog.Show();
        }
Exemplo n.º 4
0
        private void Add()
        {
            View view = View.Inflate(this, Resource.Layout.Add, null);

            InitViewControls(view);

            view.ViewAttachedToWindow += (s, e) =>
            {
                DeviceIp4.FocusChange += (_s, _e) =>
                {
                    if (_e.HasFocus == false)
                    {
                        try
                        {
                            IPAddress ip = IPAddress.Parse($"{DeviceIp1.Text}.{DeviceIp2.Text}.{DeviceIp3.Text}.{DeviceIp4.Text}");

                            IPAddress mask      = NetworkManager.CalSubnetMask(ip);
                            IPAddress broadcast = NetworkManager.CalBroadcast(ip, mask);

                            var bStr = broadcast.ToString().Split('.');

                            DeviceBroadcast1.Text = bStr[0];
                            DeviceBroadcast2.Text = bStr[1];
                            DeviceBroadcast3.Text = bStr[2];
                            DeviceBroadcast4.Text = bStr[3];
                        }
                        catch
                        {
                        }
                    }
                };
            };

            AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
            alertDialog.SetView(view)
            .SetPositiveButton(GetString(Resource.String.add_device_save), (s, e) =>
            {
                if (!TestDataFormat())
                {
                    Toast.MakeText(this, GetString(Resource.String.add_device_error), ToastLength.Long).Show();

                    return;
                }

                DeviceInfo device = new DeviceInfo
                {
                    Name             = DeviceName.Text,
                    MacAddress       = $"{DeviceMac1.Text}-{DeviceMac2.Text}-{DeviceMac3.Text}-{DeviceMac4.Text}-{DeviceMac5.Text}-{DeviceMac6.Text}",
                    IpAddress        = $"{DeviceIp1.Text}.{DeviceIp2.Text}.{DeviceIp3.Text}.{DeviceIp4.Text}",
                    BroadcastAddress = $"{DeviceBroadcast1.Text}.{DeviceBroadcast2.Text}.{DeviceBroadcast3.Text}.{DeviceBroadcast4.Text}",
                    Port             = Convert.ToByte(DevicePort.Text),
                    SendingCount     = Convert.ToByte(SendingCount.Text),
                    Description      = DeviceDesc.Text,
                    IsShortcut       = Shortcut.Checked
                };

                sqlite.Insert(device);

                data               = sqlite.QueryAll();
                adapter            = new DeviceListAdapter(this, Resource.Layout.device_list_item, data);
                DeviceList.Adapter = adapter;

                if (data.Count != 0)
                {
                    DeviceList.Visibility = ViewStates.Visible;
                    Tips.Visibility       = ViewStates.Gone;
                }

                SetShortcut();

                Toast.MakeText(this, GetString(Resource.String.add_device_save_success), ToastLength.Long).Show();
            })
            .SetNegativeButton(GetString(Resource.String.add_device_cancel), (s, e) =>
            {
                (s as AlertDialog).Dismiss();
            })
            .Create();
            AlertDialog show = alertDialog.Show();
        }
Exemplo n.º 5
0
        private async void ShowScanDialog()
        {
            View     view          = View.Inflate(this, Resource.Layout.Scan, null);
            TextView ScaningDetail = view.FindViewById <TextView>(Resource.Id.ScaningDetail);

            AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
            alertDialog.SetView(view)
            .SetCancelable(false)
            .Create();
            AlertDialog show = alertDialog.Show();

            var  token = scanCTS.Token;
            Task t1    = Task.Run(() =>
            {
                try
                {
                    NetworkManager.GetNetworkIpAndMask(out IPAddress ip, out IPAddress sub);
                    var networkAddress = NetworkManager.CalNetworkAddress(ip, sub).ToString();
                    networkAddress     = networkAddress.Substring(0, networkAddress.Length - 1);

                    for (int i = 2; i <= 254; i = i + 1)
                    {
                        string addr   = $"{networkAddress}{i}";
                        UdpClient udp = new UdpClient(addr, 23452);
                        udp.Send(new byte[] { 0 }, 1);
                        ScaningDetail.Text = addr;
                    }
                }
                catch (Exception)
                {
                }
            }, token);

            await t1;

            TaskScheduler csc = TaskScheduler.FromCurrentSynchronizationContext();
            await t1.ContinueWith((t) =>
            {
                var raw = NetworkManager.GetClientMac();

                foreach (var item in raw)
                {
                    DeviceInfo device = new DeviceInfo
                    {
                        Name             = item[0],
                        MacAddress       = item[1],
                        IpAddress        = item[0],
                        BroadcastAddress = NetworkManager.CalBroadcast(IPAddress.Parse(item[0]), NetworkManager.CalSubnetMask(IPAddress.Parse(item[0]))).ToString(),
                        Port             = 7,
                        SendingCount     = 1,
                    };

                    bool isEqual = false;
                    foreach (var d in data)
                    {
                        if (d.IpAddress == device.IpAddress)
                        {
                            isEqual = true;
                        }
                    }
                    if (!isEqual)
                    {
                        sqlite.Insert(device);
                    }
                }

                data               = sqlite.QueryAll();
                adapter            = new DeviceListAdapter(this, Resource.Layout.device_list_item, data);
                DeviceList.Adapter = adapter;

                if (data.Count != 0)
                {
                    DeviceList.Visibility = ViewStates.Visible;
                    Tips.Visibility       = ViewStates.Gone;
                }

                show.Dismiss();
            }, token, TaskContinuationOptions.AttachedToParent, csc);
        }