从 UWP phone 应用更新现有的 Microsoft Band Tile
Updating an existing Microsoft Band Tile from UWP phone app
我正在使用 UWP 开发 Microsoft Band 2 应用程序,因为我正在尝试从该应用程序访问现有的 Tile 以更新 Tile PageLayout 背景。
我写了下面的代码来创建 tile
IBandInfo[] pairedBands = await BandClientManager.Instance.GetBandsAsync();
if (pairedBands.Count() > 0)
{
try
{
using (IBandClient bandClient = await BandClientManager.Instance.ConnectAsync(pairedBands[0]))
{
// do work after successful connect
// get the current set of tiles
IEnumerable<BandTile> tiles = await bandClient.TileManager.GetTilesAsync();
if (tiles.Count() == 0)
{
int tileCapacity = await bandClient.TileManager.GetRemainingTileCapacityAsync();
if (tileCapacity > 0)
{
// create a new Guid for the tile
Guid tileGuid = Guid.NewGuid();
// create a new tile with a new Guid
BandTile tile = new BandTile(tileGuid)
{
// enable badging (the count of unread messages)
// IsBadgingEnabled = true,
// set the name
Name = "Torch Tile",
TileIcon = await LoadIcon("ms-appx:///Assets/Electric Bulb.png"),
SmallIcon = await LoadIcon("ms-appx:///Assets/Torchsmaltile.png")
};
var panel = new FilledPanel
{
//ElementId = 0,
Rect = new PageRect(0, 0, 260, 128),
BackgroundColor = bandcolor
};
var layout = new PageLayout(panel);
tile.PageLayouts.Add(layout);
try
{
// add the tile to the Band
if (await bandClient.TileManager.AddTileAsync(tile))
{
List<PageData> pageDataArray = new List<PageData>();
pageDataArray.Add(new PageData(pageguid, 0, new FilledButtonData(0, Colors.Transparent.ToBandColor())));
await bandClient.TileManager.SetPagesAsync(
tileGuid, pageDataArray);
}
}
catch (BandException ex)
{
// handle a Band connection exception }
}
}
}
}
}
catch (BandException e)
{
// handle BandException
}
}
以下是我尝试更新磁贴但不起作用的代码。
IBandInfo[] pairedBands = await BandClientManager.Instance.GetBandsAsync();
if (pairedBands.Count() > 0)
{
try
{
using (IBandClient bandClient = await BandClientManager.Instance.ConnectAsync(pairedBands[0]))
{
// do work after successful connect
// get the current set of tiles
IEnumerable<BandTile> tiles = await bandClient.TileManager.GetTilesAsync();
if (tiles.Count() > 0)
{
foreach (var tile in tiles)
{
foreach (var pageLayout in tile.PageLayouts)
{
var panel = pageLayout.Root as FilledPanel;
panel.BackgroundColor = Colors.Green.ToBandColor();
pageLayout.Root = panel;
}
}
}
}
}
catch (Exception ex)
{
}
}
在pageLayout.Root =面板之后;代码 我找不到如何将更改发送回 Band Tile。
任何人都可以帮助我如何更新 Tile PageLayout 背景颜色。
页面布局本身是静态的;一旦添加了 Tile,就不能更改它们(除了删除然后重新添加 Tile 之外)。这个想法是您改为更新页面实例(具有给定布局)的内容(例如文本)。 Band SDK Documentation 的第 8.7 节描述了可以在给定 Page 实例中更新的内容。
对于您的方案,应用程序需要允许用户在任何给定时间选择最多 5 种可以在您的磁贴中使用的颜色,然后定义 5 种页面布局每个人都使用其中一种颜色。 (一个 Tile 最多可以有 5 个页面布局。)然后您可以创建 5 个页面实例,每个定义的布局一个,以创建一个 Tile,每个颜色都有一个页面。如果用户想要更改混合颜色,则应用程序将需要删除并重新添加具有一组新页面布局的 Tile。
我正在使用 UWP 开发 Microsoft Band 2 应用程序,因为我正在尝试从该应用程序访问现有的 Tile 以更新 Tile PageLayout 背景。 我写了下面的代码来创建 tile
IBandInfo[] pairedBands = await BandClientManager.Instance.GetBandsAsync();
if (pairedBands.Count() > 0)
{
try
{
using (IBandClient bandClient = await BandClientManager.Instance.ConnectAsync(pairedBands[0]))
{
// do work after successful connect
// get the current set of tiles
IEnumerable<BandTile> tiles = await bandClient.TileManager.GetTilesAsync();
if (tiles.Count() == 0)
{
int tileCapacity = await bandClient.TileManager.GetRemainingTileCapacityAsync();
if (tileCapacity > 0)
{
// create a new Guid for the tile
Guid tileGuid = Guid.NewGuid();
// create a new tile with a new Guid
BandTile tile = new BandTile(tileGuid)
{
// enable badging (the count of unread messages)
// IsBadgingEnabled = true,
// set the name
Name = "Torch Tile",
TileIcon = await LoadIcon("ms-appx:///Assets/Electric Bulb.png"),
SmallIcon = await LoadIcon("ms-appx:///Assets/Torchsmaltile.png")
};
var panel = new FilledPanel
{
//ElementId = 0,
Rect = new PageRect(0, 0, 260, 128),
BackgroundColor = bandcolor
};
var layout = new PageLayout(panel);
tile.PageLayouts.Add(layout);
try
{
// add the tile to the Band
if (await bandClient.TileManager.AddTileAsync(tile))
{
List<PageData> pageDataArray = new List<PageData>();
pageDataArray.Add(new PageData(pageguid, 0, new FilledButtonData(0, Colors.Transparent.ToBandColor())));
await bandClient.TileManager.SetPagesAsync(
tileGuid, pageDataArray);
}
}
catch (BandException ex)
{
// handle a Band connection exception }
}
}
}
}
}
catch (BandException e)
{
// handle BandException
}
}
以下是我尝试更新磁贴但不起作用的代码。
IBandInfo[] pairedBands = await BandClientManager.Instance.GetBandsAsync();
if (pairedBands.Count() > 0)
{
try
{
using (IBandClient bandClient = await BandClientManager.Instance.ConnectAsync(pairedBands[0]))
{
// do work after successful connect
// get the current set of tiles
IEnumerable<BandTile> tiles = await bandClient.TileManager.GetTilesAsync();
if (tiles.Count() > 0)
{
foreach (var tile in tiles)
{
foreach (var pageLayout in tile.PageLayouts)
{
var panel = pageLayout.Root as FilledPanel;
panel.BackgroundColor = Colors.Green.ToBandColor();
pageLayout.Root = panel;
}
}
}
}
}
catch (Exception ex)
{
}
}
在pageLayout.Root =面板之后;代码 我找不到如何将更改发送回 Band Tile。
任何人都可以帮助我如何更新 Tile PageLayout 背景颜色。
页面布局本身是静态的;一旦添加了 Tile,就不能更改它们(除了删除然后重新添加 Tile 之外)。这个想法是您改为更新页面实例(具有给定布局)的内容(例如文本)。 Band SDK Documentation 的第 8.7 节描述了可以在给定 Page 实例中更新的内容。
对于您的方案,应用程序需要允许用户在任何给定时间选择最多 5 种可以在您的磁贴中使用的颜色,然后定义 5 种页面布局每个人都使用其中一种颜色。 (一个 Tile 最多可以有 5 个页面布局。)然后您可以创建 5 个页面实例,每个定义的布局一个,以创建一个 Tile,每个颜色都有一个页面。如果用户想要更改混合颜色,则应用程序将需要删除并重新添加具有一组新页面布局的 Tile。