public async Task <bool> readRRSensor(TestMeViewModel b, int sec) { Activity activity = Droid.MainActivity.instance; _contactSensor.StartReadings(); while (_bandState == null) { } //get the band state if (_bandState != BandContactState.Worn) { _bandState = null; //TODO: notify the user by sending a notification return(false); } _distancerSensor.StartReadings(); while (currentMotionTyp == null) { } if (currentMotionTyp == MotionType.Walking || currentMotionTyp == MotionType.Jogging || currentMotionTyp == MotionType.Running) { b.StressResult = "Error: can't measure during sports activity"; Log.Error("motion", "user is " + currentMotionTyp.ToString()); return(false); } _rrIntervalsReadings.Clear(); //RequestConsent(); _rrSensor.StartReadings(); await Task.Delay(sec * 1000); _rrSensor.StopReadings(); _contactSensor.StopReadings(); return(true); }
private async void OnToggleSensorSection(object sender, CompoundButton.CheckedChangeEventArgs e) { if (!Model.Instance.Connected) { return; } EnsureSensorsCreated(); Switch sw = (Switch)sender; TableLayout table = mSensorMap[sw]; if (e.IsChecked) { table.Visibility = ViewStates.Visible; if (table == mTableAccelerometer) { mRadioGroupAccelerometer.Enabled = false; SetChildrenEnabled(mRadioGroupAccelerometer, false); } else if (table == mTableGyro) { mRadioGroupGyro.Enabled = false; SetChildrenEnabled(mRadioGroupGyro, false); } // Turn on the appropriate sensor try { if (sw == mSwitchAccelerometer) { SampleRate rate; if (mRadioAcc16.Checked) { rate = SampleRate.Ms16; } else if (mRadioAcc32.Checked) { rate = SampleRate.Ms32; } else { rate = SampleRate.Ms128; } mTextAccX.Text = ""; mTextAccY.Text = ""; mTextAccZ.Text = ""; accelerometerSensor.StartReadings(rate); } else if (sw == mSwitchGyro) { SampleRate rate; if (mRadioGyro16.Checked) { rate = SampleRate.Ms16; } else if (mRadioGyro32.Checked) { rate = SampleRate.Ms32; } else { rate = SampleRate.Ms128; } mTextGyroAccX.Text = ""; mTextGyroAccY.Text = ""; mTextGyroAccZ.Text = ""; mTextGyroAngX.Text = ""; mTextGyroAngY.Text = ""; mTextGyroAngZ.Text = ""; gyroscopeSensor.StartReadings(rate); } else if (sw == mSwitchDistance) { mTextTotalDistance.Text = ""; mTextSpeed.Text = ""; mTextPace.Text = ""; mTextPedometerMode.Text = ""; distanceSensor.StartReadings(); } else if (sw == mSwitchHeartRate) { var sensorMngr = Model.Instance.Client.SensorManager; if (await sensorMngr.RequestHeartRateConsentTaskAsync(Activity)) { mTextHeartRate.Text = ""; mTextHeartRateQuality.Text = ""; heartRateSensor.StartReadings(); } else { Util.ShowExceptionAlert(Activity, "Start heart rate sensor", new Exception("User declined permission.")); mSwitchHeartRate.Checked = false; } } else if (sw == mSwitchContact) { mTextContact.Text = ""; contactSensor.StartReadings(); } else if (sw == mSwitchSkinTemperature) { mTextSkinTemperature.Text = ""; skinTemperatureSensor.StartReadings(); } else if (sw == mSwitchUltraviolet) { mTextUltraviolet.Text = ""; uvSensor.StartReadings(); } else if (sw == mSwitchPedometer) { mTextTotalSteps.Text = ""; pedometerSensor.StartReadings(); } else if (sw == mSwitchAltimeter) { mTextFlightsAscended.Text = ""; mTextFlightsDescended.Text = ""; mTextRate.Text = ""; mTextSteppingGain.Text = ""; mTextSteppingLoss.Text = ""; mTextStepsAscended.Text = ""; mTextStepsDescended.Text = ""; mTextTotalGain.Text = ""; mTextTotalLoss.Text = ""; altimeterSensor.StartReadings(); } else if (sw == mSwitchAmbientLight) { mTextBrightness.Text = ""; ambientLightSensor.StartReadings(); } else if (sw == mSwitchBarometer) { mTextAirPressure.Text = ""; mTextTemperature.Text = ""; barometerSensor.StartReadings(); } else if (sw == mSwitchCalories) { mTextCalories.Text = ""; caloriesSensor.StartReadings(); } else if (sw == mSwitchGsr) { mTextResistance.Text = ""; gsrSensor.StartReadings(); } else if (sw == mSwitchRRInterval) { var sensorMngr = Model.Instance.Client.SensorManager; if (await sensorMngr.RequestHeartRateConsentTaskAsync(Activity)) { mTextInterval.Text = ""; rrIntervalSensor.StartReadings(); } else { Util.ShowExceptionAlert(Activity, "Start rr interval sensor", new Exception("User declined permission.")); mSwitchRRInterval.Checked = false; } } } catch (BandException ex) { Util.ShowExceptionAlert(Activity, "Register sensor listener", ex); } } else { table.Visibility = ViewStates.Gone; if (table == mTableAccelerometer) { mRadioGroupAccelerometer.Enabled = true; SetChildrenEnabled(mRadioGroupAccelerometer, true); } else if (table == mTableGyro) { mRadioGroupGyro.Enabled = true; SetChildrenEnabled(mRadioGroupGyro, true); } // Turn off the appropriate sensor try { if (sw == mSwitchAccelerometer) { accelerometerSensor.StopReadings(); } else if (sw == mSwitchGyro) { gyroscopeSensor.StopReadings(); } else if (sw == mSwitchDistance) { distanceSensor.StopReadings(); } else if (sw == mSwitchHeartRate) { heartRateSensor.StopReadings(); } else if (sw == mSwitchContact) { contactSensor.StopReadings(); } else if (sw == mSwitchSkinTemperature) { skinTemperatureSensor.StopReadings(); } else if (sw == mSwitchUltraviolet) { uvSensor.StopReadings(); } else if (sw == mSwitchPedometer) { pedometerSensor.StopReadings(); } else if (sw == mSwitchAltimeter) { altimeterSensor.StopReadings(); } else if (sw == mSwitchAmbientLight) { ambientLightSensor.StopReadings(); } else if (sw == mSwitchBarometer) { barometerSensor.StopReadings(); } else if (sw == mSwitchCalories) { caloriesSensor.StopReadings(); } else if (sw == mSwitchGsr) { gsrSensor.StopReadings(); } else if (sw == mSwitchRRInterval) { rrIntervalSensor.StopReadings(); } } catch (BandException ex) { Util.ShowExceptionAlert(Activity, "Unregister sensor listener", ex); } } }