예제 #1
0
        public BandDistanceSensorReadingEventArgs(IBandDistanceReading sensorReading)
        {
            if (sensorReading == null)
            {
                throw new ArgumentNullException("sensorReading");
            }

            this.SensorReading = sensorReading;
        }
예제 #2
0
 public static DistanceReading FromBandSensor(IBandDistanceReading reading)
 {
     return new DistanceReading
     {
         CurrentMotion = reading.CurrentMotion,
         Pace = reading.Pace,
         Speed = reading.Speed,
         TotalDistance = reading.TotalDistance,
         Timestamp = reading.Timestamp
     };
 }
예제 #3
0
        private async void btnStart_Click(object sender, RoutedEventArgs e)
        {
            btnStart.IsEnabled   = false;
            btnReports.IsEnabled = false;
            bool firstTime = true;

            seconds             = 0;
            minute              = 0;
            hour                = 0;
            txtTimer.Text       = "00:00:00";
            Sensor5Display.Text = "Iniciando...";

            // Instanciando um "client" da Microsoft Band para realizar conexão
            var bands = await BandClientManager.Instance.GetBandsAsync();

            if (_bandClient == null)
            {
                _bandClient = await BandClientManager.Instance.ConnectAsync(bands.First());
            }

            var  uc          = _bandClient.SensorManager.HeartRate.GetCurrentUserConsent();
            bool isConsented = false;

            if (uc == UserConsent.NotSpecified)
            {
                isConsented = await _bandClient.SensorManager.HeartRate.RequestUserConsentAsync();
            }
            if (isConsented || uc == UserConsent.Granted)
            {
                while (realTime == true)
                {
                    // Batimentos Cardíacos em tempo-real
                    int initialHeartRate = 0;
                    _bandClient.SensorManager.HeartRate.ReadingChanged += async(obj, ev) =>
                    {
                        await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                        {
                            initialHeartRate           = ev.SensorReading.HeartRate;
                            txtInfoHeartRate.Text      = ev.SensorReading.HeartRate.ToString();
                            realtime.HeartRate.Initial = ev.SensorReading.HeartRate;
                        });
                    };
                    await _bandClient.SensorManager.HeartRate.StartReadingsAsync();

                    await Task.Delay(TimeSpan.FromSeconds(1.5));

                    // Informações de Distancia
                    double initialSpeed    = 0;
                    double initialPace     = 0;
                    long   initialDistance = 0;
                    _bandClient.SensorManager.Distance.ReadingChanged += async(s, args) =>
                    {
                        IBandDistanceReading readings = args.SensorReading;
                        await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                        {
                            // Velocidade atual em cm/s
                            initialSpeed = readings.Speed;

                            // Ritmo atual em ms/m
                            initialPace = readings.Pace;

                            // Distancia total desde o último reset de fábrica
                            initialDistance      = readings.TotalDistance;
                            txtInfoDistance.Text = (readings.TotalDistance / 100).ToString() + "m";
                        });
                    };
                    await _bandClient.SensorManager.Distance.StartReadingsAsync();

                    await Task.Delay(TimeSpan.FromSeconds(1.5));

                    realtime.Speed.Initial    = initialSpeed;
                    realtime.Pace.Initial     = initialPace;
                    realtime.Distance.Initial = initialDistance;

                    // Informações de Passos Realizados
                    long initialStep = 0;
                    _bandClient.SensorManager.Pedometer.ReadingChanged += async(s, args) =>
                    {
                        IBandPedometerReading readings = args.SensorReading;
                        await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                        {
                            // Total de passos desde o último reset de fábrica
                            initialStep      = readings.TotalSteps;
                            txtInfoStep.Text = readings.TotalSteps.ToString();
                        });
                    };
                    await _bandClient.SensorManager.Pedometer.StartReadingsAsync();

                    await Task.Delay(TimeSpan.FromSeconds(1.5));

                    realtime.Step.Initial = initialStep;

                    // Informações de Calorias
                    long initialCalories = 0;
                    _bandClient.SensorManager.Calories.ReadingChanged += async(s, args) =>
                    {
                        IBandCaloriesReading readings = args.SensorReading;
                        await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                        {
                            // Total de calorias desde o último reset de fábrica
                            initialCalories      = readings.Calories;
                            txtInfoCalories.Text = readings.Calories.ToString();
                        });
                    };
                    await _bandClient.SensorManager.Calories.StartReadingsAsync();

                    await Task.Delay(TimeSpan.FromSeconds(1.5));

                    realtime.Calories.Initial = initialCalories;

                    // Guardando informações iniciais na DTO para gravar na tabela Information
                    while (firstTime == true)
                    {
                        data.Date.Initial      = DateTime.Now;
                        data.HeartRate.Initial = initialHeartRate;
                        data.Speed.Initial     = initialSpeed;
                        data.Pace.Initial      = initialPace;
                        data.Distance.Initial  = initialDistance;
                        data.Step.Initial      = initialStep;
                        data.Calories.Initial  = initialCalories;

                        Sensor5Display.Text = "Inicializado";
                        timer.Start();
                        btnStop.IsEnabled = true;
                        firstTime         = false;
                    }

                    try
                    {
                        await fitnessOfBand.InsertRealTimeAsync(1, DateTime.Now, realtime.HeartRate.Initial, realtime.Speed.Initial, realtime.Pace.Initial, realtime.Distance.Initial, realtime.Step.Initial, realtime.Calories.Initial);
                    }
                    catch (Exception ex)
                    {
                        Sensor5Display.Text = "Sem conexão ao BD: " + ex.Message;
                    }
                }
            }
        }
예제 #4
0
        private async void btnStop_Click(object sender, RoutedEventArgs e)
        {
            btnStop.IsEnabled = false;
            realTime          = false;
            timer.Stop();
            data.Date.Finished  = DateTime.Now;
            Sensor5Display.Text = "Finalizando...";

            if (_bandClient != null)
            {
                // Batimentos Cardíacos em tempo-real
                int finalHeartRate = 0;
                _bandClient.SensorManager.HeartRate.ReadingChanged += async(obj, ev) =>
                {
                    await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                    {
                        finalHeartRate = ev.SensorReading.HeartRate;
                    });
                };
                await _bandClient.SensorManager.HeartRate.StartReadingsAsync();

                await Task.Delay(TimeSpan.FromSeconds(1.5));

                data.HeartRate.Final = finalHeartRate;

                // Informações de Distancia
                double finalSpeed    = 0;
                double finalPace     = 0;
                long   finalDistance = 0;
                _bandClient.SensorManager.Distance.ReadingChanged += async(s, args) =>
                {
                    IBandDistanceReading readings = args.SensorReading;
                    await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                    {
                        // Velocidade atual em cm/s
                        finalSpeed = readings.Speed;

                        // Ritmo atual em ms/m
                        finalPace = readings.Pace;

                        // Distancia total desde o último reset de fábrica
                        finalDistance = readings.TotalDistance;
                    });
                };
                await _bandClient.SensorManager.Distance.StartReadingsAsync();

                await Task.Delay(TimeSpan.FromSeconds(1.5));

                data.Speed.Final    = finalSpeed;
                data.Pace.Final     = finalPace;
                data.Distance.Final = finalDistance;

                // Informações de Passos Realizados
                long finalStep = 0;
                _bandClient.SensorManager.Pedometer.ReadingChanged += async(s, args) =>
                {
                    IBandPedometerReading readings = args.SensorReading;
                    await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                    {
                        // Total de passos desde o último reset de fábrica
                        finalStep = readings.TotalSteps;
                    });
                };
                await _bandClient.SensorManager.Pedometer.StartReadingsAsync();

                await Task.Delay(TimeSpan.FromSeconds(1.5));

                data.Step.Final = finalStep;

                // Informações de Calorias
                long finalCalories = 0;
                _bandClient.SensorManager.Calories.ReadingChanged += async(s, args) =>
                {
                    IBandCaloriesReading readings = args.SensorReading;
                    await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
                    {
                        // Total de calorias desde o último reset de fábrica
                        finalCalories = readings.Calories;
                    });
                };
                await _bandClient.SensorManager.Calories.StartReadingsAsync();

                await Task.Delay(TimeSpan.FromSeconds(1.5));

                data.Calories.Final = finalCalories;

                try
                {
                    await fitnessOfBand.InsertInformationAsync(1, data.Date.Initial, data.Date.Finished, data.HeartRate.Initial, data.HeartRate.Final, data.Distance.Initial, data.Distance.Final, data.Step.Initial, data.Step.Final, data.Calories.Initial, data.Calories.Final);

                    Sensor5Display.Text = "Finalizado";
                }
                catch (Exception ex)
                {
                    Sensor5Display.Text = "Sem conexão ao BD: " + ex.Message;
                }

                btnReports.IsEnabled = true;
                btnStart.IsEnabled   = true;
            }
        }
예제 #5
0
 string FormatDistance(IBandDistanceReading reading) =>
 $"Current:{reading.CurrentMotion},Pace:{reading.Pace:F2},Speed:{reading.Speed:F2},Today:{reading.DistanceToday}";