在Microsoft Band上显示图片

6
我想创建一个类似于星巴克应用程序的应用程序,它带有手环能显示条形码。我可以在云端或本地设备上生成JPG图像作为条形码,但需要能够在手环屏幕上显示它们。到目前为止,我还没有找到使用Band Client在应用程序中显示图像的方法。
Band客户端具有以下管理器:
- 通知管理器 - 个性化管理器 - 瓷砖管理器 - 传感器管理器
我能想到最接近的是通知管理器,但它上面只有三个方法:SendMessageAsync、ShowDialogAsync和VibrateAsync,都无法完成该任务。你有什么好点子吗?现在我认为从UI角度来看SDK的功能相当有限。

丑陋的黑客警告:您可以将条形码发送到“MeTile”(主瓷砖):D 好吧,这不是一个漂亮的解决方案,但现在它是您添加推送图像的唯一位置。因此,一个丑陋的黑客将是获取MeTile,保存使用的图像,推送条形码,然后让用户重置为先前的图像或尝试在经过X时间后重置它。不确定图像顶部的时钟会对读取条形码产生多大干扰。 - Iris Classon
3个回答

4

今天更新的SDK现在支持条形码(还有一些其他更改)。SDK也已经不再是预览版了!

新增:

  • 丰富内容磁贴- 条形码和图标
  • 列表项
  • 我们可以拥有按钮!(我竟然对一个按钮感到如此兴奋)
  • 我们可以监听磁贴和按钮事件
  • 访问新数据- 卡路里
  • Windows手机后台支持
  • iOS远程或本地通知

以下是来自新样例应用的一些条形码代码。

        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).";
    }

只支持两种类型的条形码,不支持QR码。当我想要预生成带有条形码的JPG图像,并且只想在一个带中显示图像时,我遇到了相同的情况。这可行吗? - Mando
@AlexeyStrakh 看看我的答案。它是可能的,但不是那么容易或有用。 - Dave Williams

1

目前Microsoft Band SDK预览版不支持创建自定义磁贴布局。您的观察是正确的,您可以创建一个磁贴并向其发送消息,最近8条消息(根据时间戳)将显示在磁贴中。


0

有一种方法。它非常棘手,且仅限于某些数据大小。

可以将图标(实际上最多可达8个)上传到您的磁贴中。

图标必须是48x48透明PNG格式。

对于QR码,这意味着具有白色图像,其中QR码的黑色部分是透明的。

enter image description here

上面的图片是1。如果你将黑色变成透明,然后使用例如webqr,你就可以测试并查看它是否有效。(我无法用PNG演示,因为SO不喜欢透明度)。

将其上传到手环上与上传图标一样正常(参见教程),只需将ColorSource设置为自定义,将Color设置为(255,255,255)白色。

我成功地能够上传并扫描我的手环。

但是我要注意的是,它并不特别用户友好,因为手环上的图标太小了,扫描器可能会有困难。

我将向微软发布反馈,因为我认为这将是一个非常有用的功能,实现QR码对他们来说应该很容易。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接