在Xamarin Cross平台上进行BLE

时间:2015-03-02 05:32:26

标签: c# xamarin.forms

在Xamarin.Form跨平台上,有没有办法在弹出的对话框或菜单列表中显示可用的BLE设备列表(扫描后),然后从弹出的对话框中连接所需的BLE设备框并显示创建用于显示数据的UI上的数据??????

2 个答案:

答案 0 :(得分:0)

您需要DependencyService来检索可用的BLE设备列表,并照常显示在ListView上。

此外,Xamarin制作的组件可以帮助您轻松地为iOS和Android查找BLE设备。

https://components.xamarin.com/view/Monkey.Robotics

答案 1 :(得分:0)

Xamarin无法提供开箱即用的跨平台BLE支持。有一些第三方库提供跨平台的BLE功能,其中一个是我在本地BLE项目上花了1 - 2年后编写的:https://github.com/nexussays/ble.net

有一个完整的适用于iOS,Android和UWP(https://github.com/nexussays/ble.net/tree/master/test/ble.net.sampleapp)的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 );
}