Я недавно начал разработку приложения для Android и iOS с использованием Xamarin.Forms.Мне нужно обнаружить и подключиться к пользовательскому встроенному устройству с помощью BLE, однако до сих пор у меня ничего не получалось.Я пытался использовать пакет Plugin.BLE NuGet, но приложение, похоже, не обнаруживает никаких устройств.Однако он реагирует на изменения состояния Bluetooth-соединения телефона (ВКЛ / ВЫКЛ).Я пытался подключить устройство заранее, но это не имело никакого значения.Я также попытался проверить устройства с помощью другого приложения из магазина Play, и там я вижу соответствующее устройство.Код запускается из MainPage.xaml.cs
общего проекта после InitializeComponent()
.Устройство, на котором я тестирую приложение, - это Google Pixel XL под управлением Android 8.1.Ничего не изменилось, когда я попытался использовать Samsung Galaxy S7 с Android 7.
Это код, который я использовал, прямо из официальной документации.
Пример кода:
private async void BLE()
{
var ble = CrossBluetoothLE.Current;
var adapter = CrossBluetoothLE.Current.Adapter;
var state = ble.State;
adapter.ScanMode = Plugin.BLE.Abstractions.Contracts.ScanMode.LowLatency;
adapter.ScanTimeout = 5000;
ble.StateChanged += (s, e) =>
{
i++;
this.display.Text = "The bluetooth state changed, iteration " + i;
Debug.WriteLine($"The bluetooth state changed to {e.NewState}");
};
adapter.DeviceDiscovered += (s, a) =>
{
// Debug.WriteLine(a.Device);
eviceList.Add(a.Device.ToString());
Debug.WriteLine("Device list: " + a.Device);
};
adapter.DeviceAdvertised += (s, a) =>
{
Debug.WriteLine("Device advertised: " + a.Device);
};
await adapter.StartScanningForDevicesAsync();
}
Разрешения:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />