MvvmCross plugin for BLE - iOS and Android
Based on Xamarin - Monkey Robotics
This plugin/library adds some additional features to the Monkey.Robotics API and also fixes some issues.
Targeted for iOS and Android.
Install-Package MvvmCross.Plugin.BLE
Let MvvmCross inject the IAdapter
service in your shared code and start using BLE :)
_adapter = Mvx.Resolve<IAdapter>();
or
MyViewModel(IAdapter adapter)
{
_adapter = adapter;
}
_adapter.DeviceDiscovered += (s,a) => _deviceList.Add(a.Device);
_adapter.StartScanningForDevices();
_adapter.ConnectToDevice(device);
or
_connectedDevice = await _adapter.ConnectAsync(_deviceList[selectedDeviceIndex]);
_connectedDevice.DiscoverServices();
_connectedDevice.ServicesDiscovered += (o, args) => { };
or
var service = await _connectedDevice.GetServiceAsync(Guid.Parse("ffe0ecd2-3d16-4f8d-90de-e89e7fc396a5"));
service.DiscoverCharacteristics();
service.CharacteristicsDiscovered += (o, args) => { };
or
var characteristic = await service.GetCharacteristicAsync(Guid.Parse("d8de624e-140f-4a22-8594-e2216b84a5f2"));
var bytes = await characteristic.ReadAsync();
characteristic.Write(bytes);
or with acknowledgment:
await characteristic.WriteAsync(bytes);
characteristic.ValueUpdated += (o, args) =>
{
var bytes = args.Characteristic.Value;
};
characteristic.StartUpdates();