コード例 #1
0
        /// <summary>
        /// Start listening to location changes
        /// </summary>
        /// <param name="minTime">Minimum interval in milliseconds</param>
        /// <param name="minDistance">Minimum distance in meters</param>
        /// <param name="includeHeading">Include heading information</param>
        /// <exception cref="System.ArgumentOutOfRangeException">
        ///     minTime
        ///     or
        ///     minDistance
        /// </exception>
        /// <exception cref="System.InvalidOperationException">This Geolocator is already listening</exception>
        public OperationResult StartListening(uint minTime, double minDistance, double desiredAccurancy = 0, bool includeHeading = false)
        {
            if (IsListening)
            {
                return(OperationResult.AsFailure("Already listening"));
            }

            if (minTime < 0)
            {
                return(OperationResult.AsFailure(new ArgumentOutOfRangeException(nameof(minTime))));
            }
            if (minDistance < 0)
            {
                return(OperationResult.AsFailure(new ArgumentOutOfRangeException(nameof(minDistance))));
            }

            _desiredAccuracy = desiredAccurancy;

            _listener = new GeolocationContinuousListener(_manager, TimeSpan.FromMilliseconds(minTime), _providers);
            _listener.PositionChanged += OnListenerPositionChanged;
            _listener.PositionError   += OnListenerPositionError;

            var looper = Looper.MyLooper() ?? Looper.MainLooper;

            for (var i = 0; i < _providers.Length; ++i)
            {
                _manager.RequestLocationUpdates(_providers[i], minTime, (float)minDistance, _listener, looper);
            }

            return(OperationResult.AsSuccess());
        }
コード例 #2
0
        public void StopListening()
        {
            if (_listener == null)
            {
                return;
            }

            _listener.PositionChanged -= OnListenerPositionChanged;
            _listener.PositionError   -= OnListenerPositionError;

            for (var i = 0; i < _providers.Length; ++i)
            {
                _manager.RemoveUpdates(_listener);
            }

            _listener = null;
        }
コード例 #3
0
        public OperationResult StopListening()
        {
            if (!IsListening)
            {
                return(OperationResult.AsFailure("Location updates already stopped"));
            }

            _listener.PositionChanged -= OnListenerPositionChanged;
            _listener.PositionError   -= OnListenerPositionError;

            for (var i = 0; i < _providers.Length; ++i)
            {
                _manager.RemoveUpdates(_listener);
            }

            _listener = null;

            return(OperationResult.AsSuccess());
        }