コード例 #1
0
ファイル: HeadingService.cs プロジェクト: lulzzz/Scavenger
        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);
        }
コード例 #2
0
        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);
                    }
                }
            };
        }
コード例 #3
0
		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);

					}
				}
			};
		}