Criterios de LocationManager de Android

Necesito recibir cambios de ubicación tanto de proveedores de redes como de GPS.

Si el abastecedor del GPS no disponible o no tiene la localización (mala visibilidad del satélite) recibiría la localización del abastecedor de la red más del abastecedor del GPS.

¿Es posible seleccionar el proveedor usando criterios según mi necesidad?

3 Solutions collect form web for “Criterios de LocationManager de Android”

En realidad desarrolladores de Android – Hacer su ubicación de la aplicación consciente tiene un gran código de ejemplo para satisfacer sus necesidades.

En su código, si utiliza ambos proveedores (desde GPS y desde la red) se hará una comparación:

 ... } else if (mUseBoth) { // Get coarse and fine location updates. mFineProviderButton.setBackgroundResource(R.drawable.button_inactive); mBothProviderButton.setBackgroundResource(R.drawable.button_active); // Request updates from both fine (gps) and coarse (network) providers. gpsLocation = requestUpdatesFromProvider( LocationManager.GPS_PROVIDER, R.string.not_support_gps); networkLocation = requestUpdatesFromProvider( LocationManager.NETWORK_PROVIDER, R.string.not_support_network); // If both providers return last known locations, compare the two and use the better // one to update the UI. If only one provider returns a location, use it. if (gpsLocation != null && networkLocation != null) { updateUILocation(getBetterLocation(gpsLocation, networkLocation)); } else if (gpsLocation != null) { updateUILocation(gpsLocation); } else if (networkLocation != null) { updateUILocation(networkLocation); } } ... 

Implementar la idea de los mejores proveedores de localización (por determinar la precisión dentro de un período de tiempo especificado como:

 /** Determines whether one Location reading is better than the current Location fix. * Code taken from * http://developer.android.com/guide/topics/location/obtaining-user-location.html * * @param newLocation The new Location that you want to evaluate * @param currentBestLocation The current Location fix, to which you want to compare the new * one * @return The better Location object based on recency and accuracy. */ protected Location getBetterLocation(Location newLocation, Location currentBestLocation) { if (currentBestLocation == null) { // A new location is always better than no location return newLocation; } // Check whether the new location fix is newer or older long timeDelta = newLocation.getTime() - currentBestLocation.getTime(); boolean isSignificantlyNewer = timeDelta > TWO_MINUTES; boolean isSignificantlyOlder = timeDelta < -TWO_MINUTES; boolean isNewer = timeDelta > 0; // If it's been more than two minutes since the current location, use the new location // because the user has likely moved. if (isSignificantlyNewer) { return newLocation; // If the new location is more than two minutes older, it must be worse } else if (isSignificantlyOlder) { return currentBestLocation; } // Check whether the new location fix is more or less accurate int accuracyDelta = (int) (newLocation.getAccuracy() - currentBestLocation.getAccuracy()); boolean isLessAccurate = accuracyDelta > 0; boolean isMoreAccurate = accuracyDelta < 0; boolean isSignificantlyLessAccurate = accuracyDelta > 200; // Check if the old and new location are from the same provider boolean isFromSameProvider = isSameProvider(newLocation.getProvider(), currentBestLocation.getProvider()); // Determine location quality using a combination of timeliness and accuracy if (isMoreAccurate) { return newLocation; } else if (isNewer && !isLessAccurate) { return newLocation; } else if (isNewer && !isSignificantlyLessAccurate && isFromSameProvider) { return newLocation; } return currentBestLocation; } 

Para obtener el código completo, eche un vistazo al enlace proporcionado anteriormente.

Simplemente no dé ningún criterio, y trate de obtener el mejor proveedor:

 LocationManager mgr = (LocationManager) getSystemService(LOCATION_SERVICE); Criteria criteria = new Criteria(); String best = mgr.getBestProvider(criteria, true); //since you are using true as the second parameter, you will only get the best of providers which are enabled. Location location = mgr.getLastKnownLocation(best); 

Para buscar la mejor ubicación Proveedor por favor use el código abajo: Por favor, consulte https://developer.android.com/reference/android/location/Criteria.html para entender, ¿Cómo funcionará el criterio?

 public String getProviderName() { LocationManager locationManager =(LocationManager)this.getSystemService(Context.LOCATION_SERVICE); Criteria criteria = new Criteria(); criteria.setPowerRequirement(Criteria.POWER_LOW); criteria.setAccuracy(Criteria.ACCURACY_FINE); criteria.setSpeedRequired(true); criteria.setAltitudeRequired(false); criteria.setBearingRequired(false); criteria.setCostAllowed(false); return locationManager.getBestProvider(criteria, true); } 
  • Android: comprobación de si la ubicación de los ajustes de Google está habilitada
  • LocationServices.FusedLocationApi.removeLocationUpdates (mGoogleApiClient, este); Intenta emitir como com.google.android.gms.location.LocationListener)
  • Ubicaciones de Cell Tower - Android
  • Localización de la ubicación: Servicio de ubicación de Google Play o API de ubicación de la plataforma Android
  • Obtener ubicación GPS a través de un servicio en Android
  • Notificaciones de empuje basadas en ubicación para Android
  • Problemas al utilizar Smart Location Library
  • ¿Cómo encontrar la ubicación del usuario usando la torre celular?
  • Android: ¿Una forma sencilla de hacer una geofence?
  • Cómo deshabilitar Android LocationListener cuando se cierra la aplicación
  • No se puede encontrar la clase com.google.android.gms.location.LocationClient (android)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.