2015-12-06 3 views
2

Я хочу добавить пользовательскую плитку в Microsoft Band через Microsoft Band SDK в приложение UWP для Windows Phone. Вот мой пример кода.Попробуйте добавить пользовательскую плитку в Microsoft Band из приложения UWP

private async void ButtonBase_OnClick(object sender, RoutedEventArgs e) 
    { 
     try 
     { 
      // Get the list of Microsoft Bands paired to the phone. 
      var pairedBands = await BandClientManager.Instance.GetBandsAsync(); 
      if (pairedBands.Length < 1) 
      { 
       Debug.WriteLine("This sample app requires a Microsoft Band paired to your device.Also make sure that you have the latest firmware installed on your Band, as provided by the latest Microsoft Health app."); 
       return; 
      } 

      // Connect to Microsoft Band. 
      using (var bandClient = await BandClientManager.Instance.ConnectAsync(pairedBands[0])) 
      { 
       // Create a Tile with a TextButton on it. 
       var myTileId = new Guid("12408A60-13EB-46C2-9D24-F14BF6A033C6"); 
       var myTile = new BandTile(myTileId) 
       { 
        Name = "My Tile", 
        TileIcon = await LoadIcon("ms-appx:///Assets/SampleTileIconLarge.png"), 
        SmallIcon = await LoadIcon("ms-appx:///Assets/SampleTileIconSmall.png") 
       }; 

       // Remove the Tile from the Band, if present. An application won't need to do this everytime it runs. 
       // But in case you modify this sample code and run it again, let's make sure to start fresh. 
       await bandClient.TileManager.RemoveTileAsync(myTileId); 

       // Create the Tile on the Band. 
       await bandClient.TileManager.AddTileAsync(myTile); 

       // Subscribe to Tile events. 
      } 
     } 
     catch (Exception ex) 
     { 
      Debug.WriteLine(ex); 
     } 
    } 

    private async Task<BandIcon> LoadIcon(string uri) 
    { 
     StorageFile imageFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri(uri)); 

     using (IRandomAccessStream fileStream = await imageFile.OpenAsync(FileAccessMode.Read)) 
     { 
      WriteableBitmap bitmap = new WriteableBitmap(1, 1); 
      await bitmap.SetSourceAsync(fileStream); 
      return bitmap.ToBandIcon(); 
     } 
    } 

Если я запустил этот код, ничего не случилось. Приложение подключено к Microsoft Band, но не может добавить плитку. Метод AddTileAsync(myTile); Возвращает false и не добавляет плитку в Microsoft Band.

Если я попробую этот код в приложении Windows Phone 8.1, он работает, но не в приложении UWP.

Любые идеи?

Обновление sample app as download. Может быть, это может помочь.

+1

Вы уверены, что вы еще не заполнены вашу группу с максимумом плитки? Кстати, с какой группой вы проводите тестирование? –

+0

Как сказал @SvenBorden, вы можете проверить, что у вас есть возможность добавить плитку. –

+0

Привет, Свен и Джеймс, я также проверил, что у меня есть возможности в группе. В настоящее время у меня 5 пустых слотов. Я разработал против Microsoft Band 2. –

ответ

0

может быть, это помогло бы, исходя из документации MS полосы

using Microsoft.Band.Tiles; 
... 
try 
{ 
    IEnumerable<BandTile> tiles = await bandClient.TileManager.GetTilesAsync(); 
} 
catch (BandException ex) 
{ 
    //handle exception 
} 
//determine if there is space for tile 
try 
{ 
    int tileCapacity = await bandClient.TileManager.GetRemainingTileCapacityAsync(); 
} 
catch (BandException ex) 
{ 
    //handle ex 
} 
//create tile 
WriteAbleBitmap smallIconBit = new WriteAbleBitmap(24, 24); 
BandIcon smallIcon = smallIconBit.ToBandIcon(); 
WriteAbleBitmap largeIconBit = new WriteAbleBitmap(48, 48);//46, 46 for MS band 1 
BandIcon largeIcon = largeIconBit.ToBandIcon(); 
Guid guid = Guid.NewGuid(); 
BandTile tile = new BandTile(guid) 
{ 
    //enable Badging 
    IsBadgingEnabled = true, 
    Name = "MYNAME" 
    SmallIcon = smallIcon; 
    TileIcon = largeIcon; 
}; 
try 
{ 
    if(await bandClient.TileManager.AddTileAsync(tile)) 
    { 
     ///console print something 
    } 
} 
catch(BandException ex) 
{ 
    //blabla handle 
} 
+0

Здравствуйте, Я тоже пробовал этот подход, но ничего не меняет. Я не могу добавить свою собственную плитку в свою группу. –

+0

Вы решили проблему? Если нет, вы толкаете тексты с вашего телефона или с вашего компьютера? вы пытались сбросить группу? или установить новый проект для работы? –

+0

Я хочу сначала начать с телефона клиента. Да, я сбросил группу и установил новый проект. Я обновил свой вопрос с помощью образца проекта. Возможно, это поможет решить эту проблему. –

0

Я думаю, что проблема может быть вы устанавливаете записываемый размер растрового изображения (1,1)?

У меня есть этот метод работы:

public static class BandIconUtil 
{ 
    public static async Task<BandIcon> FromAssetAsync(string iconFileName, int size = 24) 
    { 
     string uri = "ms-appx:///" + iconFileName; 
     StorageFile imageFile = await StorageFile.GetFileFromApplicationUriAsync(new Uri(uri, UriKind.RelativeOrAbsolute)); 

     using (IRandomAccessStream fileStream = await imageFile.OpenAsync(FileAccessMode.Read)) 
     { 
      WriteableBitmap bitmap = new WriteableBitmap(size, size); 
      await bitmap.SetSourceAsync(fileStream); 
      return bitmap.ToBandIcon(); 
     } 

    } 
} 
Смежные вопросы