Localización de la ubicación: Servicio de ubicación de Google Play o API de ubicación de la plataforma Android

Estoy tratando de obtener la ubicación de los usuarios para mi nueva aplicación de navegación. Quiero comprobar la ubicación de los usuarios con frecuencia y tiene que ser preciso. Utilizo el código siguiente de la muestra para conseguir la localización.

public class MainActivity extends Activity implements LocationListener { private LocationManager locationManager; private String provider; private TextView a; private TextView b; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); a = (TextView) findViewById(R.id.a); b = (TextView) findViewById(R.id.b); locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); Criteria criteria = new Criteria(); provider = locationManager.getBestProvider(criteria, false); Location location = locationManager.getLastKnownLocation(provider); if (location != null) { System.out.println("Provider " + provider + " has been selected."); onLocationChanged(location); } else { a.setText("Location not available"); b.setText("Location not available"); } } @Override protected void onResume() { super.onResume(); locationManager.requestLocationUpdates(provider,0, 1, this); } @Override protected void onPause() { super.onPause(); locationManager.removeUpdates(this); } @Override public void onLocationChanged(Location location) { Double lat = location.getLatitude(); Double lng = location.getLongitude(); a.setText(String.valueOf(lat)); b.setText(String.valueOf(lng)); } @Override public void onStatusChanged(String provider, int status, Bundle extras) { // TODO Auto-generated method stub } @Override public void onProviderEnabled(String provider) { Toast.makeText(this, "Enabled new provider " + provider, Toast.LENGTH_SHORT).show(); } @Override public void onProviderDisabled(String provider) { Toast.makeText(this, "Disabled provider " + provider, Toast.LENGTH_SHORT).show(); } } 

Pero cordinates de la localización no están poniendo al día mientras que me muevo, consigo un valor constante siempre … ¿hay alguna manera mejor de conseguir la localización? De acuerdo con los documentos de Android puedo utilizar el servicio de ubicación de Google Play o las API de ubicación de la plataforma Android para esto. Comprobé el código de muestra para ambos y implementa la interfaz LocationListener para obtener la ubicación del usuario. Entonces, ¿cuál es la diferencia real entre ellos?

Absolutamente utilizar los nuevos servicios de localización de google play. Trabajan mucho mejor en el interior que el antiguo gerente de ubicación. He creado una muestra que utiliza los nuevos servicios de localización de google play y funciona en segundo plano periódicamente. Echale un vistazo:

https://github.com/nickfox/GpsTracker/tree/master/phoneClients/android

Cuando estaba trabajando con él, me encontré con 2 buenas fuentes:

  1. La publicación del blog: Android Location Fused Provider . Incluye un gran tutorial completo sobre el uso de FusedLocationProviderApi para obtener ubicación en Android.

  2. Las respuestas sobre la siguiente clase de LocationClient de Android están obsoletas pero se usan en la pregunta de documentación .

Básicamente, ambos hablan de los pasos similares mencionados en la sesión de Google I / O, enlace al que se menciona en una de las respuestas:

  • En primer lugar, para obtener una instancia de GoogleClientApi , como:

     GoogleClientApi googleApiClient = new GoogleApiClient.Builder(locationActivity) .addApi(LocationServices.API) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .build(); 
  • A continuación, para llamar a .connect() en él como:

     googleApiClient.connect(); 
  • A continuación, en la devolución de llamada onConnected , obtenga la última ubicación o incluso puede solicitar las actualizaciones de ubicación según su necesidad, por ejemplo:

     LocationServices.FusedLocationApi.getLastLocation(googleApiClient); 

    Si desea actualizaciones de ubicación de solicitud, puede utilizar la llamada requestLocationUpdates .

Espero eso ayude.

  • Iniciar la estrategia de ubicación
  • Activar servicios de ubicación sin navegar a la página de configuración
  • La ubicación devuelve 0.0 con WIFI / 3G / 4G en Lollipop 5.0.2
  • OnConnected () no se llama para obtener actualizaciones de ubicación (GooglePlayApi para la ubicación)
  • Clase de actividad principal no encontrada si implementa GooglePlayServicesClient.ConnectionCallbacks / OnConnectionFailedListener
  • Maps api v2 android Mi ubicación no funciona en 2.3.3
  • No se puede encontrar la ubicación actual dentro del fragmento
  • GetLastKnownLocation () Android, cuando se actualiza la última ubicación conocida?
  • Cómo obtener el número de satélites del objeto Ubicación
  • ¿Cómo puedo decidir qué intervalo usar para requestLocationUpdates?
  • ¿Cómo encontrar el grado del valor de la latitud en android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.