CL Development - Software Development & IT-Systeme

Microsoft Band - Eigene App auf dem Band

Mit dem Microsoft Band kann man jede App auf das Handgelenk bringen. Egal ob Windows Phone, Android oder IOS, mit jedem Betriebssystem kann das Microsoft Band verwendet werden. Leider sind noch nicht viele Apps auf dem Band verfügbar, obwohl es Microsoft den Entwicklern einfach gestaltet hat eine App auf dem Band anzuzeigen und auch die Sensoren zu verwenden.

Hier nun ein kleines Tutorial für die Entwicklung in Windows 8.1 oder Windows Phone 8.1 Apps.

Um ein App für das Microsoft Band zu entwickeln wird zunächst eine normale Windows Phone 8.1 Application benötigt. Wenn Sie das Band in eine bestehende App integrieren wollen können Sie diese App benutzen.
Des Weiteren benötigen wir ein Windows Phone mit WP8.1, welches als Entwickler-Gerät freigeschaltet ist, da es keinen "Band-Emulator" für die Entwicklung gibt.

 

Hinzufügen der Band-Komponenten

Um die Microsoft Band-Komponenten in das WIndows Phone Projekt zu laden, können Sie einfach die Paket-Manager-Konsole verwenden. Geben Sie dazu den folgenden Befehl in die Konsole ein:

Install-Package Microsoft.Band

Sie sollten dann die folgenden Verweise in Ihrem Projekt haben:

  • Windows.Band
  • Windows.Band.Phone
  • Windows.Band.Store

Um mit dem Band arbeiten zu können muss in den Funktionen (Package.appmanifest) "Internet (Client und Server)" aktiviert sein.

 

Verbinden mit dem Band

Da nun alle benötigten Verweise im Projekt sind können wir uns mit dem Band verbinden. Ich empfehle für das Arbeiten mit dem Band eine seperate Klasse zu erstellen, damit man auf die Funktionen von der ganzen App aus zugreifen kann.

Als erstes müssen wir dort die folgenden using-Direktiven einbinden.

using Microsoft.Band;
using Microsoft.Band.Tiles;
using Microsoft.Band.Tiles.Pages;
//optional für Notifications oder z.B. Vibrieren
using Microsoft.Band.Notifications;

Danach können damit beginnen uns mit dem Band zu Verbinden. Damit wir uns mit dem Band verbinden können muss es per Bluetooth mit unserem Gerät verbunden sein und in der Microsoft Health App als "Mein Band" hinterlegt sein. Für eine Verbindung mit dem Band steht uns der BandClientManager zur Verfügung.

IBandInfo myBand = null;
IBandClient myPairedBand = null;
//Abrufen der verbundenen Bands
IBandInfo[] pairedBands = await BandClientManager.Instance.GetBandsAsync();
if (pairedBands.Length >= 1)
{
// Auswählen des ersten Bands
myBand = pairedBands[0];
}
if(myBand != null)
{
// Verbindung zum Band herstellen
myPairedBand = await BandClientManager.Instance.ConnectAsync(myBand);
}

Nun sind wir mit dem Band verbunden und uns steht das Band mit myPairedBand zur Verfügung.

 

Erstellen einer Kachel (Tile)

Auf dem Band wird jede Anwendung als Tile erstellt. Um Tiles zu erstellen oder um auf die Tiles zuzugreifen wird der TileManager des Band-Objekts genutzt. Zunächst rufen wir die Tiles ab, um zu prüfen ob bereits eine Tile für unsere App angelegt wurde. Identifiziert werden die Tiles über eine GUID. Diese sollte man beim ersten Hinzufügen der Tile generieren und sich dann in der App speichern oder eine feste GUID in der App hinterlegen. In diesem Beispiel ist die GUID in der Variable globalAppTileGuid gespeichert.

BandTile myAppTile = null;
try
{
//Abrufen der vorhandenen Tiles für diese App
IEnumerable tiles = await myPairedBand.TileManager.GetTilesAsync();
List tileList = tiles.ToList();
myAppTile = tileList.First(x => x.TileId == globalAppTileGuid);
}catch(Exception)
{
//Fehler bzw. Tile nicht gefunden
}

Wir gehen jetzt davon aus, dass keine Tile für unsere Anwendung gefunden wurde bzw. unsere gewünschte Tile nicht dabei ist. Diese werden wir jetzt Anlegen. In dem nächsten Beispiel wird eine Tile für die App erstellt, welche 3 Buttons auf der Seite hat, welche mit 1, 2 und 3 beschriftet sind.

// Erstellen des neuen Tile-Objekts mit der Tile GUID
BandTile myAppTile = new BandTile(globalAppTileGuid)
{
Name = "Test Tile",
//Hinterlegen der Tile Icons
TileIcon = await LoadIcon("ms-appx:///Assets/LargeTileIcon.png"), // 46x46px
SmallIcon = await LoadIcon("ms-appx:///Assets/SmallTileIcon.png") // 24x24px
};

//Erstellen der Buttons
//Die ElementId wird zum Identifizieren des Buttons benötigt
TextButton button1 = new TextButton() { ElementId = 1, Rect = new PageRect(10, 10, 75, 90) };
TextButton button2 = new TextButton() { ElementId = 2, Rect = new PageRect(10, 10, 75, 90) };
TextButton button3 = new TextButton() { ElementId = 3, Rect = new PageRect(10, 10, 75, 90) };

//Erstellen von Panels, auf denen die Buttons platziert werden
FilledPanel panel1 = new FilledPanel(button1) { Rect = new PageRect(0, 0, 80, 100) };
FilledPanel panel2 = new FilledPanel(button2) { Rect = new PageRect(0, 0, 80, 100) };
FilledPanel panel3 = new FilledPanel(button3) { Rect = new PageRect(0, 0, 80, 100) };


//Erstellen des Hauptpanels der Tile
//Als Parameter werden im FlowPanel die Controls übergeben, welche angezeigt werden sollen
FlowPanel contentPanel = new FlowPanel(prevButton, playButton, nextButton)
{
Orientation = FlowPanelOrientation.Horizontal, // Horizontal Anordnen
Rect = new PageRect(0, 0, 245, 102), // Größe des FlowPanels
ElementId = 4 // ID zum Identifizieren
};

//Die Elemente als Layout anhängen
myAppTile.PageLayouts.Add(new PageLayout(contentPanel));

Nun haben wir das Layout der Tile erstellt. Als nächstes wird die Tile dem Band hinzugefügt. Den Inhalt, also unsere Texte auf den Buttons, werden erst danach an das Band gesendet.

 

Tile dem Band hinzufügen

Nachdem nun die Tile erstellt ist, können wir diese auf das Band bringen. Dafür verwenden wir wieder den TileManager. Nach dem Hinzufügen der Tile, können wir dann Events abonieren oder Inhalte hinzufügen.

if (await myPairedBand.TileManager.AddTileAsync(myAppTile))
{
// Daten in der Tile eintragen
await StaticHolder.bandClient.TileManager.SetPagesAsync(globalAppTileGuid,
new PageData(Guid.NewGuid(),
0,
new TextButtonData(PREV_ID, "1"),
new TextButtonData(PLAY_ID, "2"),
new TextButtonData(NEXT_ID, "3")));
// Event abonieren, wenn ein Button geklickt wird
myPairedBand.TileManager.TileButtonPressed += EventHandler_TileButtonPressed;
// Event abonieren, wenn die Tile geöffnet wird
myPairedBand.TileManager.TileOpened += EventHandler_TileOpened;
// Event abonieren, wenn die Tile wieder verlassen wird
myPairedBand.TileManager.TileClosed += EventHandler_TileClosed;

// Event lesen Starten
await myPairedBand.TileManager.StartReadingsAsync();
}

Nun ist die App auf dem Band und kann dort verwendet werden. Damit wir auch sehen, dass es funktioniert, fügen wir noch Vibrationen in das Button Event ein.

void EventHandler_TileButtonPressed(object sender, BandTileEventArgs e)
{
switch(e.TileEvent.ElementId)
{
// Button "1" - Notification Alarm
case 1: myPairedBand.NotificationManager.VibrateAsync(VibrationType.NotificationAlarm);
// Button "2" - Notification Timer
case 2: myPairedBand.NotificationManager.VibrateAsync(VibrationType.NotificationTimer);
// Button "3" - RampDown
case 3: myPairedBand.NotificationManager.VibrateAsync(VibrationType.RampDown);
}
}

Nun ist der Code für das Testprojekt fertig. Ihre App sollte einen Button zum Hinzufügen und Löschen der AppTile beinhalten, da beim Hinzufügen eine Bestätigung vom Benutzer angefordert wird, ob die Tile auf dem Band installiert werden soll.

Wenn wir dann die App starten und die Tile hinzufügen, finden wir die Tile nach einer kurzen Synchronisation auf dem Band. Öffnen Sie die Tile und drücken Sie die Buttons, welche dieses mit der hinterlegten Vibration bestätigen.

 

Zum Abschluss ein paar Links mit Informationen zur Band-Entwicklung und den Beispielen für Android und IOS:

7 Kommentar(e)

vagra_sale 01. Dec 2016, 10:24

You asked for /pills-vagra sale/, but despite our computers looking very hard, we could not find it.

cialis 28. Dec 2016, 15:28

When the personality provides for the pride s buy discount cialis online cialis paulie knows barney fife .

discount_cialis 25. Jan 2017, 15:50

Buy discount cialis for online talked of his pairs and privates.

online 28. Feb 2017, 08:15

cialis online nz new zealand is very good for multiple erections.

generic_cialis 24. Mar 2017, 17:22

Actually I guess generic cialis is for women.

tadacip 19. Apr 2017, 17:10

Anadia daily cialis tadacip cipl Ovar viagra medicamento Vale de Cambra v is for viagra Ovar cialis o que ?

internet 12. May 2017, 15:05

are internet payday loans legal in nebraskas a month, if you can get a prescription for those amounts.