Bluetooth.Desktop.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using System.Security.Principal;
  2. using InABox.Avalonia.Platform;
  3. using InABox.Core;
  4. using InTheHand.Bluetooth;
  5. namespace InABox.Avalonia.Platform.Desktop;
  6. public class Desktop_Bluetooth : IBluetooth
  7. {
  8. public Logger? Logger { get; set; }
  9. public async Task<bool> IsAvailable()
  10. {
  11. return await Task.Run(() => false);
  12. }
  13. public async Task<bool> WriteAsync(string macaddress, Guid serviceid, Guid characteristicid, byte[] data)
  14. {
  15. var available = await InTheHand.Bluetooth.Bluetooth.GetAvailabilityAsync();
  16. if (available)
  17. {
  18. var filter = new BluetoothLEScanFilter();
  19. filter.Services.Add(serviceid);
  20. var options = new RequestDeviceOptions()
  21. {
  22. AcceptAllDevices = false
  23. };
  24. options.Filters.Add(filter);
  25. var devices = await InTheHand.Bluetooth.Bluetooth.ScanForDevicesAsync(options);
  26. if (devices.Any())
  27. {
  28. return true;
  29. }
  30. }
  31. return false;
  32. // IDevice? _device = null;
  33. // var adapter = CrossBluetoothLE.Current.Adapter;
  34. // adapter.DeviceDiscovered += (s, e) => _device = e.Device;
  35. // await adapter.StartScanningForDevicesAsync([serviceid], null);
  36. // if (_device != null)
  37. // {
  38. // await adapter.ConnectToDeviceAsync(_device);
  39. // var service = await _device.GetServiceAsync(serviceid);
  40. // var characteristic = await service.GetCharacteristicAsync(characteristicid);
  41. // characteristic.WriteAsync(data);
  42. // return true;
  43. // }
  44. // return false;
  45. }
  46. }