Escuchar LocationManager.GPS_PROVIDER no dispara ningún evento de LocationListener
Posible duplicado:
Problemas con la obtención del estado de GPS desde LocationManager en Android
Parece que cuando me requestLocationUpdates y escuchar LocationManager.GPS_PROVIDER NO obtengo ningún evento, pero si escucho LocationManager.NETWORK_PROVIDER que obtener actualizaciones
- GPS Android - obtener posicionamiento sólo una vez
- Uso de datos de Internet por Android LocationManager
- Dispositivo GPS Android activado / desactivado mediante programación
- El proveedor de red de LocationManager de Android devuelve null
- Java.lang.SecurityException: inválido nombre del paquete: com.google.android.gms
Así que éste, con NETWORK_PROVIDER funciona. Llego al método onLocationChanged:
LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); // Define a listener that responds to location updates LocationListener locationListener = new LocationListener() { public void onLocationChanged(Location location) { // Called when a new location is found by the network location provider. textView.setText(textView.getText().toString() + "GOT SOMETHING\n"); } public void onStatusChanged(String provider, int status, Bundle extras) { textView.setText(textView.getText().toString() + status + "onStatus Changed \n"); } public void onProviderEnabled(String provider) { textView.setText(textView.getText().toString() + "onProviderEnabled \n"); } public void onProviderDisabled(String provider) { textView.setText(textView.getText().toString() + "onProviderDisabled \n"); } }; locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
Éste con GPS_PROVIDER no funciona. Nunca llego a ninguno de los métodos implementados. (OnLocationChanged, onStatusChanged etc):
LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE); // Define a listener that responds to location updates LocationListener locationListener = new LocationListener() { public void onLocationChanged(Location location) { // Called when a new location is found by the network location provider. textView.setText(textView.getText().toString() + "GOT SOMETHING\n"); } public void onStatusChanged(String provider, int status, Bundle extras) { textView.setText(textView.getText().toString() + status + "onStatus Changed \n"); } public void onProviderEnabled(String provider) { textView.setText(textView.getText().toString() + "onProviderEnabled \n"); } public void onProviderDisabled(String provider) { textView.setText(textView.getText().toString() + "onProviderDisabled \n"); } }; locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
¿Se trata de un error con Android?
Mi GPS está encendido, y la barra de estado tiene el icono GPS en sólido. No sé si esto importa un manojo porque debería llegar a la onStatusChanged en cualquier caso … Además, tengo el <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
- ¿Cómo detener el administrador de ubicaciones?
- Cómo ACCESS_FINE_LOCATION mantiene GPS apagado?
- Obtenga la latitud y la longitud sin necesidad de insertar la tarjeta SIM y el Gps de inicio / parada de la aplicación
- RequestLocationUpdates final del parámetro minTime
- Etiquetado geo en android
Así que hice lo que NickT sugirió y caminó un maneras lejos de mi edificio y, finalmente, comencé a recibir estos eventos. Así que mi código estaba bien, era sólo mi fuerza de la señal en mi dispositivo era pobre.
Tener la aplicación de prueba GPS fue muy útil también.