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()); }); }
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)); }
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; */ }
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()); }
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); }
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; }
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); } }; }
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); } } } }); }
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>(); }
/// <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(); }
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); }
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(); }
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; }
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); }
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 }
/* * 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); }