Mi móvil no se mueve, pero gps lat largo valores aún están cambiando

Mi móvil no se mueve, pero lat/long valores en constante cambio es por eso?

¿Cómo arreglar este problema? Cómo obtener valores fiables lat long de mi móvil … Estoy utilizando código siguiente para obtener ubicaciones GPS:

  public Location getLocation() { try { locationManager = (LocationManager) mContext .getSystemService(LOCATION_SERVICE); // getting GPS status isGPSEnabled = locationManager .isProviderEnabled(LocationManager.GPS_PROVIDER); // getting network status isNetworkEnabled = locationManager .isProviderEnabled(LocationManager.NETWORK_PROVIDER); if (!isGPSEnabled && !isNetworkEnabled) { // no network provider is enabled } else { this.canGetLocation = true; if (isGPSEnabled) { locationManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, this); // Log.d("GPS Enabled", "GPS Enabled"); if (locationManager != null) { location = locationManager .getLastKnownLocation(LocationManager.GPS_PROVIDER); if (location != null) { latitude = location.getLatitude(); longitude = location.getLongitude(); } } } if (isNetworkEnabled) { locationManager.requestLocationUpdates( LocationManager.NETWORK_PROVIDER, MIN_TIME_BW_UPDATES, MIN_DISTANCE_CHANGE_FOR_UPDATES, this); // Log.d("Network", "Network"); if (locationManager != null) { location = locationManager .getLastKnownLocation(LocationManager.NETWORK_PROVIDER); if (location != null) { latitude = location.getLatitude(); longitude = location.getLongitude(); } } } // if GPS Enabled get lat/long using GPS Services } } catch (Exception e) { e.printStackTrace(); } return location; } 

Hay muchas razones que pueden hacer que eso suceda, y probablemente no es un problema en absoluto.

A veces es sólo su GPS obtener una mejor solución de su ubicación, o tal vez el proveedor de la ubicación ha cambiado.

PS: La precisión no es tan buena, por lo que su ubicación podría cambiar de vez en cuando. Como puede ver en este enlace . Y usted puede obtener su ubicación de 6 fuentes diferentes, cada uno de ellos tiene una precisión diferente.

  1. GPS en caché.

La mayoría de los androides tienen la capacidad de almacenar la última ubicación GPS. Esto se utiliza normalmente cuando una aplicación se inicia por primera vez, y puede recuperar la marca de tiempo, la latitud, la longitud y la precisión.

Código de muestra:

 locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
  1. Red en caché.

    Los dispositivos Android también pueden almacenar la última ubicación conocida determinada por el proveedor de ubicación de red de la operadora celular. El proveedor recopila información de la red celular y WiFi, si está encendido, luego envía eso a un proceso remoto del lado del servidor que cruce la información y envía de vuelta una ubicación aproximada. Esto no está disponible en todos los países. Al igual que el GPS, normalmente recuperará la marca de tiempo, la latitud, la longitud y la precisión.

Código de muestra:

 locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER); 
  1. GPS en tiempo real.

Esta es la información en bruto que se transmite desde el GPS. Cuando un GPS se enciende por primera vez, no devolverá inmediatamente ninguna información, sino que básicamente se calentará primero. El tiempo de calentamiento varía según el dispositivo y normalmente puede tardar de un minuto o más si está dentro de un edificio. Más sobre esto en un momento. Dependiendo de lo que su proveedor le permite, puede obtener acceso a timestamp, latitud, longitud, altitud, rodamiento, velocidad, precisión y distancia recorrida .

Código de muestra:

 locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,time,distance,listener); 
  1. Red en tiempo real.

Esta es la información bruta del proveedor de ubicación de la red devuelta por la compañía de telefonía celular, tal como AT & T en los Estados Unidos. Diferentes compañías utilizan información diferente para determinar la ubicación, como datos WiFi, información GPS, torres de celulares cercanas, etc. Puede obtener acceso a timestamp, latitud, longitud, altitud, precisión y distancia recorrida.

Código de muestra:

 locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,time,distance,listener); 
  1. Pasivo.

Esta opción sólo significa que su aplicación puede escuchar actualizaciones de ubicación mientras se encuentra en un estado minimizado. La idea es ahorrar energía de la batería, de modo que sus proveedores de aplicaciones no estén funcionando a toda velocidad mientras la aplicación se minimice. Eso sería un enorme drenaje de la batería. La ubicación pasiva puede escuchar otra aplicación para solicitar actualizaciones de ubicación. Usted puede ser capaz de obtener acceso a timestamp, latitud, longitud, altitud y precisión. Por lo que sé, no podrá determinar de qué proveedor se derivó esta información.

Código de muestra:

 <receiver android:name=".PassiveLocationChangedReceiver" android:enabled="true"/> 
  1. NMEA.

Aunque no es legible por el usuario, puede obtener acceso a las cadenas NMEA en bruto. Normalmente estas cadenas se utilizan para el acceso programático y sólo tendría sentido para un desarrollador o ingeniero. Estos datos se utilizan a menudo en aplicaciones marítimas. Los datos sólo están disponibles una vez que el GPS se haya calentado.

Fuente: Esta información fue tomada desde aquí .

Además, hay algunas fuentes muy comunes de error al obtener la ubicación, como se puede ver en los documentos de Android:

La obtención de la ubicación del usuario desde un dispositivo móvil puede ser complicada. Hay varias razones por las que una lectura de ubicación (independientemente de la fuente) puede contener errores y ser inexacta. Algunas fuentes de error en la ubicación del usuario incluyen:

  • Multitud de fuentes de localización

GPS, Cell-ID y Wi-Fi pueden proporcionar una pista a la ubicación de los usuarios. Determinar qué usar y confiar es una cuestión de compensaciones en la precisión, la velocidad y la eficiencia de la batería.

  • Movimiento del usuario

Dado que la ubicación del usuario cambia, debe tener en cuenta el movimiento al reestimar la ubicación del usuario de vez en cuando.

  • Precisión variable

Las estimaciones de ubicación procedentes de cada fuente de ubicación no son consistentes en su exactitud. Una ubicación obtenida hace 10 segundos de una fuente podría ser más precisa que la ubicación más reciente de otra o de la misma fuente.

Por favor, tómese un tiempo para leer los documentos sobre Estrategias de Ubicación de Google.

Más información sobre LocationManager aquí .

  • Obtener bandera emoji por código de país
  • Los parámetros de clase anidados de Gson no tienen valores
  • Java.io.IOException: Preparar error .: status = 0x1
  • Cómo agregar una nueva etiqueta html con Jsoup?
  • API de datos de Youtube: Obtenga acceso al flujo multimedia ya la reproducción (JAVA)
  • Java.lang.IllegalArgumentException: La ruta no debe estar vacía en Picasso
  • Parcel Lista de Lista de objeto Parcelable
  • Filtro ListActvity para ArrayAdapter personalizado
  • (Retrofit) No se pudo localizar el convertidor para la aplicación de bloqueo de clase
  • TemplateMatching mattoBitmap opencv para android
  • ¿Cómo puedo usar retrofit library con la barra de progreso?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.