C# Xamarin跨平台上的BLE

C# Xamarin跨平台上的BLE,c#,xamarin.forms,C#,Xamarin.forms,在Xamarin.Form cross platform中,是否有任何方法可以显示可用的BLE设备列表(扫描后)在弹出对话框或菜单列表中,然后从弹出对话框连接所需的BLE设备,并在为显示数据而创建的UI上显示数据?????您需要检索可用BLE设备的列表,并像往常一样显示在屏幕上 此外,下面由Xamarin制造的组件可能会帮助您轻松找到适用于iOS和Android的可扩展设备 Xamarin不提供现成的跨平台可扩展支持。有一些第三方库提供了跨平台的BLE功能,其中一个是我在本地BLE项目上花了1-

在Xamarin.Form cross platform中,是否有任何方法可以显示可用的BLE设备列表(扫描后)在弹出对话框或菜单列表中,然后从弹出对话框连接所需的BLE设备,并在为显示数据而创建的UI上显示数据?????

您需要检索可用BLE设备的列表,并像往常一样显示在屏幕上

此外,下面由Xamarin制造的组件可能会帮助您轻松找到适用于iOS和Android的可扩展设备


Xamarin不提供现成的跨平台可扩展支持。有一些第三方库提供了跨平台的BLE功能,其中一个是我在本地BLE项目上花了1-2年时间编写的:

有一个针对iOS、Android和UWP()的完整的Xamarin.Forms项目,它提供了您要求的确切功能——扫描、显示结果、连接、显示对话框等。但在此简要介绍一下API

您可以这样扫描:

await adapter.ScanForDevices(
   ( IBlePeripheral peripheral ) =>
   {
      // check if this is the device you want to connect to
      // e.g., query peripheral.Advertisement.Services
   },
   cancellationTokenSource.Token );
以及连接到读/写/通知特征:

var connection = await adapter.ConnectToDevice( peripheral, TimeSpan.FromSeconds( 5 ));
if(connection.IsSuccessful())
{
   var gatt = connection.GattServer;
   var value = await gatt.ReadCharacteristicValue( someServiceGuid, someCharacteristicGuid );
   await gatt.WriteCharacteristicValue( someServiceGuid, someCharacteristicGuid, new byte[]{ 1, 2, 3 } );
   // etc...
}
else
{
   Debug.WriteLine( "Error connecting to device. result={0:g}", connection.ConnectionResult );
}