tiempo - obtener ubicacion android studio 2017
Android: ¿cómo arreglar gps con coordenadas simuladas(falsas)? (1)
Qué lugares simulados necesitan:
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION">
También en la configuración del teléfono Android, asegúrese de tener marcada la casilla "Permitir ubicaciones simuladas"
locationManager.addTestProvider(mocLocationProvider, false, false,
false, false, true, true, true, 0, 5);
locationManager.setTestProviderEnabled(mocLocationProvider, true);
. Ahora, cuando quiera enviar una ubicación, llame a este código:
Location mockLocation = new Location(mocLocationProvider); // a string
mockLocation.setLatitude(location.getLatitude()); // double
mockLocation.setLongitude(location.getLongitude());
mockLocation.setAltitude(location.getAltitude());
mockLocation.setTime(System.currentTimeMillis());
locationManager.setTestProviderLocation( mocLocationProvider, mockLocation);
.
Pero esto solo funciona la primera vez
Porque lo llamaste una vez.
Tengo que hacer un servicio por lo que quiero hacer
Puedes hacer esto, incluso una AsyncTask hará
haz esto o no: lm.requestLocationUpdates ()
Sí, tienes que hacerlo con el mocLocationProvider
Ya llamo más veces al método setLocation (latitud, longitud) pero funciona (actualización de ubicación) solo la primera vez para google maps
No hay un método llamado setLocation()
, use setTestLocation()
Lo que realmente tengo que hacer en asynckTask
Puedes usar un Thread, un TimerTask o cualquier cosa que desees. La idea es inyectar ubicación cada segundo en el Marco.
Estoy tratando de arreglar el GPS programáticamente cuando la señal de GPS no está disponible. Quiero hacer esto para proporcionar coordenadas simuladas a otras aplicaciones como google maps y otros. Intenté usar GPS_PROVIDER y NETWORK_PROVIDER pero solo con este último puedo obtener una nueva ubicación válida para google maps. Pero esto solo funciona la primera tima y si quiero volver a arreglar más lugares simulados, google maps no ve ningún cambio ... ¿por qué? Tengo que hacer un servicio por lo que quiero hacer?
public void setLocation(double latitude, double longitude) {
//mocLocationProvider = LocationManager.GPS_PROVIDER;
mocLocationProvider = LocationManager.NETWORK_PROVIDER;
lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
lm.clearTestProviderEnabled(mocLocationProvider);
lm.requestLocationUpdates(mocLocationProvider,0,0,new llistener());
lm.addTestProvider(mocLocationProvider, false, false, false, false, false, false, false, 0, 10);
lm.setTestProviderEnabled(mocLocationProvider, true);
Location loc = new Location(mocLocationProvider);
loc.setTime(System.currentTimeMillis());
loc.setLatitude(latitude);
loc.setLongitude(longitude);
loc.setAccuracy(10);
lm.setTestProviderStatus(mocLocationProvider, LocationProvider.AVAILABLE,null, System.currentTimeMillis());
lm.setTestProviderLocation(mocLocationProvider, loc);
}
y oyente de ubicación
public class llistener implements LocationListener {
@Override
public void onLocationChanged(Location loc) {
// TODO Auto-generated method stub
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status,
Bundle extras) {
}
}
Gracias