Microsoft Band es un producto joven, sólo lleva medio año de vida, que puede ser muy útil y productivo tanto personal como laboralmente debido a la gran cantidad de sensores e información que ofrece, así que poder extraerla y explotarla es crucial, así que veremos un sencillo ejemplo que nos valdrá para conocer qué podemos extraer, aunque al final, la creatividad siempre aporta más de los conceptos básicos.Hay que hacer una aclaración, lo que se desarrolla no es una aplicación residente en Microsoft Band, sino que se alojará en un Smartphone o Tablet donde consumiremos y explotaremos los datos. Para Microsoft Band se pueden desarrollar Apps Windows, iOS y Android, con lo que no es una excusa el sistema operativo que usen nuestros dispositivos del día a día.
¿Qué podemos extraer?
Con Microsoft Band podemos realizar diferentes operaciones como las que listo a continuación:
- Personalización:
- Color de fondo
- Imagen de fondo
- Configuración de los Tiles
- Posición
- Elementos visibles
- Envío de notificaciones
- Uso de los sensores
- Acelerómetro
- Calorías
- Contacto
- Distancia
- Giroscopio
- Pulsaciones
- Podómetro
- Temperatura de la piel
- UV, sensor de rayos ultravioleta
Cómo desarrollar para Microsoft Band
En primer lugar, debemos comenzar por descargar el SDK para Microsoft Band desde este enlace donde podremos además encontrar ejemplos para Windows Phone, iOS y Android.
Lo que viene después es muy sencillo ya que el SDK ha sido bien trabajado por los desarrolladores de Microsoft y es muy simple conectarse y extraer información y con este código que os comparto, podréis conectaros a Microsoft Band, extraer la información de su versión de hardware y firmware y, además, suscribiros al sensor de pulsaciones y mostrar la información.
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
this.NavigationCacheMode = NavigationCacheMode.Required;
}
/// <summary>
/// Invoked when this page is about to be displayed in a Frame.
/// </summary>
/// <param name=»e»>Event data that describes how this page was reached.
/// This parameter is typically used to configure the page.</param>
protected override async void OnNavigatedTo(NavigationEventArgs e)
{
var bandClient = await BandConnect();
if (bandClient != null)
{
var info = await GetBandVersion(bandClient);
if (info != null)
{
printInfo(info);
}
SubscribeSensorHeart(bandClient);
}
}
private void printInfo(List<string> info)
{
this.fversion.Text += info[0];
this.hversion.Text += info[1];
//throw new NotImplementedException();
}
protected async Task<IBandClient> BandConnect()
{
// Get a list of paired Bands
IBandInfo[] pairedBands = await BandClientManager.Instance.GetBandsAsync();
try
{
IBandClient bandClient = await BandClientManager.Instance.ConnectAsync(pairedBands[0]);
return bandClient;
}
catch (BandException ex)
{
return null;
}
//var bandManager = BandClientManager.Instance;
//var pairedBands = await bandManager.GetBandsAsync();
//if (pairedBands.Count() == 0)
// await Launcher.LaunchUriAsync(new Uri(«ms-settings-bluetooth:»));
}
protected async Task<List<string>> GetBandVersion(IBandClient bandClient)
{
var fwVersion = string.Empty;
var hwVersion = string.Empty;
try
{
var info = new List<string>();
fwVersion = await bandClient.GetFirmwareVersionAsync();
hwVersion = await bandClient.GetHardwareVersionAsync();
info.Add(fwVersion);
info.Add(hwVersion);
return info;
}
catch (BandException ex)
{
return null;
}
}
protected async void SubscribeSensorHeart(IBandClient bandClient)
{
if (bandClient.SensorManager.HeartRate.GetCurrentUserConsent() != UserConsent.Granted)
{
// user has not consented, request it
await bandClient.SensorManager.HeartRate.RequestUserConsentAsync();
}
// hook up to the Heartrate sensor ReadingChanged event
bandClient.SensorManager.HeartRate.ReadingChanged += HRReadingChange;
// start the Heartrate sensor
await bandClient.SensorManager.HeartRate.StartReadingsAsync();
}
private async void HRReadingChange(object sender, BandSensorReadingEventArgs<IBandHeartRateReading> e)
{
await Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
{
IBandHeartRateReading hrReading = e.SensorReading;
this.heartrate.Text = hrReading.HeartRate.ToString();
});
}
}
A partir de aquí, vuestra imaginación es el límite para poder explotar los datos que ofrece Microsoft Band