Exemplo n.º 1
0
        public async Task<Position> GetPositionAsync(bool includeHeading)
        {
                if (_locationManager == null)
                    InitializeLocationManager();

                if (this._locationManager != null)
                {
                    Criteria locationCriteria = new Criteria();

                    locationCriteria.Accuracy = Accuracy.Coarse;
                    locationCriteria.PowerRequirement = Power.Medium;
                    locationCriteria.BearingRequired = includeHeading;

                    this._locationProvider = this._locationManager.GetBestProvider(locationCriteria, true);


                    if (this._locationProvider != null)
                    {
                        this._newLocationRequestAvailable = false;
                        this._locationManager.RequestSingleUpdate(this._locationProvider, this, null);
                        while (!this._newLocationRequestAvailable)
                        {
                           await Task.Delay(10);
                        }

                        return ToPosition(this._currentLocation);
                    }
                    else  
                    {
                        Log.Info("Geolocator", "No location providers available");
                    }
                }
            return null;
        }
Exemplo n.º 2
0
        public void start()
        {
            if (_tracking) return;

            var ls = (LocationManager) _context.GetSystemService(Context.LocationService);
            //var aproviders = ls.AllProviders.ToArray();
            //var hasGPS = ls.IsProviderEnabled(LocationManager.GpsProvider);
            //var hasNET = ls.IsProviderEnabled(LocationManager.NetworkProvider);

            //if (!hasGPS || !hasNET)
            {
                //throw new Exception("Must have both GPS and Net location providers");
            }

            _locationManager = ls;

            var lastLocation = _locationManager.GetLastKnownLocation(LocationManager.PassiveProvider);
            Location = createGeoLocation(lastLocation);

            var criteria = new Criteria();
            criteria.Accuracy = Accuracy.Fine;
            criteria.AltitudeRequired = true;

            var providers = _locationManager.GetProviders(criteria, true).ToArray();
            foreach (var provider in providers)
            {
                _locationManager.RequestLocationUpdates(provider, 1000, 5, _listener, Looper.MainLooper);
            }

            _tracking = true;
        }
Exemplo n.º 3
0
		protected override void OnCreate (Bundle bundle)
		{
			base.OnCreate (bundle);

			AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionLocal;
			AndroidEnvironment.UnhandledExceptionRaiser +=  HandleAndroidException;
			Xamarin.Forms.Forms.Init (this, bundle);

			Forms.Init(this, bundle);
			FormsMaps.Init(this, bundle);

			_locationManager = GetSystemService (Context.LocationService) as LocationManager;
			Criteria locationCriteria = new Criteria();
			locationCriteria.Accuracy = Accuracy.Coarse;
			locationCriteria.PowerRequirement = Power.Medium;
			var locationProvider = _locationManager.GetBestProvider(locationCriteria, true);
			if(locationProvider != null)
			{
				_locationManager.RequestLocationUpdates (locationProvider, 500, 1, this);
			}

			var pclApp = App.Portable.App.Instance;
			var setup = new AppSetup () {
				CreateConnectionPool = this.CreateConnnectionPool,
				DbPath = Path.Combine (System.Environment.GetFolderPath (System.Environment.SpecialFolder.Personal),"RF12G5td864.db3")
			};
			pclApp.Setup (setup);
			#if DEBUG
			//pclApp.DeleteUser ();
			#endif
			LoadApplication (pclApp);
		}
        protected override void OnResume()
        {
            base.OnResume();

            // LocationManagerを初期化
            locMgr = GetSystemService(Context.LocationService) as LocationManager;

            button.Click += (sender, e) =>
            {
                if (locMgr.AllProviders.Contains(LocationManager.NetworkProvider)
                        && locMgr.IsProviderEnabled(LocationManager.NetworkProvider))
                {
                    // Network: Wifiと3Gで位置情報を取得します。電池使用量は少ないですが精度にばらつきがあります。
                    Log.Debug(tag, "Starting location updates with Network");
                    locMgr.RequestLocationUpdates(LocationManager.NetworkProvider, 10000, 10, this);
                }
                else
                {
                    // GetBestProviderで最適なProviderを利用できるようです。(NetworkがあればそれがBestProviderになるようです。)
                    var locationCriteria = new Criteria();
                    locationCriteria.Accuracy = Accuracy.Coarse;
                    locationCriteria.PowerRequirement = Power.Medium;
                    string locationProvider = locMgr.GetBestProvider(locationCriteria, true);

                    Log.Debug(tag, "Starting location updates with " + locationProvider.ToString());
                    locMgr.RequestLocationUpdates(locationProvider, 10000, 10, this);
                }
            };
        }
Exemplo n.º 5
0
        public async Task<GeoLocation> GetCurrentLocation()
        {
            if (_curLocation == null)
            {
                _locationRecieved = new TaskCompletionSource<Android.Locations.Location>();

                Criteria locationCriteria = new Criteria();

                locationCriteria.Accuracy = Accuracy.Coarse;
                locationCriteria.PowerRequirement = Power.Low;

                string locationProvider = Manager.GetBestProvider(locationCriteria, true);

                if (locationProvider != null && Manager.IsProviderEnabled(locationProvider))
                {
                    Manager.RequestLocationUpdates(locationProvider, 2000, 1, Activity);

                    Android.Locations.Location loc = await _locationRecieved.Task.TimeoutAfter(1000);

                    if (loc != null)
                    {
                       _curLocation = new GeoLocation(loc.Latitude, loc.Longitude);
                    }
                }
            }

            return _curLocation;
        }
Exemplo n.º 6
0
        /// <summary>
        /// コンストラクタ
        /// </summary>
        /// <param name="context"></param>
        public LocationTracker(Context context, string provider = LocationManager.GpsProvider)
        {
            locationMan = (LocationManager)context.GetSystemService(Service.LocationService);

            if(locationMan.GetProviders(true).Contains(provider))
            {
                Provider = provider;
            }
            else if (locationMan.IsProviderEnabled(LocationManager.GpsProvider))
            {
                Provider = LocationManager.GpsProvider;
            }
            else if (locationMan.IsProviderEnabled(LocationManager.NetworkProvider))
            {
                Provider = LocationManager.NetworkProvider;
            }
            else
            {
                Criteria crit = new Criteria();
                crit.Accuracy = Accuracy.Fine;
                Provider = locationMan.GetBestProvider(crit, true);
            }

            LastGPSReceived = DateTime.MinValue;
        }
        protected override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate (savedInstanceState);

            SetContentView (Resource.Layout.Login);

            // Services
            LoginService = new Service.LoginService ();

            // UI elements
            UsernameInput = FindViewById<EditText> (Resource.Id.loginInputUsername);
            PasswordInput = FindViewById<EditText> (Resource.Id.loginInputPassword);
            LoginButton = FindViewById<Button> (Resource.Id.loginBtn);

            // Login button click event
            LoginButton.Click += OnLoginButtonClick;

            // GPS Button test
            Button gpsButton = FindViewById<Button> (Resource.Id.gpsBtn);
            gpsButton.Click += (object sender, System.EventArgs e) => {
                LocationManager location = GetSystemService(LocationService) as LocationManager;
                Criteria gpsCriteria = new Criteria() {
                    Accuracy = Accuracy.Coarse,
                    AltitudeRequired = false,
                    BearingRequired = false,
                    CostAllowed = true,
                    PowerRequirement = Power.NoRequirement,
                    SpeedRequired = false,
                };

                Location currentLocation = location.GetLastKnownLocation(location.GetBestProvider(gpsCriteria, false));
            };
        }
        public void GetLocation(Action<GeoLocation> callback)
        {
            pendingCallback = callback;

            Criteria c = new Criteria()
            {
                Accuracy = Accuracy.Fine,
            };

            string provider = manager.GetBestProvider(c, true);
            if(string.IsNullOrEmpty(provider))
            {
                DoCallback(null);
            }
            else
            {
                Location l = manager.GetLastKnownLocation(provider);
                if(IsLastLocationAccurateEnough(l))
                {
                    DoCallback(ToGeolocation(l));
                }

                manager.RequestLocationUpdates(provider, 1000, 10, this);
                timer.Start();
            }
        }
        protected override void PlatformSpecificStart(MvxLocationOptions options)
        {
            if (_locationManager != null)
                throw new MvxException("You cannot start the MvxLocation service more than once");

            _locationManager = (LocationManager)Context.GetSystemService(Context.LocationService);
            if (_locationManager == null)
            {
                MvxTrace.Warning("Location Service Manager unavailable - returned null");
                SendError(MvxLocationErrorCode.ServiceUnavailable);
                return;
            }
            var criteria = new Criteria()
                {
                    Accuracy = options.Accuracy == MvxLocationAccuracy.Fine ? Accuracy.Fine : Accuracy.Coarse,
                };
            _bestProvider = _locationManager.GetBestProvider(criteria, true);
            if (_bestProvider == null)
            {
                MvxTrace.Warning("Location Service Provider unavailable - returned null");
                SendError(MvxLocationErrorCode.ServiceUnavailable);
                return;
            }

            _locationManager.RequestLocationUpdates(
                _bestProvider, 
                (long)options.TimeBetweenUpdates.TotalMilliseconds,
                options.MovementThresholdInM, 
                _locationListener);
        }
Exemplo n.º 10
0
		protected override void OnResume ()
		{
			base.OnResume ();

			// Get a handle on the map element
			_mapFragment = FragmentManager.FindFragmentById(Resource.Id.map) as MapFragment;
			_map = _mapFragment.Map;

			// Set the map type 
			_map.MapType = GoogleMap.MapTypeNormal;

			// show user location
			_map.MyLocationEnabled = true;

			// setup a location manager
			_locationManager = GetSystemService(Context.LocationService) as LocationManager;

			// Add points on the map
			MarkerOptions marker1 = new MarkerOptions()
				.SetPosition(Location_Xamarin)
				.SetTitle("Xamarin")
				.InvokeIcon(BitmapDescriptorFactory.DefaultMarker(BitmapDescriptorFactory.HueBlue));
			_map.AddMarker(marker1);

			MarkerOptions marker2 = new MarkerOptions()
			    .SetPosition(Location_Atlanta)
			    .SetTitle("Atlanta, GA")
			    .InvokeIcon(BitmapDescriptorFactory.DefaultMarker(BitmapDescriptorFactory.HueRed));
			_map.AddMarker(marker2);

			// Add custom marker images on the map
			AddMonkeyMarkersToMap();

			// Add custom arrow callout on map
			AddInitialNewYorkBarToMap();

			// Add custom overlay image on the map
			PositionChicagoGroundOverlay(Location_Chicago);

			// use a generic location provider instead
			Criteria locationCriteria = new Criteria();
			locationCriteria.Accuracy = Accuracy.Coarse;
			locationCriteria.PowerRequirement = Power.Medium;

			var locationProvider = _locationManager.GetBestProvider(locationCriteria, true);
			if (locationProvider != null)
			{
				_locationManager.RequestLocationUpdates(locationProvider, 2000, 1, this);
			} else
			{
				Log.Info("error", "Best provider is not available. Does the device have location services enabled?");
			}

			// TODO: Step 4a - attach map handler for marker touch
//            _map.MarkerClick += MapOnMarkerClick;

			// TODO: Step 4c - attach map handler for info window touch
//			_map.InfoWindowClick += HandleInfoWindowClick;
		}
Exemplo n.º 11
0
 private void InitializeLocationManager()
 {
     _locationManager = (LocationManager)GetSystemService(LocationService);
     var kriteria = new Criteria { Accuracy = Accuracy.Fine };
     var accepatbleLocationProvs = _locationManager.GetProviders(kriteria, true);
     _locationProvider = accepatbleLocationProvs.Any() ? accepatbleLocationProvs.First() : string.Empty;
     Log.Debug(TAG, "using : " + _locationProvider + ".");
 }
Exemplo n.º 12
0
		public string StartLocationUpdates () {       
			var locationCriteria = new Criteria();                    
			locationCriteria.Accuracy = Accuracy.NoRequirement;        
			locationCriteria.PowerRequirement = Power.NoRequirement;                    
			string locationProvider = locMgr.GetBestProvider(locationCriteria, true);
			locMgr.RequestLocationUpdates(locationProvider, 1000, 0, this);
			return locationProvider;
		}
 private string GetBestProvider()
 {
     Criteria criteria = new Criteria();
     criteria.Accuracy = Accuracy.Coarse;
     criteria.PowerRequirement = Power.Low;
     string providerName = this.locationManager.GetBestProvider(criteria, true);
     return providerName;
 }
Exemplo n.º 14
0
		public void StartLocationUpdates ()
		{
			var locationCriteria = new Criteria ();
			locationCriteria.Accuracy = Accuracy.NoRequirement;
			locationCriteria.PowerRequirement = Power.NoRequirement;
			var locationProvider = LocManager.GetBestProvider (locationCriteria, true);

			LocManager.RequestLocationUpdates (locationProvider, 2000, 0, this);
		}
Exemplo n.º 15
0
        public LocationTestService(Context context)
        {
            locationManager = (LocationManager)context.GetSystemService(Context.LocationService);
            var criteriaForLocationService = new Criteria { Accuracy = Accuracy.Fine };
            var acceptableLocationProviders = locationManager.GetProviders(criteriaForLocationService, true);

            if (acceptableLocationProviders.Any())
            {
                locationProvider = acceptableLocationProviders.First();
            }
        }
        public void StartLocationUpdates() {
            Criteria criteriaForGPSService = new Criteria {
                //A constant indicating an approximate accuracy
                Accuracy = Accuracy.Coarse,
                PowerRequirement = Power.Medium
            };

            var locationProvider = _locationManager.GetBestProvider(criteriaForGPSService, true);
            _locationManager.RequestLocationUpdates(locationProvider, 0, 0, this);

        }
 public static void RegisterLocationManager(this  LocationManager locationManager, ILocationListener locationListener, ICoreApplicationContext coreApplicationContext)
 {
     var criteria = new Criteria
     {
         Accuracy = Accuracy.Coarse,
         PowerRequirement = Power.Low,
     };
     var bestProvider = locationManager.GetBestProvider(criteria, true);
     var lastKnownLocation = locationManager.GetLastKnownLocation(bestProvider);
     coreApplicationContext.CurrentLocation = lastKnownLocation.ToCoordinate();
     locationManager.RequestLocationUpdates(bestProvider, 1000, 1, locationListener);
 }
Exemplo n.º 18
0
		protected override void OnCreate(Bundle bundle)
		{
			base.OnCreate(bundle);
			SetContentView(Resource.Layout.Main);
			ConnectivityManager connectivityManager = (ConnectivityManager) GetSystemService(ConnectivityService);
			NetworkInfo activeConnection = connectivityManager.ActiveNetworkInfo;


			Button loginButton = FindViewById<Button>(Resource.Id.loginButton);
			Button filteButton = FindViewById<Button> (Resource.Id.button1);
 			prefs = PreferenceManager.GetDefaultSharedPreferences(this);
			_locationManager = GetSystemService (Context.LocationService) as LocationManager;
			Criteria criteriaForLocationService = new Criteria
			{
				Accuracy = Accuracy.Fine
			};
			acceptableLocationProviders = _locationManager.GetProviders(criteriaForLocationService, true);

				
				filteButton.Click += (object sender, EventArgs e) => {
					Intent intent = new Intent (this, typeof(FilterActivity));
					StartActivityForResult (intent, 0);
				};

				loginButton.Click += (object sender, EventArgs e) => {
				bool isOnline = (activeConnection != null) && activeConnection.IsConnected;
				bool wifiIsOnline = (connectivityManager.GetNetworkInfo(ConnectivityType.Wifi)).IsConnected;
				if (isOnline || wifiIsOnline) {
					
					if (!string.IsNullOrEmpty (prefs.GetString ("token", ""))) {
						Intent intent = new Intent (this, typeof(SearchActivity));
						StartActivityForResult (intent, 0);
					} else {
						auth = Global.LogIn ();
						auth.Completed += auth_Completed;
						StartActivity (auth.GetUI (this));
					}
				}
				else 
				{
					AlertDialog.Builder alert = new AlertDialog.Builder (this);
					alert.SetTitle ("Internet connection error");
					alert.SetMessage ("Turn wifi or mobile data on");
					alert.SetPositiveButton ("Ok", (senderAlert, args) => {

					});
					Dialog dialog = alert.Create();
					dialog.Show();
				}
			};
		
			} 
Exemplo n.º 19
0
 private static void startGpsListener()
 {
     if (_myLocationManager != null && _helper != null)
     {
         Criteria crit = new Criteria();
         crit.Accuracy = Accuracy.Fine;
         string _provider =  _myLocationManager.GetBestProvider(crit, false);
        // _myLocationManager.RequestLocationUpdates(LocationManager.GpsProvider, 5000, 10, _helper);
         _myLocationManager.RequestLocationUpdates(_provider, 0, 1, _helper);
         _myLocationManager.RequestLocationUpdates(LocationManager.GpsProvider, 0, 1, _helper);
         _myLocationManager.RequestLocationUpdates(LocationManager.NetworkProvider, 0, 1, _helper);
     }
 }
Exemplo n.º 20
0
        protected override void OnResume()
        {
            base.OnResume();

            var locationCriteria = new Criteria();

            locationCriteria.Accuracy = Accuracy.NoRequirement;
            locationCriteria.PowerRequirement = Power.NoRequirement;

            var locationProvider = _locMgr.GetBestProvider(locationCriteria, true);

            _locMgr.RequestLocationUpdates(locationProvider, 2000, 1, this);
        }
		/// <summary>
		/// This method activates the Android LocationManager and begins reporting
		/// location changes through our own LocationChanged event.
		/// </summary>
		public void StartLocationUpdates()
		{
			locMgr = Application.Context.GetSystemService("location") as LocationManager;
			if (locMgr == null)
				return;

			var locationCriteria = new Criteria() {
				Accuracy = Accuracy.NoRequirement,
				PowerRequirement = Power.NoRequirement
			};

			var locationProvider = locMgr.GetBestProvider(locationCriteria, true);
			locMgr.RequestLocationUpdates(locationProvider, 2000, 0, this);
		}
Exemplo n.º 22
0
        public static async Task<Coordinates> GetCoordinatesAsync(TimeSpan age, TimeSpan timeout)
        {
            return await Task.Factory.StartNew (() =>
            {
                var locationManager = (LocationManager)Application.Context.GetSystemService (Context.LocationService);
                var criteria = new Criteria {
                    Accuracy = DesiredAccuracy == Accuracy.High ? Android.Locations.Accuracy.Fine : Android.Locations.Accuracy.Coarse
                };

                var provider = locationManager.GetBestProvider (criteria, true);

                return locationManager.GetLastKnownLocation (provider).GetCoordinates();
            });
        }
        public override void OnCreate(Bundle savedInstanceState)
        {
            base.OnCreate (savedInstanceState);

            // Create your fragment here
            string lp = string.Empty;
            _lm = (LocationManager) GetSystemService(LocationService);
            Criteria cr = new Criteria { Accuracy = Accuracy.Fine };
            IList<string> alp = _lm.GetProviders (cr, true);

            if (alp.Any ()) {
                lp = alp.First ();
                _lm.RequestLocationUpdates (lp, this);
            }
        }
        public void StartLocationManager(Action<MyLocation> callBack)
        {
            manager = (LocationManager) Android.App.Application.Context.GetSystemService (Context.LocationService);

            _callBack = callBack;

            Criteria criteriaForLocationService = new Criteria { Accuracy = Accuracy.Coarse };

            IList<string> acceptableLocationProviders = manager.GetProviders(criteriaForLocationService, true);

            if (acceptableLocationProviders.Any())
                manager.RequestLocationUpdates (acceptableLocationProviders.First (), 0, 0, this);
            else
                throw new LocationServiceNotRunningException ();
        }
Exemplo n.º 25
0
 private string GetBestLocationProvider(LocationManager lm)
 {
     Criteria cri = new Criteria();
     cri.Accuracy = Accuracy.Coarse;
     cri.PowerRequirement = Power.Low;
     cri.AltitudeRequired = false;
     cri.BearingAccuracy = Accuracy.Low;
     cri.CostAllowed = false;
     cri.HorizontalAccuracy = Accuracy.Low;
     cri.SpeedAccuracy = Accuracy.Low;
     cri.SpeedRequired = false;
     cri.VerticalAccuracy = Accuracy.Low;
     string pidStr = lm.GetBestProvider(cri, true);
     return pidStr;
 }
Exemplo n.º 26
0
		public GeolocationService ()
		{
			_locationManager = (LocationManager)EmpleadoApp.AppContext.GetSystemService (LocationService);

			Criteria criteriaForLocationService = new Criteria
			{
				Accuracy = Accuracy.Fine
			};

			_locationProvider = GetAvailableProvider(criteriaForLocationService);

			Connect();

			GetLastKnownUpdate();
		}
		protected override void OnResume ()
		{
			base.OnResume ();

			Criteria locationCriteria = new Criteria ();
			locationCriteria.Accuracy = Accuracy.Coarse;
			locationCriteria.PowerRequirement = Power.NoRequirement;

			string locationProvider = _locMgr.GetBestProvider (locationCriteria, true);

			if (!String.IsNullOrEmpty (locationProvider)) {
				_locMgr.RequestLocationUpdates (locationProvider, 2000, 1, this);
			} else {
				Log.Warn ("LocationDemo", "Could not determine a location provider.");
			}
		}
Exemplo n.º 28
0
        public void GetLocation()
        {
            _locationManager = Application.Context.GetSystemService(Context.LocationService) as LocationManager;

            var locationCriteria = new Criteria();

            locationCriteria.Accuracy = Accuracy.Coarse;
            locationCriteria.PowerRequirement = Power.Medium;

            var locationProvider = _locationManager.GetBestProvider(locationCriteria, true);

            if (locationProvider != null)
            {
                _locationManager.RequestLocationUpdates(locationProvider, 2000, 1, this);
            }
        }
        private string GetBestProvider()
        {
            Criteria criteria = new Criteria();
            criteria.PowerRequirement = Power.High;
            criteria.Accuracy = Accuracy.Fine;
            criteria.CostAllowed = true;
            criteria.HorizontalAccuracy = Accuracy.High;
            criteria.AltitudeRequired = true;
            criteria.BearingAccuracy = Accuracy.High;
            criteria.BearingRequired = true;
            criteria.SpeedAccuracy = Accuracy.High;
            criteria.SpeedRequired = true;
            criteria.VerticalAccuracy = Accuracy.High;

            string providerName = this.locationManager.GetBestProvider(criteria, true);
            return providerName;
        }
		public GPSListener(LocationManager lm, SensorManager sm, IWindowManager wm) : base()
		{
			// Get LocationManager
			_locManager = lm;
			_windowManager = wm;

			var locationCriteria = new Criteria ()
			{
				Accuracy = global::Android.Locations.Accuracy.Fine,
				AltitudeRequired = true,
				PowerRequirement = Power.Low
			};

//			locationProvider = _locManager.GetBestProvider(locationCriteria, true);
			locationProvider = LocationManager.GpsProvider;

			if (locationProvider == null)
				throw new Exception("No location provider found");

			List<String> providers = _locManager.GetProviders(true) as List<String>;

			// Loop over the array backwards, and if you get an accurate location, then break out the loop
			GPSLocation loc = null;

			if (providers != null) {
				for (int i = providers.Count - 1; i >= 0; i--) {
					loc = new GPSLocation(_locManager.GetLastKnownLocation(providers[i]));
					if (loc != null) 
						break;
				}
			}

			// If we have an old location, than use this as first location
			if (loc != null)
			{
				_location = new GPSLocation(loc);
			} else {
				_location = new GPSLocation();
			}

			_sensorManager = sm;

			_orientationSensor = _sensorManager.GetDefaultSensor(SensorType.Orientation);
			_accelerometerSensor = _sensorManager.GetDefaultSensor(SensorType.Accelerometer);
		}