Example #1
0
        private void Init()
        {
            RefreshToast("Bluetooth State: Unknow");
            RefreshLayout(false);

            mBluetoothLE = CrossBluetoothLE.Current;
            mAdapter = CrossBluetoothLE.Current.Adapter;

            mBluetoothLE.StateChanged += OnStateChanged;
            mAdapter.DeviceDiscovered += OnDeviceDiscovered;
            mAdapter.ScanTimeoutElapsed += OnScanTimeoutElapsed;
            mAdapter.DeviceDisconnected += OnDeviceDisconnected;
            mAdapter.DeviceConnectionLost += OnDeviceConnectionLost;

            RefreshToast("Bluetooth State: " + mBluetoothLE.State.ToString());
        }
        public MainPage()
        {
            InitializeComponent();
            ble        = CrossBluetoothLE.Current;
            adapter    = CrossBluetoothLE.Current.Adapter;
            deviceList = new ObservableCollection <IDevice>();

            //lv.ItemsSource = deviceList;

            isConnected = false;

            adapter.DeviceConnected      += bleDeviceConnected;
            adapter.DeviceDisconnected   += bleDeviceDisconnected;
            adapter.DeviceDiscovered     += bleDeviceDiscovered;
            adapter.DeviceConnectionLost += bleDeviceDisconnected;
        }
        protected override async void OnStart()
        {
            try
            {
                bluetoothBLE = CrossBluetoothLE.Current;
                var status = await EstimoteManager.Instance.Initialize();

                if (status == BeaconInitStatus.BluetoothOff || status == BeaconInitStatus.BluetoothMissing)
                {
                    //obligar a encender el bluetoot para iniciar la aplicacion

                    if (bluetoothBLE.State != BluetoothState.On)
                    {
                        await Current.MainPage.DisplayAlert("Atencion", "Bluetooth deshabilitado, presione Ok para habilitar.", "OK");

                        BluetoothAdapter bluetoothAdapter = BluetoothAdapter.DefaultAdapter;
                        bluetoothAdapter.Enable();

                        status = await EstimoteManager.Instance.Initialize();
                    }
                }
                if (status == BeaconInitStatus.Success)
                {
                    EstimoteManager.Instance.Ranged += Instance_Ranged;
                    EstimoteManager.Instance.RegionStatusChanged += Instance_RegionStatusChanged;
                    EstimoteManager.Instance.StartRanging(new BeaconRegion("beacon_Ksec", EstimoteUuid));
                }

                else
                {
                    await Current.MainPage.DisplayAlert("Atencion", "No se a detectado un dispositivo de validación cercano, mientras este no sea detectado no podra iniciar la aplicación, acerquese a un dispositivo y vuelva a iniciar la aplicación", "OK");

                    System.Diagnostics.Process.GetCurrentProcess().CloseMainWindow();
                }

                Device.StartTimer(TimeSpan.FromSeconds(2), () =>
                {
                    validar();
                    return(task);
                });
            }
            catch (Exception ex) {
                await Current.MainPage.DisplayAlert("Atención", "La aplicacion no se puede ejecutar si no se encuentra hablilitado y/o disponible el Bluetooth", "Ok");

                System.Diagnostics.Process.GetCurrentProcess().CloseMainWindow();
            }
        }
        public MainPage()
        {
            InitializeComponent();
            ble        = CrossBluetoothLE.Current;
            adapter    = CrossBluetoothLE.Current.Adapter;
            deviceList = new ObservableCollection <IDevice>();

            //var status = Permissions.RequestAsync<Permissions.LocationAlways>();

            lv.ItemsSource    = deviceList;
            lv.RefreshCommand = new Command(() =>
            {
                lv.IsRefreshing = false;

                scan(new object(), new EventArgs());
            });
        }
Example #5
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            SetContentView(Resource.Layout.Main);

            _bluetooth              = CrossBluetoothLE.Current;
            _bleAdapter             = CrossBluetoothLE.Current.Adapter;
            _bleAdapter.ScanTimeout = 10000;

            InitializeButtons();

            _bleAdapter.DeviceDiscovered += _bleAdapter_DeviceDiscovered;

            _heartService    = new Intent(this, typeof(HeartService));
            _acceleroService = new Intent(this, typeof(AcceleroService));
        }
Example #6
0
        public MainPage()
        {
            InitializeComponent();

            ble            = CrossBluetoothLE.Current;
            adapter        = CrossBluetoothLE.Current.Adapter;
            deviceList     = new ObservableCollection <IDevice>();
            lv.ItemsSource = deviceList;

            /*
             * List<string> reqList = new List<string>();
             * reqList.Add("날짜/시간");
             * reqList.Add("4개알람");
             * reqList.Add("공기질측정주기");
             * lblSendPicker.ItemsSource = reqList;
             */
        }
Example #7
0
        public HomeViewModel(INavigationService navigationService, IPageDialogService pageDialogService,
                             IBluetoothLE bluetooth, IAdapter adapter, IPermissions permissions, IUserDialogs userDialogs)
            : base(navigationService, pageDialogService)
        {
            Title        = "Home";
            _bluetooth   = bluetooth;
            _adapter     = adapter;
            _permissions = permissions;
            _userDialogs = userDialogs;

            adapter.DeviceDiscovered += OnDeviceDiscovered;

            ConnectCommand    = new DelegateCommand(ConnectHandle);
            DetailCommand     = new DelegateCommand(DetailHandle);
            ItemTappedCommand = new DelegateCommand <IDevice>(ItemTappedHandle);
            RefreshCommand    = new DelegateCommand(async() => await RefreshHandle());
        }
Example #8
0
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            Xamarin.Essentials.Platform.Init(this, savedInstanceState);
            SetContentView(Resource.Layout.layoutble);

            ble                = CrossBluetoothLE.Current;
            adapter            = CrossBluetoothLE.Current.Adapter;
            deviseList         = new ObservableCollection <IDevice>();
            deviseHashCodeList = new ObservableCollection <string>();

            if (Build.VERSION.SdkInt >= Build.VERSION_CODES.M)
            {
                RequestPermissions(new System.String[] { Manifest.Permission.AccessCoarseLocation }, PERMISSION_REQUEST_COARSE_LOCATION);
            }

            btnStatus_Clicked        = (Button)FindViewById(Resource.Id.btnStatus_Clicked);
            btnStatus_Clicked.Click += BtnStatusClicked;

            btnScan_Clicked        = (Button)FindViewById(Resource.Id.btnScan_Clicked);
            btnScan_Clicked.Click += BtnScanClicked;

            btnConnect_Clicked        = (Button)FindViewById(Resource.Id.btnConnect_Clicked);
            btnConnect_Clicked.Click += BtnConnectClicked;



            btnGetServices_Clicked        = (Button)FindViewById(Resource.Id.btnGetServices_Clicked);
            btnGetServices_Clicked.Click += BtnGetServicesClicked;

            btnGetcharacters_Clicked        = (Button)FindViewById(Resource.Id.btnGetcharacters_Clicked);
            btnGetcharacters_Clicked.Click += BtnGetCharactersClicked;



            btnGetRW_Clicked        = (Button)FindViewById(Resource.Id.btnGetRW_Clicked);
            btnGetRW_Clicked.Click += BtnGetRWClicked;



            lv         = (ListView)FindViewById(Resource.Id.lv);
            adapter_lv = new ArrayAdapter <string>(this, Android.Resource.Layout.SimpleListItem1, deviseHashCodeList);

            lv.ItemClick += OnDeviceClicked;
        }
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);
            Xamarin.Essentials.Platform.Init(this, savedInstanceState);
            SetContentView(Resource.Layout.activity_main);

            Android.Support.V7.Widget.Toolbar toolbar = FindViewById <Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
            SetSupportActionBar(toolbar);

            // Use this check to determine whether BLE is supported on the device. Then
            // you can selectively disable BLE-related features.
            if (!PackageManager.HasSystemFeature(Android.Content.PM.PackageManager.FeatureBluetoothLe))
            {
                Toast.MakeText(this, "Not supported", ToastLength.Short).Show();
                Finish();
            }

            _bluetoothLE = CrossBluetoothLE.Current;
            _adapter     = CrossBluetoothLE.Current.Adapter;
            _adapter.DeviceDiscovered += DeviceDiscovered;

            var scanBtn = FindViewById <Button>(Resource.Id.buttonScan);

            scanBtn.Click += ScanBtn_Click;

            var connectBtn = FindViewById <Button>(Resource.Id.buttonConnect);

            connectBtn.Click += ConnectBtn_Click;

            var getDataBtn = FindViewById <Button>(Resource.Id.buttonGetData);

            getDataBtn.Click += GetDataBtn_Click;

            Plugin.CurrentActivity.CrossCurrentActivity.Current.Init(this, savedInstanceState);

            _listView = FindViewById <RecyclerView>(Resource.Id.listView);
            _listView.HasFixedSize = true;

            var layoutManager = new LinearLayoutManager(this);

            _listView.SetLayoutManager(layoutManager);

            _listViewAdapter = new BleDevicesAdapter();
            _listView.SetAdapter(_listViewAdapter);
        }
        public BluetoothViewModel()
        {
            this.IsScanning      = false;
            this.PairedDevice    = "No devices connected";
            this.ActionText      = "Start Scan";
            this.StatusText      = "";
            this.IsActionEnabled = "True";
            if (_btDevice != null)
            {
                _btAdapter.DisconnectDeviceAsync(_btDevice);
            }

            ble     = CrossBluetoothLE.Current;
            adapter = CrossBluetoothLE.Current.Adapter;

            // configure the TapCommand with a method
            tapCommand = new DelegateCommand(OnButtonTapped);
        }
Example #11
0
        public BluetoothPage()
        {
            InitializeComponent();
            ble        = CrossBluetoothLE.Current;
            adapter    = CrossBluetoothLE.Current.Adapter;
            deviceList = new ObservableCollection <IDevice>();

            //recorder
            recorder = new AudioRecorderService
            {
                StopRecordingOnSilence    = true,
                StopRecordingAfterTimeout = true,
                TotalAudioTimeout         = TimeSpan.FromSeconds(5)
            };

            player = new AudioPlayer();
            player.FinishedPlaying += Player_FinishedPlaying;
        }
Example #12
0
 public DeviceListViewModel(IBluetoothLE bluetoothLe,
                            IAdapter adapter,
                            IUserDialogs userDialogs,
                            ISettings settings,
                            IPermissions permissions) : base(adapter)
 {
     _permissions = permissions;
     _bluetoothLe = bluetoothLe;
     _userDialogs = userDialogs;
     _settings    = settings;
     _bluetoothLe.StateChanged    += OnStateChanged;
     Adapter.DeviceDiscovered     += OnDeviceDiscovered;
     Adapter.ScanTimeoutElapsed   += Adapter_ScanTimeoutElapsed;
     Adapter.DeviceDisconnected   += OnDeviceDisconnected;
     Adapter.DeviceConnectionLost += OnDeviceConnectionLost;
     //Adapter.DeviceConnected += (sender, e) => Adapter.DisconnectDeviceAsync(e.Device);
     _advertisementDataRepository = DependencyService.Get <IAdvertisementDataRepository>();
     _sqliteProvider = DependencyService.Get <ISQLite>();
 }
        //private bool Connected = false;


        public BluetoothConnection()
        {
            ble     = CrossBluetoothLE.Current;
            adapter = CrossBluetoothLE.Current.Adapter;
            //woundConnectionThread = new Thread(ConnectKnownDevice);
            //woundConnectionThread.Start();
            //adapter.DeviceDisconnected += DisconnectedSensor;
            adapter.DeviceConnectionLost += WoundSensorDisconnectedAsync;
            adapter.DeviceDiscovered     += (s, a) =>
            {
                if (a.Device.Name == "HET Wound v2.1-001")
                {
                    device = a.Device;
                    StaticObjects.Connected = true;

                    ConnectToWoundSensorAsync(device);
                }
            };
        }
Example #14
0
        public MainPage(string Hexfile)
        {
            InitializeComponent();
            HEX     = Hexfile;
            ble     = CrossBluetoothLE.Current;
            adapter = CrossBluetoothLE.Current.Adapter;
            adapter.DeviceDiscovered     += Adapter_DeviceDiscovered;
            adapter.DeviceConnected      += Adapter_DeviceConnected;
            adapter.DeviceConnectionLost += Adapter_DeviceConnectionLost;
            adapter.DeviceDisconnected   += Adapter_DeviceDisconnected;
            adapter.StartScanningForDevicesAsync();
            progressSend("0", "Ready to Run !");

            Task.Run(async() =>
            {
                while (true)
                {
                    if (adapter.IsScanning)
                    {
                        Device.BeginInvokeOnMainThread(new Action(() =>
                        {
                            BtImage.Source = "bt_state.png";
                        }));
                        for (int i = 0; i < 5; i++)
                        {
                            if (!adapter.IsScanning)
                            {
                                break;
                            }
                            MyBut.Opacity = 0.4;
                            await MyBut.ScaleTo(2, 600, Easing.SpringIn);
                            await Task.Delay(200);
                            while (MyBut.Opacity != 0)
                            {
                                MyBut.Opacity -= 0.05;
                                await Task.Delay(20);
                            }
                            await MyBut.ScaleTo(1, 300, Easing.SpringIn);
                        }
                    }
                }
            });
        }
Example #15
0
        public AddASolePage()
        {
            InitializeComponent();

            ble            = CrossBluetoothLE.Current;
            adapter        = CrossBluetoothLE.Current.Adapter;
            deviceList     = new ObservableCollection <IDevice>();
            lv.ItemsSource = deviceList;

            scanloop();
            lv.ItemSelected += lv_ItemSelected;

            var state = ble.State;

            imgBluetooth.Source      = ImageSource.FromResource("project2.Assets.bluetooth.png");
            imgSoleConnection.Source = ImageSource.FromResource("project2.Assets.link.png");

            liveStatusLoop();
            bluetoothLoop();
        }
        public DeviceServicesViewModel(IDevice device)
        {
            _microbit    = device;
            _bluetoothLe = CrossBluetoothLE.Current;
            _adapter     = _bluetoothLe.Adapter;

            _adapter.DeviceConnected      += HandleConnectionStateChanged;
            _adapter.DeviceDisconnected   += HandleConnectionStateChanged;
            _adapter.DeviceConnectionLost += HandleConnectionStateChanged;

            ToggleConnectionCommand = new Command(
                () =>
            {
                if (_microbit.State == DeviceState.Connected)
                {
                    Disconnect();
                }
                else if (_microbit.State == DeviceState.Disconnected)
                {
                    Connect();
                }
            },
                () => !IsBusy);

            ServicesCommand = new Command(async() =>
            {
                DetectedServices.Clear();
                IList <IService> services = await _microbit.GetServicesAsync();
                foreach (IService service in services)
                {
                    IMicrobitServiceProvider microbitServiceProvider = IdToServiceProviderMappingProvider.ServiceProvider(service);
                    if (microbitServiceProvider != null)
                    {
                        DetectedServices.Add(microbitServiceProvider);
                    }
                }
            }, () => !IsBusy
                                          );

            DetectedServices = new ObservableCollection <IMicrobitServiceProvider>();
        }
Example #17
0
        /// <summary>
        /// Initializes a new instance of the <see cref="T:UHMS.Core.Services.BluetoothService"/> class.
        /// </summary>
        /// <param name="sensorDataService">Handler for incoming sensor data.</param>
        /// <param name="adapter">Adapter used to manage the peripheral bluetooth connections.</param>
        /// <param name="bluetooth">Interface to the central bluetooth device.</param>
        /// <param name="userDialogs">Dialogs to manage user-oriented output to the UI.</param>
        /// <param name="log">Logger primarily for debugging and record purposes.</param>
        public BluetoothService(ISensorDataService sensorDataService, IDataLoggingService dataLoggingService, IDeviceSlotService deviceSlotService, IAdapter adapter, IBluetoothLE bluetooth, IUserDialogs userDialogs, IMvxLog log)
        {
            // Services
            _sensorDataService  = sensorDataService;
            _dataLoggingService = dataLoggingService;
            _deviceSlotService  = deviceSlotService;

            _adapter     = adapter;
            _bluetooth   = bluetooth;
            _userDialogs = userDialogs;
            _log         = log;

            _log.Info("Initializing Bluetooth Service.");

            // Event tracker for subscribed characteristics.
            _characteristicEventAggregator = new ConcurrentDictionary <ICharacteristic, EventHandler <CharacteristicUpdatedEventArgs> >();

            OutputData = new List <int>();

            SubscribedCharacteristicsList = new List <DataType>();
        }
        public OpenGloveAppPage()
        {
            InitializeComponent();
            mBluetoothLE = CrossBluetoothLE.Current;
            mAdapter     = CrossBluetoothLE.Current.Adapter;
            mDeviceList  = new ObservableCollection <IDevice>();
            mSampleList  = new ObservableCollection <string>();
            mSampleList.Add("First element");
            mSampleList.Add("Second element");
            mSampleList.Add("Third element");

            label_bluetooth_status.Text = mBluetoothLE.State.ToString();

            mBluetoothLE.StateChanged += (s, e) =>
            {
                label_bluetooth_status.Text = mBluetoothLE.State.ToString();
                Debug.WriteLine($"The bluetooth state changed to {e.NewState}");
            };

            DependencyService.Get <IBluetoothManagerOG>().HelloWorld();
        }
        public ClientBLE()
        {
            mVisibleDevices = new List <IDeviceBLE>();

            //Setup bluetoth basic adapter
            mDevice                      = CrossBluetoothLE.Current;
            mAdapter                     = CrossBluetoothLE.Current.Adapter;
            mAdapter.ScanTimeout         = 20000;
            mAdapter.ScanMode            = Plugin.BLE.Abstractions.Contracts.ScanMode.Balanced;
            mAdapter.ScanTimeoutElapsed += MAdapter_ScanTimeoutElapsed;

            //Add debug state change indications
            mDevice.StateChanged += (s, e) => { Debug.WriteLine($"The bluetooth state changed to {e.NewState}"); };
            if (mDevice.IsOn && mDevice.IsAvailable)
            {
                mAdapter.DeviceDiscovered += DeviceWatcher_Added;
            }

            //Start the scan
            mAdapter.StartScanningForDevicesAsync();
        }
Example #20
0
        public MainPageViewModel()
        {
            var manager = CrossBluetoothLE.Current;

            if (!manager.IsAvailable)
            {
                throw new Exception("BLE is not available.");
            }

            _manager = manager;
            IsBTOn   = _manager.IsOn;
            if (IsBTOn)
            {
                StartScan();
            }
            _manager.Adapter.DeviceDiscovered += OnDeviceDiscovered;
            _manager.StateChanged             += OnStateChanged;

            Devices          = new ObservableCollection <IDeviceInTest>();
            StartScanCommand = new Command(StartStacExecute);
        }
Example #21
0
        public ViewModelMainMenu(IBluetoothLE bluetoothLe, IAdapter adapter, IUserDialogs userDialogs, ISettings settings, IPermissions permissions) : base(adapter)
        {
            _userDialogs = userDialogs;
            _permissions = permissions;

            Adapter.DeviceConnectionLost += OnDeviceConnectionLost;

            OnReadWriteButtonCommand   = new Command(OnReadWriteButtonClicked);
            OnInventoryButtonCommand   = new Command(OnInventoryButtonClicked);
            OnRegisterTagButtonCommand = new Command(OnRegisterTagButtonClicked);
            OnSpecialFuncButtonCommand = new Command(OnSpecialFuncButtonClicked);
            OnGeigerButtonCommand      = new Command(OnGeigerButtonClicked);
            OnSettingButtonCommand     = new Command(OnSettingButtonClicked);
            OnSecurityButtonCommand    = new Command(OnSecurityButtonClicked);
            OnFilterButtonCommand      = new Command(OnFilterButtonClicked);
            OnConnectButtonCommand     = new Command(OnConnectButtonClicked);

            BleMvxApplication._reader.OnReaderStateChanged += new EventHandler <CSLibrary.Events.OnReaderStateChangedEventArgs>(ReaderStateCChangedEvent);

            GetLocationPermission();
        }
        public PeripheralsPage()
        {
            InitializeComponent();

            _BluetoothLe               = Plugin.BLE.CrossBluetoothLE.Current;
            _Adapter                   = _BluetoothLe.Adapter;
            _Adapter.ScanTimeout       = 5000;
            _Adapter.DeviceDiscovered += (s, e) =>
            {
                _deviceList.Add(e.Device);
            };
            _Adapter.ScanTimeoutElapsed += (s, e) =>
            {
                foreach (var device in _Adapter.ConnectedDevices)
                {
                    _deviceList.Add(device);
                }
            };
            ListView1.ItemsSource = _deviceList;
            AddSearchButton();
        }
Example #23
0
        public BluetoothHandler()
        {
            status            = "NOT CONNECTED";
            ble               = CrossBluetoothLE.Current;
            adapter           = CrossBluetoothLE.Current.Adapter;
            deviceList        = new ObservableCollection <IDevice>();
            PrevDeviceIsFound = 0;


            //Check if in the previous session a bluetooth device was saved
            if (Application.Current.Properties.ContainsKey("BluetoothPrevSession"))
            {
                prevguid          = (Guid)Application.Current.Properties["BluetoothPrevSession"];
                PrevDeviceIsFound = 1;
            }

            if (Application.Current.Properties.ContainsKey("BluetoothPrevSessionName"))
            {
                prevdevicename = (string)Application.Current.Properties["BluetoothPrevSessionName"];
            }
        }
        public Connection()
        {
            InitializeComponent();
            //Установка источника данных для привязки к UI
            listView.ItemsSource = deviceList;
            //Обработчик события ItemSelected
            listView.ItemSelected += ListView_ItemSelected;
            //Базовые настройки для доступа к модулям мобильного устройства
            ble     = CrossBluetoothLE.Current;
            adapter = CrossBluetoothLE.Current.Adapter;
            //Установка кнопок
            ToolbarItem scan = new ToolbarItem();

            ToolbarItems.Add(new ToolbarItem("Scan", "IconBluetooth.png", () =>
            {
                ScanButton_Clicked();
            }));
            ToolbarItems.Add(new ToolbarItem("Connect", "IconConnect.png", () =>
            {
                Connect_Clicked();
            }));
        }
        public BluetoothViewModel()
        {
            Plugin.BLE.Abstractions.Trace.TraceImplementation = logger.ble;

            // this crashes on iOS if you don't follow add plist entries per
            // https://stackoverflow.com/a/59998233/11615696
            ble     = CrossBluetoothLE.Current;
            adapter = CrossBluetoothLE.Current.Adapter;

            adapter.DeviceDiscovered   += _bleAdapterDeviceDiscovered;
            adapter.ScanTimeoutElapsed += _bleAdapterStoppedScanning;

            primaryServiceId = _makeGuid("ff00");

            // characteristics
            logger.debug("BluetoothView: initializing characteristic GUIDs");

            // ENG-0120
            guidByName["integrationTimeMS"] = _makeGuid("ff01");
            guidByName["gainDb"]            = _makeGuid("ff02");
            guidByName["laserState"]        = _makeGuid("ff03");
            guidByName["acquireSpectrum"]   = _makeGuid("ff04");
            guidByName["spectrumRequest"]   = _makeGuid("ff05");
            guidByName["readSpectrum"]      = _makeGuid("ff06");
            guidByName["eepromCmd"]         = _makeGuid("ff07");
            guidByName["eepromData"]        = _makeGuid("ff08");
            guidByName["batteryStatus"]     = _makeGuid("ff09");
            guidByName["roi"] = _makeGuid("ff0a");

            foreach (var pair in guidByName)
            {
                nameByGuid[pair.Value] = pair.Key;
            }

            scanCmd    = new Command(() => { _ = doScanAsync(); });
            connectCmd = new Command(() => { _ = doConnectOrDisconnectAsync(); });

            spec.showConnectionProgress += showSpectrometerConnectionProgress;
        }
Example #26
0
        public MainPageViewModel(INavigation navigation)
        {
            _navigation = navigation;
            _devices    = new ObservableCollection <BlDevice>();

            _ble = CrossBluetoothLE.Current;

            _ble.StateChanged += (sender, args) =>
            {
                BleState    = ((IBluetoothLE)sender).State.ToString();
                IsOn        = ((IBluetoothLE)sender).IsOn;
                IsAvailable = ((IBluetoothLE)sender).IsAvailable;
            };

            _ble.Adapter.DeviceDiscovered += AdapterOnDeviceDiscovered;

            BleState    = _ble.State.ToString();
            IsOn        = _ble.IsOn;
            IsAvailable = _ble.IsAvailable;

            //启动扫描线程
            StartScanCommand = new RelayCommand(StartScan, () => !IsScanning);
        }
Example #27
0
        public BluetoothService()
        {
            _ble               = CrossBluetoothLE.Current;
            _adapter           = CrossBluetoothLE.Current.Adapter;
            _ble.StateChanged += (s, e) =>
            {
                //todo через шину сообщений уведомлять
                //Debug.WriteLine($"BleService: state changed to {e.NewState}");
            };

            _adapter.ScanTimeout = 5000;
            _adapter.ScanMode    = ScanMode.Balanced;

            _adapter.DeviceDiscovered += (s, a) =>
            {
                MessagingCenter.Send(this, Constants.AddDeviceTopic, a.Device);
            };

            _adapter.ScanTimeoutElapsed += (s, e) =>
            {
                MessagingCenter.Send(this, Constants.ScanStoppedTopic);
            };
        }
        public MainPage()
        {
            //Xabre는 바닐라 혹은 MVVM Cross로 작업가능
            //MVVM은 데이터를 바인딩해서 GUI 뷰하는 모델
            //https://ko.wikipedia.org/wiki/%EB%AA%A8%EB%8D%B8-%EB%B7%B0-%EB%B7%B0%EB%AA%A8%EB%8D%B8

            //바닐라는 Non MVVM Cross로써 순수자마린
            //아래는 바닐라로 설정하는 코드입니다.

            InitializeComponent();
            bluetoothBLE            = CrossBluetoothLE.Current;
            adapter                 = CrossBluetoothLE.Current.Adapter;
            list                    = new ObservableCollection <IDevice>();
            DevicesList.ItemsSource = list;

            //스캔목록list은 ListView로 구현
            //ListView는 스크롤이 가능한 데이터 목록입니다.
            //https://docs.microsoft.com/ko-kr/xamarin/xamarin-forms/user-interface/listview/

            //자마린 폼즈 ListView ItemSource
            //ObservableCollection 인스턴스가 데이터로 목록에 채워짐
            //https://docs.microsoft.com/ko-kr/xamarin/xamarin-forms/user-interface/listview/data-and-databinding
        }
Example #29
0
        /*
         * Constructor for DeviceListViewModel
         */
        public DeviceListViewModel(IBluetoothLE bluetoothLe, IAdapter adapter, IUserDialogs userDialogs, ISettings settings) : base(adapter)
        {
            _bluetoothLe = bluetoothLe;
            _userDialogs = userDialogs;
            _settings    = settings;
            // quick and dirty :>

            _bluetoothLe.StateChanged    -= OnStateChanged;
            _bluetoothLe.StateChanged    += OnStateChanged;
            Adapter.DeviceDiscovered     -= OnDeviceDiscovered;
            Adapter.DeviceDiscovered     += OnDeviceDiscovered;
            Adapter.ScanTimeoutElapsed   -= Adapter_ScanTimeoutElapsed;
            Adapter.ScanTimeoutElapsed   += Adapter_ScanTimeoutElapsed;
            Adapter.DeviceDisconnected   -= OnDeviceDisconnected;
            Adapter.DeviceDisconnected   += OnDeviceDisconnected;
            Adapter.DeviceConnectionLost -= OnDeviceConnectionLost;
            Adapter.DeviceConnectionLost += OnDeviceConnectionLost;

            Task.Run(async() =>
            {
                await Task.Delay(2000);

                if (_bluetoothLe.State == BluetoothState.On)
                {
                    TryStartScanning(true);
                }

                else
                {
                    Device.BeginInvokeOnMainThread(() =>
                    {
                        _userDialogs.Toast("Pull down to scan", TimeSpan.FromMilliseconds(6000));
                    });
                }
            });
        }
        /// <summary>
        /// Returns the current bluetooth state.
        /// </summary>
        /// <returns>BluetoothState</returns>
        private Task <BluetoothState> GetBluetoothState()
        {
            IBluetoothLE ble = CrossBluetoothLE.Current;
            var          tcs = new TaskCompletionSource <BluetoothState>();

            // In some cases the bluetooth state is unknown the first time it is read.
            if (ble.State == BluetoothState.Unknown)
            {
                // Listen for changes in the bluetooth adapter.
                EventHandler <BluetoothStateChangedArgs> handler = null;
                handler = (o, e) =>
                {
                    CrossBluetoothLE.Current.StateChanged -= handler;
                    tcs.SetResult(e.NewState);
                };
                CrossBluetoothLE.Current.StateChanged += handler;
            }
            else
            {
                tcs.SetResult(ble.State);
            }

            return(tcs.Task);
        }