SlideShare a Scribd company logo
1 of 34
Template designed by
Massimo Bonanni
massimo.bonanni@tiscali.it
http://codetailor.blogspot.com
@massimobonanni
Sviluppare per Microsoft Band
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
Cos’è Microsoft Band
Microsoft Band SDK
Connettersi ad un Band
Accesso ai Sensori
Tile, Notifiche e Page
Personalizzazione
Conclusioni
Agenda
10 Gyroscope
10
Wearable Device
10 sensori
Schermo Touch
Cos’è Microsoft Band
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
Consente alle applicazioni di estendere e potenziare l’esperienza 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/
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
<m2:DeviceCapability Name="bluetooth.rfcomm">
<m2:Device Id="any">
<!-- Used by the Microsoft Band SDK -->
<m2:Function Type="serviceId:A502CA9A-2BA5-413C-A4E0-13804E47B38F" />
<!-- Used by the Microsoft Band SDK -->
<m2:Function Type="serviceId:C742E1A2-6320-5ABC-9643-D206C677E580" />
</m2:Device>
</m2:DeviceCapability>
Il Band deve essere in pairing con il device.
La classe BandClientManager fornisce accesso ai Band:
• GetBandsAsync: fornisce l’elenco 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);
IBandClient fornisce accesso a tutte le funzionalità esposte da un
singolo Band
Connettersi ad un Band - IBandClient
Notifiche
Personalizzazione
Sensori
Tile e pagine
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 dell’utente
(ad es. Heart Rate).
L’uso 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’ dell’esposizione UV (numero di screto di valori)
Band Contact Band indossato o meno
Calories Numero totale di calorie
L’accesso ai sensori avviene attraverso
IBandSensorManager.
IBandSensorManager espone una proprietà
(di tipo IBandSensor<T>) per ogni sensore.
Per alcuni sensori è possibile variare
l’intervallo di reporting.
IBandSensor<T> prevede un approccio ad
eventi.
Il sensore di contatto prevede anche la
possibilità di eseguire polling.
Accesso ai sensori
Gli step necessari per poter ottenere i dati da un sensore sono:
1. Verificare il consenso dell’utente e, eventualmente, richiederlo
2. Sottoscrivere l’evento 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()
L’evento ReadingChanged permette di gestire i dati caratteristici
del sensore
Accesso ai sensori
private async void HeartRate_ReadingChanged(object sender,
BandSensorReadingEventArgs<IBandHeartRateReading> e)
{
txtHeartRateValue.Text = e.SensorReading.HeartRate.ToString();
txtHeartRateQuality.Text = e.SensorReading.Quality.ToString();
txtHeartRateTimestamp.Text = e.SensorReading.Timestamp.ToString();
}
DEMO
Sensori
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
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 l’elenco delle tile aggiunte
dall’applicazione
Rimuove una tile dalla strip del Band
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();
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");
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 l’utente (è 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
1. Ricavare l’id 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);
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
Ogni tile può ospitare fino a 8 pagine (standard o custom).
Quando l’utente “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
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
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
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!");
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
L’interfaccia IBandTileManager espone i tre eventi:
• TileOpened: viene sollevato quando l’utente “tappa” su una tile;
• TileClosed: viene sollevato quando l’utente preme il bottone back;
• TileButtonPressed: viene sollevato quando l’utente preme un bottone in una pagina della tile.
L’argomento degli eventi fornisce il Guid della Tile che ha generato l’evento, il Guid della pagina e il
Guid del bottone.
Registrati i gestori di evento, è sufficiente attivare l’invio degli eventi con il metodo
StartReadingAsync().
Gestire l’interazione utente
BandClient.TileManager.TileOpened += EventHandler_TileOpened;
BandClient.TileManager.TileClosed += EventHandler_TileClosed;
BandClient.TileManager.TileButtonPressed += EventHandler_TileButtonPressed;
await BandClient.TileManager.StartReadingsAsync();
DEMO
Tile
Personalizzare il tema
impostando
opportunamente i colori.
Cambiare l’immagine di
sfondo della “Me Tile”
Personalizzazione
La personalizzazione e’ gestita dall’interfaccia
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);
DEMO
Temi
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
Grazie a tutti per la partecipazione
Riceverete il link per il download a slide e demo via email nei
prossimi giorni
Per contattarmi
massimo.bonanni@tiscali.it
Grazie

More Related Content

Viewers also liked

Applicazioni Windows Store con Kinect 2
Applicazioni Windows Store con Kinect 2 Applicazioni Windows Store con Kinect 2
Applicazioni Windows Store con Kinect 2 Massimo Bonanni
 
Windows Hello e Intel(r) RealSense(tm): attenti a questi due!!
Windows Hello e Intel(r) RealSense(tm): attenti a questi due!!Windows Hello e Intel(r) RealSense(tm): attenti a questi due!!
Windows Hello e Intel(r) RealSense(tm): attenti a questi due!!Massimo Bonanni
 
HTMLslide html
HTMLslide htmlHTMLslide html
HTMLslide htmlritalerede
 
HTML5 e Css3 - 3 | WebMaster & WebDesigner
HTML5 e Css3 - 3 | WebMaster & WebDesignerHTML5 e Css3 - 3 | WebMaster & WebDesigner
HTML5 e Css3 - 3 | WebMaster & WebDesignerMatteo Magni
 
HTML5 e Css3 - 1 | WebMaster & WebDesigner
HTML5 e Css3 - 1 | WebMaster & WebDesignerHTML5 e Css3 - 1 | WebMaster & WebDesigner
HTML5 e Css3 - 1 | WebMaster & WebDesignerMatteo Magni
 
Introduzione allo sviluppo UWP per xBox
Introduzione allo sviluppo UWP per xBoxIntroduzione allo sviluppo UWP per xBox
Introduzione allo sviluppo UWP per xBoxMassimo Bonanni
 
Introduzione ai Sistemi Operativi
Introduzione ai Sistemi OperativiIntroduzione ai Sistemi Operativi
Introduzione ai Sistemi OperativiorestJump
 
Guida introduttiva al css
Guida introduttiva al cssGuida introduttiva al css
Guida introduttiva al cssEnrico Mainero
 
Struttura di una pagina html
Struttura di una pagina htmlStruttura di una pagina html
Struttura di una pagina htmlEnrico Mainero
 
Html5 appunti.0
Html5   appunti.0Html5   appunti.0
Html5 appunti.0orestJump
 
HTML5 e Css3 - 4 | WebMaster & WebDesigner
HTML5 e Css3 - 4 | WebMaster & WebDesignerHTML5 e Css3 - 4 | WebMaster & WebDesigner
HTML5 e Css3 - 4 | WebMaster & WebDesignerMatteo Magni
 
Tecnologie informatiche
Tecnologie informaticheTecnologie informatiche
Tecnologie informaticheorestJump
 
Html5 e css3 nuovi strumenti per un nuovo web
Html5 e css3 nuovi strumenti per un nuovo webHtml5 e css3 nuovi strumenti per un nuovo web
Html5 e css3 nuovi strumenti per un nuovo webMassimo Bonanni
 
HTML5, CSS3 e JavaScript: Web app per tutti gli schermi by Marco Casario
HTML5, CSS3 e JavaScript: Web app per tutti gli schermi by Marco CasarioHTML5, CSS3 e JavaScript: Web app per tutti gli schermi by Marco Casario
HTML5, CSS3 e JavaScript: Web app per tutti gli schermi by Marco CasarioCodemotion
 
Html e Css - 3 | WebMaster & WebDesigner
Html e Css - 3 | WebMaster & WebDesignerHtml e Css - 3 | WebMaster & WebDesigner
Html e Css - 3 | WebMaster & WebDesignerMatteo Magni
 

Viewers also liked (20)

HTMLslide
HTMLslide HTMLslide
HTMLslide
 
Applicazioni Windows Store con Kinect 2
Applicazioni Windows Store con Kinect 2 Applicazioni Windows Store con Kinect 2
Applicazioni Windows Store con Kinect 2
 
Windows Hello e Intel(r) RealSense(tm): attenti a questi due!!
Windows Hello e Intel(r) RealSense(tm): attenti a questi due!!Windows Hello e Intel(r) RealSense(tm): attenti a questi due!!
Windows Hello e Intel(r) RealSense(tm): attenti a questi due!!
 
HTMLslide html
HTMLslide htmlHTMLslide html
HTMLslide html
 
Corso di HTML5 e CSS
Corso di HTML5 e CSSCorso di HTML5 e CSS
Corso di HTML5 e CSS
 
Html5
Html5Html5
Html5
 
HTML5 e Css3 - 3 | WebMaster & WebDesigner
HTML5 e Css3 - 3 | WebMaster & WebDesignerHTML5 e Css3 - 3 | WebMaster & WebDesigner
HTML5 e Css3 - 3 | WebMaster & WebDesigner
 
HTML5 e Css3 - 1 | WebMaster & WebDesigner
HTML5 e Css3 - 1 | WebMaster & WebDesignerHTML5 e Css3 - 1 | WebMaster & WebDesigner
HTML5 e Css3 - 1 | WebMaster & WebDesigner
 
Introduzione allo sviluppo UWP per xBox
Introduzione allo sviluppo UWP per xBoxIntroduzione allo sviluppo UWP per xBox
Introduzione allo sviluppo UWP per xBox
 
Introduzione ai Sistemi Operativi
Introduzione ai Sistemi OperativiIntroduzione ai Sistemi Operativi
Introduzione ai Sistemi Operativi
 
HTML - Primi Passi
HTML - Primi PassiHTML - Primi Passi
HTML - Primi Passi
 
Php mysql3
Php mysql3Php mysql3
Php mysql3
 
Guida introduttiva al css
Guida introduttiva al cssGuida introduttiva al css
Guida introduttiva al css
 
Struttura di una pagina html
Struttura di una pagina htmlStruttura di una pagina html
Struttura di una pagina html
 
Html5 appunti.0
Html5   appunti.0Html5   appunti.0
Html5 appunti.0
 
HTML5 e Css3 - 4 | WebMaster & WebDesigner
HTML5 e Css3 - 4 | WebMaster & WebDesignerHTML5 e Css3 - 4 | WebMaster & WebDesigner
HTML5 e Css3 - 4 | WebMaster & WebDesigner
 
Tecnologie informatiche
Tecnologie informaticheTecnologie informatiche
Tecnologie informatiche
 
Html5 e css3 nuovi strumenti per un nuovo web
Html5 e css3 nuovi strumenti per un nuovo webHtml5 e css3 nuovi strumenti per un nuovo web
Html5 e css3 nuovi strumenti per un nuovo web
 
HTML5, CSS3 e JavaScript: Web app per tutti gli schermi by Marco Casario
HTML5, CSS3 e JavaScript: Web app per tutti gli schermi by Marco CasarioHTML5, CSS3 e JavaScript: Web app per tutti gli schermi by Marco Casario
HTML5, CSS3 e JavaScript: Web app per tutti gli schermi by Marco Casario
 
Html e Css - 3 | WebMaster & WebDesigner
Html e Css - 3 | WebMaster & WebDesignerHtml e Css - 3 | WebMaster & WebDesigner
Html e Css - 3 | WebMaster & WebDesigner
 

Similar to Sviluppare per Microsoft Band

SVILUPPARE PER MICROSOFT BAND
SVILUPPARE PER MICROSOFT BANDSVILUPPARE PER MICROSOFT BAND
SVILUPPARE PER MICROSOFT BANDDotNetCampus
 
Progettazione per Apple Watch - Todi Appy Days 2015
Progettazione per Apple Watch - Todi Appy Days 2015Progettazione per Apple Watch - Todi Appy Days 2015
Progettazione per Apple Watch - Todi Appy Days 2015Todi Appy Days
 
Wearable Lab: Progettazione per Apple Watch
Wearable Lab: Progettazione per Apple WatchWearable Lab: Progettazione per Apple Watch
Wearable Lab: Progettazione per Apple WatchPaolo Musolino
 
Push Notification, Live Tile e Background Agent
Push Notification, Live Tile e Background AgentPush Notification, Live Tile e Background Agent
Push Notification, Live Tile e Background AgentDomusDotNet
 
Presentazione: Sviluppo di un hub di comunicazione in una applicazione per po...
Presentazione: Sviluppo di un hub di comunicazione in una applicazione per po...Presentazione: Sviluppo di un hub di comunicazione in una applicazione per po...
Presentazione: Sviluppo di un hub di comunicazione in una applicazione per po...gwalter85
 
SkyMedia: La tecnologia al servizio dell'intrattenimento
SkyMedia: La tecnologia al servizio dell'intrattenimentoSkyMedia: La tecnologia al servizio dell'intrattenimento
SkyMedia: La tecnologia al servizio dell'intrattenimentoMavigex srl
 
Android - ishan fernando - android nfc presentation
Android - ishan fernando - android nfc presentationAndroid - ishan fernando - android nfc presentation
Android - ishan fernando - android nfc presentationWhymca
 
Whymca nfc presentation
Whymca nfc presentationWhymca nfc presentation
Whymca nfc presentationMyti S.r.l.
 
Whymca nfc presentation
Whymca nfc presentationWhymca nfc presentation
Whymca nfc presentationMyti S.r.l.
 
SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!
SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!
SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!DotNetCampus
 
Signal r to the-max
Signal r to the-maxSignal r to the-max
Signal r to the-maxDotNetCampus
 
Del furia signalr-to-the-max
Del furia   signalr-to-the-maxDel furia   signalr-to-the-max
Del furia signalr-to-the-maxDotNetCampus
 
Android & Bluetooth: hacking e applicazioni
Android & Bluetooth: hacking e applicazioniAndroid & Bluetooth: hacking e applicazioni
Android & Bluetooth: hacking e applicazioniStefano Sanna
 
WEBdeBS NFC Presentation
WEBdeBS NFC PresentationWEBdeBS NFC Presentation
WEBdeBS NFC PresentationMyti S.r.l.
 
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOT
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOTUNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOT
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOTDotNetCampus
 
Modi innovativi per costruire App
Modi innovativi per costruire AppModi innovativi per costruire App
Modi innovativi per costruire AppCommit University
 
Asynchronous Java ME and XML
Asynchronous Java ME and XMLAsynchronous Java ME and XML
Asynchronous Java ME and XMLAndrea Castello
 

Similar to Sviluppare per Microsoft Band (20)

SVILUPPARE PER MICROSOFT BAND
SVILUPPARE PER MICROSOFT BANDSVILUPPARE PER MICROSOFT BAND
SVILUPPARE PER MICROSOFT BAND
 
Progettazione per Apple Watch - Todi Appy Days 2015
Progettazione per Apple Watch - Todi Appy Days 2015Progettazione per Apple Watch - Todi Appy Days 2015
Progettazione per Apple Watch - Todi Appy Days 2015
 
Wearable Lab: Progettazione per Apple Watch
Wearable Lab: Progettazione per Apple WatchWearable Lab: Progettazione per Apple Watch
Wearable Lab: Progettazione per Apple Watch
 
Push Notification, Live Tile e Background Agent
Push Notification, Live Tile e Background AgentPush Notification, Live Tile e Background Agent
Push Notification, Live Tile e Background Agent
 
Presentazione: Sviluppo di un hub di comunicazione in una applicazione per po...
Presentazione: Sviluppo di un hub di comunicazione in una applicazione per po...Presentazione: Sviluppo di un hub di comunicazione in una applicazione per po...
Presentazione: Sviluppo di un hub di comunicazione in una applicazione per po...
 
SkyMedia: La tecnologia al servizio dell'intrattenimento
SkyMedia: La tecnologia al servizio dell'intrattenimentoSkyMedia: La tecnologia al servizio dell'intrattenimento
SkyMedia: La tecnologia al servizio dell'intrattenimento
 
#dd12 Applicazioni a tre voci (Android e Domino)
#dd12 Applicazioni a tre voci (Android e Domino)#dd12 Applicazioni a tre voci (Android e Domino)
#dd12 Applicazioni a tre voci (Android e Domino)
 
Android - ishan fernando - android nfc presentation
Android - ishan fernando - android nfc presentationAndroid - ishan fernando - android nfc presentation
Android - ishan fernando - android nfc presentation
 
Whymca nfc presentation
Whymca nfc presentationWhymca nfc presentation
Whymca nfc presentation
 
Whymca nfc presentation
Whymca nfc presentationWhymca nfc presentation
Whymca nfc presentation
 
SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!
SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!
SIGNALR TO-THE-MAX: VERSO IL WEB ED OLTRE!
 
Signal r to the-max
Signal r to the-maxSignal r to the-max
Signal r to the-max
 
Del furia signalr-to-the-max
Del furia   signalr-to-the-maxDel furia   signalr-to-the-max
Del furia signalr-to-the-max
 
Android & Bluetooth: hacking e applicazioni
Android & Bluetooth: hacking e applicazioniAndroid & Bluetooth: hacking e applicazioni
Android & Bluetooth: hacking e applicazioni
 
WEBdeBS NFC Presentation
WEBdeBS NFC PresentationWEBdeBS NFC Presentation
WEBdeBS NFC Presentation
 
XPages Tips & Tricks, #dd13
XPages Tips & Tricks, #dd13XPages Tips & Tricks, #dd13
XPages Tips & Tricks, #dd13
 
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOT
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOTUNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOT
UNIVERSAL APP IN TUTTE LE SALSE: PHONE, TABLET, PC, XBOX E IOT
 
Modi innovativi per costruire App
Modi innovativi per costruire AppModi innovativi per costruire App
Modi innovativi per costruire App
 
Qt Lezione6
Qt Lezione6Qt Lezione6
Qt Lezione6
 
Asynchronous Java ME and XML
Asynchronous Java ME and XMLAsynchronous Java ME and XML
Asynchronous Java ME and XML
 

More from Massimo Bonanni

Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Massimo Bonanni
 
Durable Functions vs Logic App : la guerra dei workflow!!
Durable Functions vs Logic App : la guerra dei workflow!!Durable Functions vs Logic App : la guerra dei workflow!!
Durable Functions vs Logic App : la guerra dei workflow!!Massimo Bonanni
 
Stateful pattern con Azure Functions
Stateful pattern con Azure FunctionsStateful pattern con Azure Functions
Stateful pattern con Azure FunctionsMassimo Bonanni
 
Architetture Serverless con SQL Server e Azure Functions
Architetture Serverless con SQL Server e Azure FunctionsArchitetture Serverless con SQL Server e Azure Functions
Architetture Serverless con SQL Server e Azure FunctionsMassimo Bonanni
 
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...Massimo Bonanni
 
Stateful patterns in Azure Functions
Stateful patterns in Azure FunctionsStateful patterns in Azure Functions
Stateful patterns in Azure FunctionsMassimo Bonanni
 
The art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringThe art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringMassimo Bonanni
 
Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Massimo Bonanni
 
The art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringThe art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringMassimo Bonanni
 
Everything you always wanted to know about API Management (but were afraid to...
Everything you always wanted to know about API Management (but were afraid to...Everything you always wanted to know about API Management (but were afraid to...
Everything you always wanted to know about API Management (but were afraid to...Massimo Bonanni
 
Workflow as code with Azure Durable Functions
Workflow as code with Azure Durable FunctionsWorkflow as code with Azure Durable Functions
Workflow as code with Azure Durable FunctionsMassimo Bonanni
 
Xmas Serverless Transformation: when the elf doesn’t scale!
Xmas Serverless Transformation: when the elf doesn’t scale!Xmas Serverless Transformation: when the elf doesn’t scale!
Xmas Serverless Transformation: when the elf doesn’t scale!Massimo Bonanni
 
Welcome Azure Functions 2. 0
Welcome Azure Functions 2. 0Welcome Azure Functions 2. 0
Welcome Azure Functions 2. 0Massimo Bonanni
 
Discovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelDiscovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelMassimo Bonanni
 
Testing a Service Fabric solution and live happy!!
Testing a Service Fabric solution and live happy!!Testing a Service Fabric solution and live happy!!
Testing a Service Fabric solution and live happy!!Massimo Bonanni
 
Discovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelDiscovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelMassimo Bonanni
 
Soluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie MicrosoftSoluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie MicrosoftMassimo Bonanni
 
Project Gesture & Real Sense: il potere nelle mani!!
Project Gesture & Real Sense: il potere nelle mani!!Project Gesture & Real Sense: il potere nelle mani!!
Project Gesture & Real Sense: il potere nelle mani!!Massimo Bonanni
 

More from Massimo Bonanni (20)

Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!
 
Durable Functions vs Logic App : la guerra dei workflow!!
Durable Functions vs Logic App : la guerra dei workflow!!Durable Functions vs Logic App : la guerra dei workflow!!
Durable Functions vs Logic App : la guerra dei workflow!!
 
Stateful pattern con Azure Functions
Stateful pattern con Azure FunctionsStateful pattern con Azure Functions
Stateful pattern con Azure Functions
 
Architetture Serverless con SQL Server e Azure Functions
Architetture Serverless con SQL Server e Azure FunctionsArchitetture Serverless con SQL Server e Azure Functions
Architetture Serverless con SQL Server e Azure Functions
 
IoT in salsa serverless
IoT in salsa serverlessIoT in salsa serverless
IoT in salsa serverless
 
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
Tutto quello che avreste voluto sapere sull'API Management (e non avete mai o...
 
Stateful patterns in Azure Functions
Stateful patterns in Azure FunctionsStateful patterns in Azure Functions
Stateful patterns in Azure Functions
 
IoT in salsa Serverless
IoT in salsa ServerlessIoT in salsa Serverless
IoT in salsa Serverless
 
The art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringThe art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoring
 
Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!Empower every Azure Function to achieve more!!
Empower every Azure Function to achieve more!!
 
The art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoringThe art of Azure Functions (unit) testing and monitoring
The art of Azure Functions (unit) testing and monitoring
 
Everything you always wanted to know about API Management (but were afraid to...
Everything you always wanted to know about API Management (but were afraid to...Everything you always wanted to know about API Management (but were afraid to...
Everything you always wanted to know about API Management (but were afraid to...
 
Workflow as code with Azure Durable Functions
Workflow as code with Azure Durable FunctionsWorkflow as code with Azure Durable Functions
Workflow as code with Azure Durable Functions
 
Xmas Serverless Transformation: when the elf doesn’t scale!
Xmas Serverless Transformation: when the elf doesn’t scale!Xmas Serverless Transformation: when the elf doesn’t scale!
Xmas Serverless Transformation: when the elf doesn’t scale!
 
Welcome Azure Functions 2. 0
Welcome Azure Functions 2. 0Welcome Azure Functions 2. 0
Welcome Azure Functions 2. 0
 
Discovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelDiscovering the Service Fabric's actor model
Discovering the Service Fabric's actor model
 
Testing a Service Fabric solution and live happy!!
Testing a Service Fabric solution and live happy!!Testing a Service Fabric solution and live happy!!
Testing a Service Fabric solution and live happy!!
 
Discovering the Service Fabric's actor model
Discovering the Service Fabric's actor modelDiscovering the Service Fabric's actor model
Discovering the Service Fabric's actor model
 
Soluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie MicrosoftSoluzioni IoT con le tecnologie Microsoft
Soluzioni IoT con le tecnologie Microsoft
 
Project Gesture & Real Sense: il potere nelle mani!!
Project Gesture & Real Sense: il potere nelle mani!!Project Gesture & Real Sense: il potere nelle mani!!
Project Gesture & Real Sense: il potere nelle mani!!
 

Sviluppare per Microsoft Band

  • 1. Template designed by Massimo Bonanni massimo.bonanni@tiscali.it http://codetailor.blogspot.com @massimobonanni Sviluppare per Microsoft Band
  • 2. 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
  • 3. Cos’è Microsoft Band Microsoft Band SDK Connettersi ad un Band Accesso ai Sensori Tile, Notifiche e Page Personalizzazione Conclusioni Agenda
  • 4. 10 Gyroscope 10 Wearable Device 10 sensori Schermo Touch Cos’è Microsoft Band
  • 5. 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
  • 6. Consente alle applicazioni di estendere e potenziare l’esperienza 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/
  • 7. 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 <m2:DeviceCapability Name="bluetooth.rfcomm"> <m2:Device Id="any"> <!-- Used by the Microsoft Band SDK --> <m2:Function Type="serviceId:A502CA9A-2BA5-413C-A4E0-13804E47B38F" /> <!-- Used by the Microsoft Band SDK --> <m2:Function Type="serviceId:C742E1A2-6320-5ABC-9643-D206C677E580" /> </m2:Device> </m2:DeviceCapability>
  • 8. Il Band deve essere in pairing con il device. La classe BandClientManager fornisce accesso ai Band: • GetBandsAsync: fornisce l’elenco 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);
  • 9. IBandClient fornisce accesso a tutte le funzionalità esposte da un singolo Band Connettersi ad un Band - IBandClient Notifiche Personalizzazione Sensori Tile e pagine
  • 10. 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 dell’utente (ad es. Heart Rate). L’uso 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’ dell’esposizione UV (numero di screto di valori) Band Contact Band indossato o meno Calories Numero totale di calorie
  • 11. L’accesso ai sensori avviene attraverso IBandSensorManager. IBandSensorManager espone una proprietà (di tipo IBandSensor<T>) per ogni sensore. Per alcuni sensori è possibile variare l’intervallo di reporting. IBandSensor<T> prevede un approccio ad eventi. Il sensore di contatto prevede anche la possibilità di eseguire polling. Accesso ai sensori
  • 12. Gli step necessari per poter ottenere i dati da un sensore sono: 1. Verificare il consenso dell’utente e, eventualmente, richiederlo 2. Sottoscrivere l’evento 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()
  • 13. L’evento ReadingChanged permette di gestire i dati caratteristici del sensore Accesso ai sensori private async void HeartRate_ReadingChanged(object sender, BandSensorReadingEventArgs<IBandHeartRateReading> e) { txtHeartRateValue.Text = e.SensorReading.HeartRate.ToString(); txtHeartRateQuality.Text = e.SensorReading.Quality.ToString(); txtHeartRateTimestamp.Text = e.SensorReading.Timestamp.ToString(); }
  • 15. 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
  • 16. 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 l’elenco delle tile aggiunte dall’applicazione Rimuove una tile dalla strip del Band
  • 17. 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();
  • 18. 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");
  • 19. 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 l’utente (è 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
  • 20. 1. Ricavare l’id 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);
  • 21. 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
  • 22. Ogni tile può ospitare fino a 8 pagine (standard o custom). Quando l’utente “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
  • 23. 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
  • 24. 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
  • 25. 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!");
  • 26. 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
  • 27. L’interfaccia IBandTileManager espone i tre eventi: • TileOpened: viene sollevato quando l’utente “tappa” su una tile; • TileClosed: viene sollevato quando l’utente preme il bottone back; • TileButtonPressed: viene sollevato quando l’utente preme un bottone in una pagina della tile. L’argomento degli eventi fornisce il Guid della Tile che ha generato l’evento, il Guid della pagina e il Guid del bottone. Registrati i gestori di evento, è sufficiente attivare l’invio degli eventi con il metodo StartReadingAsync(). Gestire l’interazione utente BandClient.TileManager.TileOpened += EventHandler_TileOpened; BandClient.TileManager.TileClosed += EventHandler_TileClosed; BandClient.TileManager.TileButtonPressed += EventHandler_TileButtonPressed; await BandClient.TileManager.StartReadingsAsync();
  • 29. Personalizzare il tema impostando opportunamente i colori. Cambiare l’immagine di sfondo della “Me Tile” Personalizzazione
  • 30. La personalizzazione e’ gestita dall’interfaccia 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. 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
  • 33.
  • 34. Grazie a tutti per la partecipazione Riceverete il link per il download a slide e demo via email nei prossimi giorni Per contattarmi massimo.bonanni@tiscali.it Grazie