6

バンドに付属するスターバックス アプリに似たアプリを作成したいと考えています。バーコードを表示したい。クラウドまたはローカル デバイスでバーコードを JPG 画像として生成できますが、バンドの画面に表示できるようにする必要があります。これまでのところ、Band Client を使用してアプリ内に画像を表示する方法を見つけていません。

バンド クライアントには次のマネージャーがいます。

  • 通知マネージャー
  • パーソナライゼーション マネージャー
  • タイル マネージャー
  • センサーマネージャー

私が考えることができる最も近いものは、それを行う通知マネージャーですが、その唯一の方法は次のとおりです。

  • SendMessageAsync
  • ShowDialogAsync
  • バイブレート非同期

どれも仕事をしません。何か案は?今のところ、UI の観点から SDK でできることはかなり限られていると考えています。

4

3 に答える 3

4

本日更新された SDK でバーコードがサポートされるようになりました (さらにいくつかの変更が加えられました)。SDK もプレビュー版ではありません。

新着:

  • リッチ コンテンツ タイル – バーコードとアイコン
  • リスト項目
  • ボタンを付けることができます!(ボタンに興奮しているなんて信じられない)
  • タイルとボタンのイベントをリッスンできます
  • 新しいデータへのアクセス - カロリー
  • Windows Phone のバックグラウンド サポート
  • 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).";
    }
于 2015-04-30T23:54:34.087 に答える
1

現在、Microsoft Band SDK プレビューには、タイルのカスタム レイアウトを作成する機能がありません。あなたの観察は正しいです。メッセージを送信できるタイルを作成できます。最後の 8 つのメッセージ (タイムスタンプによる) がタイルに表示されます。

于 2015-03-03T22:20:05.560 に答える
0

やり方がある。これは非常にトリッキーで、特定のサイズのデータ​​に制限されています。

タイルにアイコン (実際には 8 つまで) をアップロードできます。

アイコンは 48x48 の透明な PNG である必要があります。

QR コードの場合、これは QR コードの黒い部分が透明な白いイメージを持つことを意味します。

ここに画像の説明を入力

上記画像は1. 黒をアルファに色付けしてから、たとえばwebqrを使用すると、テストして機能することを確認できます。(SO は透過性を好まないため、PNG でデモを行うことはできません)。

ColorSourceそれをバンドにアップロードするのは、通常のアイコン (チュートリアルを参照) と同じですが、をカスタムに、Colorを (255,255,255) ホワイトに設定する必要があります。

これをバンドにアップロードしてスキャンすることに成功しました。

ただし、バンドのアイコンが小さすぎてスキャナーが拾うのに苦労する可能性があるため、特にユーザーフレンドリーではないことに注意してください.

これは非常に便利な機能であり、QR コードの実装は彼らにとって簡単なはずなので、フィードバックを MS に投稿します。

于 2016-04-19T16:16:44.127 に答える