1

Sensors.WindowsWindows 10 マシンで Microsoft Band SDK (1.3.10417.1)のサンプル プロジェクトを実行しようとすると、次の例外が発生します。

System.ArgumentException: Value does not fall within the expected range.
   at Windows.ApplicationModel.Store.CurrentApp.get_AppId()
   at Microsoft.Band.StoreApplicationPlatformProvider`2.GetApplicationIdAsync(CancellationToken token)
   at Microsoft.Band.BandClient.StartOrAwakeStreamingSubscriptionTasks()
   at Microsoft.Band.BandClient.SensorSubscribe(SubscriptionType type)
   at Microsoft.Band.Sensors.BandSensorBase`1.<>c__DisplayClass4.<StartReadingsAsync>b__3()
   at System.Threading.Tasks.Task.InnerInvoke()
   at System.Threading.Tasks.Task.Execute()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Band.Sensors.BandSensorBase`1.<StartReadingsAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter`1.GetResult()
   at PunchingBand.Models.PunchingModel.<Connect>d__48.MoveNext()

アプリが Windows ストアにリストされていない場合、SDK はCurrentAppこれを使用できないため、例外がスローされているようです。CurrentAppSimulator

SDK がアクセスする必要がある場合CurrentApp、アプリの開発中にこれを機能させるにはどうすればよいですか? コンパイル済みのアセンブリでCurrentAppスワップできるわけではありません。CurrentAppSimulator

4

1 に答える 1

1

更新:これは、Microsoft Band SDK バージョン 1.3.10702 で修正されました。可能であればそのバージョンにアップグレードしてください。それ以外の場合は、以下のハックを使用してください。

.NET Reflector で調査した後、これを機能させるためのハックを見つけました。で呼び出されるプライベート フィールドを設定するだけcurrentAppIdBandClient、SDK は からそれを取得しようとしませんCurrentApp。クライアントへの接続が確立された直後、センサーのストリーミングを試みる前に、次のコマンドを実行します。

using (IBandClient bandClient = await BandClientManager.Instance.ConnectAsync(pairedBands[0]))
{
    Type.GetType("Microsoft.Band.BandClient, Microsoft.Band")
        .GetRuntimeFields()
        .First(field => field.Name == "currentAppId")
        .SetValue(bandClient, Guid.NewGuid());

System.Linqusingとを必ず含めてくださいSystem.Reflection。これは明らかに非常にハックな回避策であるため、Band SDK の将来のリリースで解決されることを願っています。

于 2015-06-05T05:16:01.237 に答える