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; }
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; }
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); } }; }
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; }
/// <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); }
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; }
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 + "."); }
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; }
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); }
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); }
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(); } }; }
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); } }
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); }
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 (); }
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; }
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."); } }
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); }