¿Cómo cambio entre el GPS y el proveedor de la red?
En mi aplicación, quiero usar ambos proveedores de ubicación.
Eso significa que si el gps está desactivado, quiero que mi aplicación cambie a la red, y cuando gps está habilitado para cambiarla de nuevo.
- No puede resolver el símbolo 'LocationServices'
- ¿Cómo medir la fuerza de la señal GPS en Android?
- Notificaciones de empuje basadas en ubicación para Android
- Android FusedLocationProviderApi: La intención de entrada no tiene LocationResult o LocationAvailability
- La ubicación devuelve 0.0 con WIFI / 3G / 4G en Lollipop 5.0.2
Estoy utilizando dos LocationListener para manejar esas dos solicitudes.
public void onStatusChanged(String provider, int status,Bundle extras) switch (status) { case LocationProvider.TEMPORARILY_UNAVAILABLE: ...... break; case LocationProvider.OUT_OF_SERVICE ..... break; case LocationProvider.AVAILABLE ..... break; }
Y en cada oyente, detecto esos onStatusChanged()
en el onStatusChanged()
. Resulta que este método se utilizará en el primer cambio (red deshabilitada), pero cuando vuelvo a habilitar la red, no muestra nada. ¿Por qué? El oyente no detectará el estado todo el tiempo ??
Por favor, ayúdame, lo mejor sería publicar la solución en el código … Gracias!
- Obtener la lista de lugares que rodean la ubicación actual del usuario
- ¿Cómo obtener la dirección completa desde la latitud y la longitud?
- Mantenga el mapa centrado, independientemente de dónde pinche el zoom en android
- Problemas al utilizar Smart Location Library
- La importación com.google.android.gms.location.LocationClient no se puede resolver
- Creación de un objeto de ubicación de Android
- Android play services 6.5: LocationClient falta
- No se puede encontrar la clase com.google.android.gms.location.LocationClient (android)
Su respuesta está aquí ¿Cuál es la manera más sencilla y más robusta de obtener la ubicación actual del usuario en Android? . En este Fedor muy bien explicado con el ejemplo de cómo cambiar de proveedor de ubicación.
Gracias.
Esto es lo que hago:
public class LocationActivity extends Activity implements LocationListener{ private TextView latituteField; private TextView longitudeField; private LocationManager locationManager; private String provider; private TextView outputField; private Location location; private ScrollView scrollView; private Criteria criteria; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_location); latituteField = (TextView) findViewById(R.id.lat_textView); longitudeField = (TextView) findViewById(R.id.long_textView); outputField = (TextView) findViewById(R.id.output_textView); scrollView = (ScrollView) findViewById(R.id.scrollView1); locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); criteria = new Criteria(); criteria.setAccuracy(Criteria.ACCURACY_FINE); List<String> providers = locationManager.getProviders(criteria, true); outputField.append("Providers available..." + "\n"); for (String provider : providers) { outputField.append(provider + "\n"); scrollView.fullScroll(ScrollView.FOCUS_DOWN); } provider = locationManager.getBestProvider(criteria, true); locationManager.requestLocationUpdates(provider, 400, 1, this); if (provider != null) { outputField.append("Provider " + provider + " has been selected." + "\n"); scrollView.fullScroll(ScrollView.FOCUS_DOWN); if (location != null) { onLocationChanged(location); } else { latituteField.setText("Location not available"); longitudeField.setText("Location not available"); } } else { outputField.append("No provider selected" + "\n"); scrollView.fullScroll(ScrollView.FOCUS_DOWN); } } @Override protected void onResume() { super.onResume(); locationManager.requestLocationUpdates(provider, 400, 1, this); } protected void onPause() { super.onPause(); locationManager.removeUpdates(this); } @Override public void onLocationChanged(Location location) { double lat =location.getLatitude(); double lng =location.getLongitude(); latituteField.setText(String.valueOf(lat)); longitudeField.setText(String.valueOf(lng)); outputField.append("New Location: " + String.valueOf(lat) + " " + String.valueOf(lng) + "\n"); scrollView.fullScroll(ScrollView.FOCUS_DOWN); } @Override public void onProviderDisabled(String dProvider) { outputField.append("Provider " + dProvider + " has been disabled." + "\n"); scrollView.fullScroll(ScrollView.FOCUS_DOWN); provider = locationManager.getBestProvider(criteria, true); locationManager.requestLocationUpdates(provider, 400, 1, this); if (provider != null) { outputField.append("Provider " + provider + " has been selected." + "\n"); scrollView.fullScroll(ScrollView.FOCUS_DOWN); if (location != null) { onLocationChanged(location); } else { latituteField.setText("Location not available"); longitudeField.setText("Location not available"); } } else { outputField.append("No provider selected" + "\n"); scrollView.fullScroll(ScrollView.FOCUS_DOWN); } } @Override public void onProviderEnabled(String eProvider) { outputField.append("Provider " + eProvider + " has been enabled." + "\n"); scrollView.fullScroll(ScrollView.FOCUS_DOWN); provider = locationManager.getBestProvider(criteria, true); locationManager.requestLocationUpdates(provider, 400, 1, this); if (provider != null) { outputField.append("Provider " + provider + " has been selected." + "\n"); scrollView.fullScroll(ScrollView.FOCUS_DOWN); if (location != null) { onLocationChanged(location); } else { latituteField.setText("Location not available"); longitudeField.setText("Location not available"); } } else { outputField.append("No provider selected" + "\n"); scrollView.fullScroll(ScrollView.FOCUS_DOWN); } } @Override public void onStatusChanged(String provider, int status, Bundle extras) { outputField.append("Provider " + provider + " status changed to: " + Integer.toString(status) + "\n"); scrollView.fullScroll(ScrollView.FOCUS_DOWN); } }
- ¿Cómo puedo enviar un SMS desde un BroadcastReceiver y comprobar su estado?
- Prácticas recomendadas para la implementación de Android onClickListener