MS Band: все отчеты о данных датчиков прекращаются после того, как датчик высотомера сообщает данные [возможная ошибка]


Я разрабатываю приложение UWP для Microsoft Band и недавно обновил его до Microsoft Band SDK ver 1.3.20115 из Band SDK ver 1.3.11121.

Я заметил, что если я подписан на чтение измененного события нескольких датчиков (включая датчик высотомера), я не получаю данные ни для одного датчика (включая высотомер), как только датчик высотомера сообщает данные в первый раз.

У меня есть упрощенная версия кода, где я все еще вижу проблему:

    IBandClient bandClient;
    async void SetupBand()
    {
        IBandInfo[] pairedBands = await BandClientManager.Instance.GetBandsAsync();
        try
        {
            bandClient = await BandClientManager.Instance.ConnectAsync(pairedBands[0]);


            if (bandClient.SensorManager.Gyroscope.GetCurrentUserConsent() != UserConsent.Granted)
            {
                await bandClient.SensorManager.Gyroscope.RequestUserConsentAsync();
            }

            if (bandClient.SensorManager.Altimeter.GetCurrentUserConsent() != UserConsent.Granted)
            {
                await bandClient.SensorManager.Altimeter.RequestUserConsentAsync();
            }

            IEnumerable<TimeSpan> supportedAltimeterReportingIntervals = bandClient.SensorManager.Altimeter.SupportedReportingIntervals;
            TimeSpan T1 = supportedAltimeterReportingIntervals.First();
            bandClient.SensorManager.Altimeter.ReportingInterval = T1;


            IEnumerable<TimeSpan> supportedGyroscopeReportingIntervals = bandClient.SensorManager.Gyroscope.SupportedReportingIntervals;
            TimeSpan T2 = supportedGyroscopeReportingIntervals.First();
            bandClient.SensorManager.Gyroscope.ReportingInterval = T2;

            bandClient.SensorManager.Altimeter.ReadingChanged += (sender, args) =>
            {
                 System.Diagnostics.Debug.WriteLine("Input received for Altimeter");
            };

            bandClient.SensorManager.Gyroscope.ReadingChanged +=  (sender, args) =>
            {
                System.Diagnostics.Debug.WriteLine("Input received for Gyroscope");

            };

            await bandClient.SensorManager.Gyroscope.StartReadingsAsync();
            await bandClient.SensorManager.Altimeter.StartReadingsAsync();


        }
        catch (BandException ex)
        {
            // handle a Band connection exception
        }

    }
  1. С в приведенном выше коде я вижу кучу обновлений для датчика гироскопа, но как только датчик высотомера сообщает данные, все дальнейшие сообщения данных для гироскопа и высотомера прекращаются.
  2. код показывает проблему как для отладки, так и для выпуска (с цепочкой инструментов .NET Native compiler) сборок
  3. этот код прекрасно работает, если я использую Microsoft Band SDK 1.3.11121, но не работает для SDK 1.3.20115.

Я что-то пропустил или делаю неправильно в коде ?

1 4

1 ответ:

Это было подтверждено как проблема. Эта проблема была исправлена в SDK версии 20217 теперь.