Пример #1
0
        static void PlatformStart(SensorSpeed sensorSpeed)
        {
            altitudeManager = new CMAltimeter();
            altitudeManager.StartRelativeAltitudeUpdates(Platform.GetCurrentQueue(), LocationManagerUpdatedHeading);

            void LocationManagerUpdatedHeading(CMAltitudeData e, NSError error) =>
            OnChanged(new BarometerData(UnitConverters.KilopascalsToHectopascals(e.Pressure.DoubleValue)));
        }
Пример #2
0
        static void PlatformStart(SensorSpeed sensorSpeed)
        {
            altitudeManager = new CMAltimeter();
            altitudeManager.StartRelativeAltitudeUpdates(Platform.GetCurrentQueue(), LocationManagerUpdatedHeading);

            // Heading updates Convert to HectoPascal from KiloPascal
            void LocationManagerUpdatedHeading(CMAltitudeData e, NSError error) =>
            OnChanged(new BarometerData(e.Pressure.DoubleValue / 10d));
        }
Пример #3
0
 static void PlatformStop()
 {
     if (altitudeManager == null)
     {
         return;
     }
     altitudeManager.StopRelativeAltitudeUpdates();
     altitudeManager.Dispose();
     altitudeManager = null;
 }
Пример #4
0
        public MotionManager()
        {
            RecentActivities       = new List <Activity> ();
            recentMotionActivities = new List <CMMotionActivity> ();
            recentPedometerData    = new List <CMPedometerData> ();
            recentAltitudeData     = new List <CMAltitudeData> ();

            activityManager = new CMMotionActivityManager();
            pedometer       = new CMPedometer();
            altimeter       = new CMAltimeter();
        }
Пример #5
0
        void PlatformStart(SensorSpeed sensorSpeed)
        {
            altitudeManager = new CMAltimeter();
            altitudeManager.StartRelativeAltitudeUpdates(NSOperationQueue.CurrentQueue ?? new NSOperationQueue(), LocationManagerUpdatedHeading);

            void LocationManagerUpdatedHeading(CMAltitudeData e, NSError error)
            {
                var reading = new BarometerData(UnitConverters.KilopascalsToHectopascals(e.Pressure.DoubleValue));

                RaiseReadingChanged(reading);
            }
        }
 public IObservable <double> WhenReadingTaken()
 => this.readOb ??= Observable.Create <double>(ob =>
 {
     var altimeter = new CMAltimeter();
     altimeter.StartRelativeAltitudeUpdates(NSOperationQueue.CurrentQueue, (data, error) =>
                                            ob.OnNext(data.Pressure.DoubleValue) // kilopascals
                                            );
     return(() =>
     {
         altimeter.StopRelativeAltitudeUpdates();
         altimeter.Dispose();
     });
 })
 .Publish()
 .RefCount();
Пример #7
0
        protected override async Task InitializeAsync()
        {
            await base.InitializeAsync();

            if (CMAltimeter.IsRelativeAltitudeAvailable && await SensusServiceHelper.Get().ObtainPermissionAsync(Permission.Sensors) == PermissionStatus.Granted)
            {
                _altitudeChangeListener = new CMAltimeter();
            }
            else
            {
                // throw standard exception instead of NotSupportedException, since the user might decide to enable sensors in the future
                // and we'd like the probe to be restarted at that time.
                string error = "This device does not contain an altimeter, or the user has denied access to it. Cannot start altitude probe.";
                await SensusServiceHelper.Get().FlashNotificationAsync(error);

                throw new Exception(error);
            }
        }
Пример #8
0
        public DeviceSensor()
        {
            motionManager         = new CMMotionManager();
            locationManager       = new CLLocationManager();
            motionActivityManager = new CMMotionActivityManager();

            if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0))
            {
                altimeter = new CMAltimeter();
            }

            sensorTypeStatus = new Dictionary <SensorType, bool>()
            {
                {
                    SensorType.Accelerometer,
                    false
                },
                {
                    SensorType.Compass,
                    false
                },
                {
                    SensorType.Gyroscope,
                    false
                },
                {
                    SensorType.Magntometer,
                    false
                },

                /* {
                 *   SensorType.ActivitySensor,
                 *   false
                 * }*/
            };
        }
Пример #9
0
 private Barometer(CMAltimeter altimeter)
 {
     _altimeter = altimeter;
 }
Пример #10
0
		public MotionManager ()
		{
			RecentActivities = new List<Activity> ();
			recentMotionActivities = new List<CMMotionActivity> ();
			recentPedometerData = new List<CMPedometerData> ();
			recentAltitudeData = new List<CMAltitudeData> ();

			activityManager = new CMMotionActivityManager ();
			pedometer = new CMPedometer ();
			altimeter = new CMAltimeter ();
		}