在Xamarin.Form跨平台上,有没有办法在弹出的对话框或菜单列表中显示可用的BLE设备列表(扫描后),然后从弹出的对话框中连接所需的BLE设备框并显示创建用于显示数据的UI上的数据??????
答案 0 :(得分:0)
您需要DependencyService
来检索可用的BLE设备列表,并照常显示在ListView
上。
此外,Xamarin制作的组件可以帮助您轻松地为iOS和Android查找BLE设备。
答案 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 );
}