Пишу кроссплатформенную реализацию поиска BLE устройств. Имею следующий код обертки над стандартным UWP классом:
[assembly: Dependency(typeof(BtTest.UWP.Models.BluetoothScaner))]
namespace BtTest.UWP.Models
{
public class BluetoothScaner : IBluetoothScaner
{
public BluetoothLEAdvertisementWatcher Watcher { get; set; }
public BluetoothScaner()
{
Watcher = new BluetoothLEAdvertisementWatcher()
{
ScanningMode = BluetoothLEScanningMode.Active
};
Watcher.Received += OnRecieved;
Watcher.Stopped += WatcherStopped;
Watcher.Start();
}
private void WatcherStopped(BluetoothLEAdvertisementWatcher sender,
BluetoothLEAdvertisementWatcherStoppedEventArgs args)
{
//throw new NotImplementedException();
}
private void OnRecieved(BluetoothLEAdvertisementWatcher sender,
BluetoothLEAdvertisementReceivedEventArgs args)
{
Received?.Invoke(args.Advertisement.LocalName, args);
Console.WriteLine("onRecieved");
}
public event Action<string, object> Received;
public void Start()
{
Watcher.Start();
}
public void Stop()
{
Watcher.Stop();
}
}
}
Использую его следующим образом в проекте реализации UWP
public class MainPageViewModel : BaseViewModel
{
private MainPageModel _mainPageModel;
private IBluetoothScaner _bluetoothScaner = DependencyService.Get<IBluetoothScaner>();
public ObservableCollection<string> ListViewBtItems = new ObservableCollection<string>();
private void OnDeviceDetected(string name, object bluetoothArgs)
{
Add(name, bluetoothArgs);
}
public void Add(string name, object bluetoothArgs)
{
_mainPageModel.DeviceDict.Add(name, bluetoothArgs);
ListViewBtItems.Add(name);
}
public object GetValue(string name)
{
return _mainPageModel.DeviceDict[name];
}
public MainPageViewModel()
{
_bluetoothScaner.Received += OnDeviceDetected;
_bluetoothScaner.Start();
}
}
В итоге получаю, что событие OnRecieved никогда не срабатывает, хотя должно и устройства в эфире есть. Что интересно - строчка Watcher.Start(); переводит объект Watcher в состояние Aborted, а не Started. Это было установленно через дебагер. Может ли кто нибудь помочь разобраться в данной проблеме?
Проблема решена благодаря комментариям Mike Petrichenko и статье https://keyoti.com/blog/bluetooth-low-energy-in-windows-10-troubleshooting-capabilities/ Всем спасибо
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Делал кастомный UITextView и сталкнулся с проблемой при байндинге текстового поля прога просто вылетала
необходимо получить минимальное значение цены (Price), знаю о существовании min, но тут есть проблема, цены в разных array, как в таком случить минимальное...
Всем привет, в первый раз устанавливаю через composer библиотеку из github