SVILUPPARE PER MICROSOFT BAND

35
Template designed by Massimo Bonanni [email protected] http://codetailor.blogspot.com @massimobonanni Sviluppare per Microsoft Band

Transcript of SVILUPPARE PER MICROSOFT BAND

  1. 1. Template designed by Massimo Bonanni [email protected] http://codetailor.blogspot.com @massimobonanni Sviluppare per Microsoft Band
  2. 2. Slide con sponsor che arriva a qualche giorno dalla conferenza sponsor
  3. 3. MASSIMO BONANNI Software architect e trainer @ eXagile (Roma) Microsoft MVP dal 2011 Intel Software Innovator dal 2014 Fondatore di DomusDotNet (www.domusdotnet.org) e dotNet{podcast} (www.dotnetpodcast.com) chi sono
  4. 4. Cos Microsoft Band Microsoft Band SDK Connettersi ad un Band Accesso ai Sensori Tile, Notifiche e Page WebTile Conclusioni Agenda
  5. 5. 10 Gyroscope 10 Wearable Device 10 sensori Schermo Touch Cos Microsoft Band
  6. 6. Health & Fitness Livello di attivit e frequenza cardiaca Passi, calorie, distanza percorsa Esposizione ai raggi UV Durata del sonno, efficienza, frequenza di risvegli e frequenza cardiaca a riposo Allenamenti guidati. Produttivit: Interazione con centro notifiche Mail, SMS, Facebook, Twitter Chiamate in arrivo Integrazione con Cortana Cos Microsoft Band
  7. 7. Consente alle applicazioni di estendere e potenziare lesperienza utente sfruttando il Microsoft Band. 3 modi principali per interagire Flusso di dati provenienti dai sensori Creare Tile e Layout interattivi Personalizzare temi e colori Microsoft Band NON esegue codice applicativo Microsoft Band fornisce un modello di estensione, non una piattaforma applicativa richiesto un Telefono/Tablet/PC Microsoft Band e un dispositivo di input e un display ausiliario Disponibile per Windows, iOS e Android Windows Phone 8.1 e successivi Windows 8.1 e successivi (Store Apps) iOS 7 e successivi Android 4.2 (API 17) e successivi Microsoft Band SDK http://developer.microsoftband.com/
  8. 8. Requisiti minimi: Visual Studio 2013 o successive In caso di Windows Phone, e necessario installare Windows Phone SDK add-on per Visual Studio (gia presente nei VS 2013 con update 2 o successivi). Si aggancia alla nostra app tramite NuGet. Deve essere aggiunta la capability bluetooth.rfcomm nel manifest Deve essere impostata la capability Proximity nel manifest Microsoft Band SDK
  9. 9. Il Band deve essere in pairing con il device. La classe BandClientManager fornisce accesso ai Band: GetBandsAsync: fornisce lelenco dei Band visibili (IBandInfo) ConnectAsync: esegue la connessione ad un Band specifico (IBandClient) Connettersi ad un Band BandInfo = (await BandClientManager.Instance.GetBandsAsync()).FirstOrDefault(); if (BandInfo != null) BandClient = await BandClientManager.Instance.ConnectAsync(BandInfo);
  10. 10. IBandClient fornisce accesso a tutte le funzionalit esposte da un singolo Band Connettersi ad un Band - IBandClient Notifiche Personalizzazione Sensori Tile e pagine
  11. 11. Il device (ad es. Phone) deve essere connesso al Band. Si ottiene una eccezione se viene persa la connessione. Alcuni sensori richiedono il consenso esplicito dellutente (ad es. Heart Rate). Luso prolungato dello streaming ha effetto sul consumo di batteria Accesso ai sensori Sensore Dettagli misurazione Heart Rate BPM, qualita lettura Accelerometer Accelerazione (in unita g) lungo gli assi X, Y e Z Gyroscope Velocita angolare (in gradi al secondo) lungo gli assi X, Y e Z Distance Distanza totale (cm), velocita (in cm/s), passo (in ms/m) e stato Pedometer Numero totale dei passi Skin Temp Temperatura della pelle (in gradi Celsius) UV Intensita dellesposizione UV (numero di screto di valori) Band Contact Band indossato o meno Calories Numero totale di calorie
  12. 12. Laccesso ai sensori avviene attraverso IBandSensorManager. IBandSensorManager espone una propriet (di tipo IBandSensor) per ogni sensore. Per alcuni sensori possibile variare lintervallo di reporting. IBandSensor prevede un approccio ad eventi. Il sensore di contatto prevede anche la possibilit di eseguire polling. Accesso ai sensori
  13. 13. Gli step necessari per poter ottenere i dati da un sensore sono: 1. Verificare il consenso dellutente e, eventualmente, richiederlo 2. Sottoscrivere levento ReadingChanged 3. Avviare lo stream dei dati Accesso ai sensori if (BandClient.SensorManager.HeartRate.GetCurrentUserConsent() == UserConsent.Granted) BandClient.SensorManager.HeartRate.ReadingChanged += HeartRate_ReadingChanged; if (BandClient.SensorManager.HeartRate.GetCurrentUserConsent() != UserConsent.Granted) await BandClient.SensorManager.HeartRate.RequestUserConsentAsync(); await BandClient.SensorManager.HeartRate.StartReadingsAsync()
  14. 14. Levento ReadingChanged permette di gestire i dati caratteristici del sensore Accesso ai sensori private async void HeartRate_ReadingChanged(object sender, BandSensorReadingEventArgs e) { txtHeartRateValue.Text = e.SensorReading.HeartRate.ToString(); txtHeartRateQuality.Text = e.SensorReading.Quality.ToString(); txtHeartRateTimestamp.Text = e.SensorReading.Timestamp.ToString(); }
  15. 15. DEMO Sensori
  16. 16. Ogni app pu creare una o pi Tile nella strip del Band. La strip supporta fino a 13 tile. Ogni Tile pu avere: una icona di dimensioni 46px x 46px una icona piccola 24px x 24px (utilizzata quando vi sono notifiche) un titolo o un nome per la tile un GUID identificativo della tile Un tema per la tile (di default viene preso quello del Band) Ogni Tile pu avere, al suo interno fino a 8 pagine, ognuna delle quali pu contenere messaggi con layout predefinito o pagine con layout custom. Le icone devono essere alpha-blended (non sono supportati i colori) Tile
  17. 17. Le tile vengono gestite tramite la ITileManager esposta dalla IBandClient Tile Aggiunge una nuova tile alla strip del Band Restituisce il numero degli slot disponibili per le tile della strip del band Restituisce lelenco delle tile aggiunte dallapplicazione Rimuove una tile dalla strip del Band
  18. 18. Una tile modellata dalla classe BandTile. Tile var TileGuid = new Guid("42356072-8168-47AC-A78A-1E0B280EC3FB"); var tile = new BandTile(TileGuid); tile.Name = "Mia Tile"; tile.IsBadgingEnabled = true; var icon = await BitmapFactory.New(1, 1) .FromContent(new Uri("ms-appx:///Assets/LargeTile.png")); tile.TileIcon = icon.ToBandIcon(); var smallIcon = await BitmapFactory.New(1, 1) .FromContent(new Uri("ms-appx:///Assets/SmallTile.png")); tile.SmallIcon = smallIcon.ToBandIcon();
  19. 19. 1. Verificare che la tile non sia gi presente: 2. Verificare che vi sia ancora spazio negli slot della strip: 3. Aggiungere la tile: Aggiungere una Tile var tiles = await BandClient.TileManager.GetTilesAsync(); var appTile = tiles.FirstOrDefault(t => t.TileId == TileGuid); var tileCapacity = await BandClient.TileManager.GetRemainingTileCapacityAsync(); if (tileCapacity > 0) { // Aggiungere la tile } if (await BandClient.TileManager.AddTileAsync(tile)) await ShowMessage("Tile creata con successo"); else await ShowMessage("Errore nella creazione della Tile");
  20. 20. Le tile vengono gestite tramite la IBandNotificationManager esposta dalla IBandClient Messagge: una notifica, inviata ad una tile particolare, composta da un titolo e da un testo che rimane memorizzata nel device (in una pagina della tile). Il message pu generare un avvertimento o meno (haptics); Dialog: una notifica, inviata ad una tile particolare, composta da un titolo e da un testo ma non rimane memorizzata tra i messaggi della tile e genera sempre un avvertimento per lutente ( un vero e proprio dialog); Haptics: una notifica di tipo vibrazione inviata al Band. Notifiche Invia un messagio al Band Visualizza un dialog sul band Invia un Haptics al Band
  21. 21. 1. Ricavare lid della Tile a cui inviare la notifica: 2. Inviare la notifica alla Tile: Inviare una Notifica var tiles = await BandClient.TileManager.GetTilesAsync(); var appTile = tiles.FirstOrDefault(t => t.TileId == TileGuid); await BandClient.NotificationManager.ShowDialogAsync(appTile.TileId, "Dialog Title", "Dialog Message"); await BandClient.NotificationManager.SendMessageAsync(appTile.TileId, "Message Title", "Message", DateTimeOffset.Now, MessageFlags.None);
  22. 22. Le pagine custom vengono gestite tramite la ITileManager esposta dalla IBandClient Pagine custom Rimuove una pagina custom da una Tile Imposta una pagina custom in una Tile Avvia la ricezione degli eventi generati dalle tile e dalle pagine Ferma la ricezione degli eventi generati dalle tile e dalle pagine Eventi generati dalle tile e dalle pagine
  23. 23. Ogni tile pu ospitare fino a 8 pagine (standard o custom). Quando lutente tappa sulla tile, viene mostrata la prima pagina. Ogni tile pu avere 5 differenti layout. Ciascuna delle pagine pu utilizzare uno dei 5 layout. Pagine custom
  24. 24. Il layout di una pagina composto da: Elementi primitivi TextBlock, WrappedTextBlock, Icon, Barcode, TextButton, FilledButton Container FlowPanel, ScrollFlowPanel, FilledPanel I container possono essere innestati tra loro (eccetto per il FilledPanel che puo essere utilizzato solo come root). Possono essere definite fino a 8 icone da utilizzare nel controllo Icon oltre le icone utilizzate per la tile. Ogni element della pagina e individuabile grazie ad un ElementId Pagine custom
  25. 25. Creare un page layout ScrollFlowPanel panel = new ScrollFlowPanel { Rect = new PageRect(0, 0, 245, 102), Orientation = FlowPanelOrientation.Horizontal }; panel.Elements.Add(new TextButton() { ElementId = (short)LayoutElementId.YesButton, Rect = new PageRect(0, 0, 100, 50), PressedColor = new BandColor(0xFF, 0x00, 0x00), Margins = new Margins(5, 0, 5, 0) }); panel.Elements.Add(new TextButton() { ElementId = (short)LayoutElementId.NoButton, Rect = new PageRect(0, 0, 100, 50), PressedColor = new BandColor(0xFF, 0x00, 0x00), Margins = new Margins(5, 0, 5, 0) }); PageLayout layout = new PageLayout(panel); ScrollFlowPanel TextButton YesButton TextButton NoButton
  26. 26. Per aggiungere una pagina ad una tile sufficiente: 1. Aggiungere i layout alla collezione dei layout (fino a 5) utilizzabili per le pagine: 2. Creare il PageData (il pacchetto che come riempire la pagina): 3. Impostare la pagina: Aggiungere una pagina alla Tile var pageLayout = CreatePageLayout(); tile.PageLayouts.Add(pageLayout); var pageData = new PageData(MainPageId, (short)PageLayoutId.MainPageIndex, new TextButtonData((short)LayoutElementId.YesButton, "Yes"), new TextButtonData((short)LayoutElementId.NoButton, "No")); if (await BandClient.TileManager.SetPagesAsync(tile.TileId, pageData)) await ShowMessage("Pagina aggiunta con successo!"); else await ShowMessage("Pagina non aggiunta!");
  27. 27. Il PageData definisce come riempire i controlli presenti in un layout. Values e una collezione di PageElementData Ogni elemento primitivo ha un Data Struttura del PageData
  28. 28. Linterfaccia IBandTileManager espone i tre eventi: TileOpened: viene sollevato quando lutente tappa su una tile; TileClosed: viene sollevato quando lutente preme il bottone back; TileButtonPressed: viene sollevato quando lutente preme un bottone in una pagina della tile. Largomento degli eventi fornisce il Guid della Tile che ha generato levento, il Guid della pagina e il Guid del bottone. Registrati i gestori di evento, sufficiente attivare linvio degli eventi con il metodo StartReadingAsync(). Gestire linterazione utente BandClient.TileManager.TileOpened += EventHandler_TileOpened; BandClient.TileManager.TileClosed += EventHandler_TileClosed; BandClient.TileManager.TileButtonPressed += EventHandler_TileButtonPressed; await BandClient.TileManager.StartReadingsAsync();
  29. 29. DEMO Tile
  30. 30. Personalizzare il tema impostando opportunamente i colori. Cambiare limmagine di sfondo della Me Tile Personalizzazione
  31. 31. La personalizzazione e gestita dallinterfaccia IBandPersonalizationManager Immagine MeTile: Tema: Personalizzazione var meTileImage = await BandClient.PersonalizationManager.GetMeTileImageAsync(); await BandClient.PersonalizationManager.SetMeTileImageAsync(meTileImage); var bandTheme = await BandClient.PersonalizationManager.GetThemeAsync(); await BandClient.PersonalizationManager.SetThemeAsync(bandTheme);
  32. 32. DEMO Temi
  33. 33. Microsoft Band SDK http://developer.microsoftband.com/ Microsoft Band Official Site https://www.microsoft.com/microsoft-band Build2015 - Microsoft Band: Developing for Microsoft Band and Microsoft Health http://channel9.msdn.com/Events/Build/2015/2-619 Riferimenti
  34. 34. Grazie a tutti per la partecipazione Riceverete il link per il download a slide e demo via email nei prossimi giorni Per contattarmi [email protected] Grazie