public void StartListening() { if (_sensorManager == null) { _sensorManager = (SensorManager)Forms.Context.GetSystemService(Context.SensorService); } if (_accelerometer == null) { _accelerometer = _sensorManager?.GetDefaultSensor(SensorType.Accelerometer); } if (_magnetometer == null) { _magnetometer = _sensorManager?.GetDefaultSensor(SensorType.MagneticField); } if (_sensorEventListener == null) { _sensorEventListener = new SensorEventListener(HeadingChanged); } _sensorManager.RegisterListener(_sensorEventListener, _accelerometer, SensorDelay.Normal); _sensorManager.RegisterListener(_sensorEventListener, _magnetometer, SensorDelay.Normal); }
public override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); mListener = new SensorEventListener() { OnSensorChangedAction = (SensorEvent e) => { // Store the delay of this event RecordDelay(e); string delayString = DelayString; if (e.Sensor.Type == SensorType.StepDetector) { // A step detector event is received for each step. // This means we need to count steps ourselves mSteps += e.Values.Count; // Update the card with the latest step count CardStream.GetCard(CARD_COUNTING).SetTitle(GetString(Resource.String.counting_title, new Java.Lang.Integer(mSteps))) .SetDescription(GetString(Resource.String.counting_description, GetString(Resource.String.sensor_detector), new Java.Lang.Integer(mMaxDelay), new Java.Lang.String(delayString))); Log.Info(TAG, "New step detected by STEP_DETECTOR sensor. Total step count: " + mSteps); } else if (e.Sensor.Type == SensorType.StepCounter) { // A step counter event contains the total number of steps since the listener was first registered. // We need to keep track of this initial value to calculate the number of steps taken, // as the first value a listener receives is undefined if (mCounterSteps < 1) { // Initial value mCounterSteps = (int)e.Values[0]; } // Calculate stes taken based on first counter value received mSteps = (int)e.Values[0] - mCounterSteps; // Add the number of steps previously taken, otherwise the counter would start as 0. // This is needed to keep the counter consistent across rotation changes. mSteps += mPreviousCounterSteps; // Update the card with the latest step count CardStream.GetCard(CARD_COUNTING).SetTitle(GetString(Resource.String.counting_title, new Java.Lang.Integer(mSteps))) .SetDescription(GetString(Resource.String.counting_description, GetString(Resource.String.sensor_counter), new Java.Lang.Integer(mMaxDelay), new Java.Lang.String(delayString))); Log.Info(TAG, "New step detected by STEP_COUNTER sensor. Total step count: " + mSteps); } } }; }
public override void OnCreate (Bundle savedInstanceState) { base.OnCreate (savedInstanceState); mListener = new SensorEventListener () { OnSensorChangedAction = (SensorEvent e) => { // Store the delay of this event RecordDelay(e); string delayString = DelayString; if (e.Sensor.Type == SensorType.StepDetector) { // A step detector event is received for each step. // This means we need to count steps ourselves mSteps += e.Values.Count; // Update the card with the latest step count CardStream.GetCard(CARD_COUNTING).SetTitle(GetString(Resource.String.counting_title, new Java.Lang.Integer(mSteps))) .SetDescription(GetString(Resource.String.counting_description, GetString(Resource.String.sensor_detector), new Java.Lang.Integer(mMaxDelay), new Java.Lang.String(delayString))); Log.Info(TAG, "New step detected by STEP_DETECTOR sensor. Total step count: " + mSteps); } else if (e.Sensor.Type == SensorType.StepCounter) { // A step counter event contains the total number of steps since the listener was first registered. // We need to keep track of this initial value to calculate the number of steps taken, // as the first value a listener receives is undefined if (mCounterSteps < 1) { // Initial value mCounterSteps = (int) e.Values[0]; } // Calculate stes taken based on first counter value received mSteps = (int)e.Values[0] - mCounterSteps; // Add the number of steps previously taken, otherwise the counter would start as 0. // This is needed to keep the counter consistent across rotation changes. mSteps += mPreviousCounterSteps; // Update the card with the latest step count CardStream.GetCard(CARD_COUNTING).SetTitle(GetString(Resource.String.counting_title, new Java.Lang.Integer(mSteps))) .SetDescription(GetString(Resource.String.counting_description, GetString(Resource.String.sensor_counter), new Java.Lang.Integer(mMaxDelay), new Java.Lang.String(delayString))); Log.Info(TAG, "New step detected by STEP_COUNTER sensor. Total step count: " + mSteps); } } }; }