android - ubicacion - Encontrar la ubicación actual funciona cuando se usa Wifi, pero falla al usar el GPS
localizar movil por wifi (1)
Tengo dos pensamientos ...
Su código no se está verificando para asegurarse de que el proveedor de GPS esté habilitado. Veo el código comentado enviar un Toast cuando CUALQUIER proveedor está habilitado, pero es posible que desee verificar que el proveedor de GPS esté habilitado en onCreate ().
¿Cuánto tiempo esperas para obtener la ubicación del GPS? El GPS_PROVIDER a veces puede tomar un tiempo para obtener una solución de GPS. He visto valores de TTFF (tiempo hasta el puño) más de dos minutos antes. Para empeorar las cosas, he visto drásticas diferencias TTFF en diferentes versiones de Android, así como diferentes dispositivos.
Le recomendaría que también intente obtener una solución de GPS de otra aplicación para ver cuánto tarda. En general, lanzo Google Maps o el Estado del GPS (sin costo del mercado) para tener una idea de cuánto tardan en obtener una reparación de GPS. Si prueba Google Maps, asegúrese de que está recibiendo la corrección de GPS y no solo una ubicación del NETWORK_PROVIDER (el ícono de GPS en la parte superior de su pantalla debe dejar de parpadear).
Desarrollé una aplicación para encontrar la ubicación del usuario usando GPS.
En esto no hay error Encuentra la ubicación usando Wifi correctamente, pero en modo GPS no devuelve ningún valor. Agregué el permiso necesario en el manifiesto y el GPS está encendido.
¿Alguien puede decirme cómo obtener la ubicación usando Gps?
He incluido mi código aquí:
package c.g.a.loation;
public class UseGps extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LocationManager mlocManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
LocationListener mlocListener = new MyLocationListener();
mlocManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0,
mlocListener);
}
/* Class My Location Listener */
public class MyLocationListener implements LocationListener {
@Override
public void onLocationChanged(Location loc) {
Geocoder gp = new Geocoder(getBaseContext());
try {
ArrayList<Address> address = (ArrayList<Address>) gp
.getFromLocation(loc.getLatitude(), loc.getLongitude(),
1);
if (address != null && address.size() > 0) {
Toast.makeText(getBaseContext(), address.get(0).toString(),
Toast.LENGTH_LONG).show();
}
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onProviderDisabled(String provider) {}
@Override
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {}
@Override
public void onProviderEnabled(String arg0) {}
}
public void onProviderEnabled(String provider) {
// Toast.makeText(
// getApplicationContext(),"Gps Enabled",Toast.LENGTH_SHORT).show();
}
public void onStatusChanged(String provider, int status, Bundle extras) {}
}