Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Displaying an image on Microsoft Band

I would like to create an app similar to the Starbucks app that comes with the band. I want to display bar codes. I can generate the barcodes as JPG images in the cloud or on the local device but I need to be able to display them on the band's screen. So far I have not found a way using the Band Client to display an image inside the app.

Band client has the following managers:

  • Notification Manager
  • Personalization Manager
  • Tile Manager
  • Sensor Manager

The closest thing I can think of is the Notification Manager that would do it but the only methods on that are:

  • SendMessageAsync
  • ShowDialogAsync
  • VibrateAsync

None of which do the job. Any ideas? Right now I am thinking the SDK is just rather limited in what it can do from a UI perspective.

like image 817
markti Avatar asked Mar 03 '15 15:03

markti


1 Answers

Bar codes are now supported in the SDK which was updated today (and a few more changes). The SDK is also out of preview woho!

new:

  • Rich content tiles – barcodes and icons
  • List item
  • We can have buttons! (can’t believe I’m that excited about a button)
  • We can listen for tile and button events
  • Access to new data- calories
  • Windows phone background support
  • iOS remote or local notifications

Here is some barcode code from the new sample app uploaded.

        using (IBandClient bandClient = await BandClientManager.Instance.ConnectAsync(pairedBands[0]))
    {
        var myCardTextBlock = new TextBlock()
        {
            Color = Colors.Blue.ToBandColor(),
            ElementId = 1, 
            Rect = new PageRect(0, 0, 200, 25)
        };
        var barcode = new Barcode(BarcodeType.Code39)
        {
            ElementId = 2, 
            Rect = new PageRect(0, 0, 250, 50)
        };
        TextBlock digitsTextBlock = new TextBlock()
        {
            ElementId = 3,
            Rect = new PageRect(0, 0, 200, 25)
        };
        FlowPanel panel = new FlowPanel(myCardTextBlock, barcode, digitsTextBlock)
        {
            Orientation = FlowPanelOrientation.Vertical,
            Rect = new PageRect(0, 0, 250, 100)
        };


        Guid myTileId = new Guid("D781F673-6D05-4D69-BCFF-EA7E706C3418");
        BandTile myTile = new BandTile(myTileId)
        {
            Name = "My Tile",
            TileIcon = await LoadIcon("ms-appx:///Assets/SampleTileIconLarge.png"),
            SmallIcon = await LoadIcon("ms-appx:///Assets/SampleTileIconSmall.png")
        };
        myTile.PageLayouts.Add(new PageLayout(panel));


        await bandClient.TileManager.AddTileAsync(myTile);

        PageData page = new PageData(
            Guid.NewGuid(), 
            0, 
            new TextBlockData(myCardTextBlock.ElementId.Value, "MY CARD"),
            new BarcodeData(barcode.BarcodeType, barcode.ElementId.Value, "123456789"),
            new TextBlockData(digitsTextBlock.ElementId.Value, "123456789"));

        await bandClient.TileManager.SetPagesAsync(myTile.TileId, page);

        this.viewModel.StatusMessage = "Done. Check the Tile on your Band (it's the last Tile).";
    }
like image 149
Iris Classon Avatar answered Dec 31 '22 19:12

Iris Classon