La richiesta RequestLocationUpdates di Location Manager è stata chiamata una sola volta

Chiamo il metodo e ci aspettiamo l'aggiornamento della posizione più volte:

locationManager.requestLocationUpdates("gps",0 ,0, loc_listener); 

Il mio loc_listener è definito come:

  • ListView all'interno di ScrollView non è lo scorrimento su Android
  • Come get il token di dispositivo
  • "È necessario utilizzare un tema Tema.ppcompat ..." quando si prova ActionBarActivity, ma sono
  • Esistono alternativi compatibili con Android in Proprietà Utils?
  • Quando sto cercando di caricarlo nel mercato, mostra .. "Devi ridurre la dimensione del file APK a 50 MB o utilizzare file di espansione APK."
  • Il block delle telecamere Android tira IllegalArgumentException
  •  LocationListener loc_listener = new LocationListener() { private final String TAG = "xoxoxo.LocationListener"; public void onLocationChanged(Location l) { Intent locationAlert = new Intent("xoxoxo.LOCATION_CHANGED") .putExtra("target_location", l); sendBroadcast(locationAlert); // locationManager.requestLocationUpdates("gps", 0 ,0, this); } public void onProviderEnabled(String p) { Log.i(TAG, "Provider enabled"); } public void onProviderDisabled(String p) { Log.i(TAG, "Provider disabled"); } public void onStatusChanged(String p, int status, Bundle extras) { Log.i(TAG, "Status changed"); } }; 

    Definito come lo è, riceverò un aggiornamento solo una volta, sia su HTC Evo 2.2 e 2.2 + Google emulator API. Il hack per get più aggiornamenti è quello di deselect la row che registra per gli aggiornamenti di each aggiornamento:

     locationManager.requestLocationUpdates("gps", 0 ,0, this); 

    Hai visto qualcosa di simile?

  • clessidra android
  • Invio di file Android Bluetooth
  • MPAndroidChart con valori nulli
  • Migliaia di inserti grezzi ORMLite che richiedono diversi minuti su Android
  • Come rilevare gli events touch in Android
  • Come posso fare Android Volley eseguire la richiesta HTTPS utilizzando un certificato auto-firmato da una CA non riconosciuta?
  • One Solution collect form web for “La richiesta RequestLocationUpdates di Location Manager è stata chiamata una sola volta”

    Non ho mai visto la questione. Il seguente è il mio codice per testare LocationManager e LocationListener. Funziona come previsto quando LocationListener viene implementato come class anonima.

     package com.test.locationmanager; import android.app.Activity; import android.content.Context; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.location.LocationProvider; import android.os.Bundle; import android.widget.TextView; public class LocationManagerStatus extends Activity { private LocationManager locationManager; private TextView textView; private final LocationListener gpsLocationListener =new LocationListener(){ @Override public void onStatusChanged(String provider, int status, Bundle extras) { final String tvTxt = textView.getText().toString(); switch (status) { case LocationProvider.AVAILABLE: textView.setText(tvTxt + "GPS available again\n"); break; case LocationProvider.OUT_OF_SERVICE: textView.setText(tvTxt + "GPS out of service\n"); break; case LocationProvider.TEMPORARILY_UNAVAILABLE: textView.setText(tvTxt + "GPS temporarily unavailable\n"); break; } } @Override public void onProviderEnabled(String provider) { textView.setText(textView.getText().toString() + "GPS Provider Enabled\n"); } @Override public void onProviderDisabled(String provider) { textView.setText(textView.getText().toString() + "GPS Provider Disabled\n"); } @Override public void onLocationChanged(Location location) { locationManager.removeUpdates(networkLocationListener); textView.setText(textView.getText().toString() + "New GPS location: " + String.format("%9.6f", location.getLatitude()) + ", " + String.format("%9.6f", location.getLongitude()) + "\n"); } }; private final LocationListener networkLocationListener = new LocationListener(){ @Override public void onStatusChanged(String provider, int status, Bundle extras){ final String tvTxt = textView.getText().toString(); switch (status) { case LocationProvider.AVAILABLE: textView.setText(tvTxt + "Network location available again\n"); break; case LocationProvider.OUT_OF_SERVICE: textView.setText(tvTxt + "Network location out of service\n"); break; case LocationProvider.TEMPORARILY_UNAVAILABLE: textView.setText(tvTxt + "Network location temporarily unavailable\n"); break; } } @Override public void onProviderEnabled(String provider) { textView.setText(textView.getText().toString() + "Network Provider Enabled\n"); } @Override public void onProviderDisabled(String provider) { textView.setText(textView.getText().toString() + "Network Provider Disabled\n"); } @Override public void onLocationChanged(Location location) { textView.setText(textView.getText().toString() + "New network location: " + String.format("%9.6f", location.getLatitude()) + ", " + String.format("%9.6f", location.getLongitude()) + "\n"); } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); textView = (TextView) findViewById(R.id.textview); locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); } @Override protected void onResume() { super.onResume(); locationManager.requestLocationUpdates( LocationManager.NETWORK_PROVIDER, 5000, 0, networkLocationListener); locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3000, 0, gpsLocationListener); } @Override protected void onPause() { super.onPause(); locationManager.removeUpdates(networkLocationListener); locationManager.removeUpdates(gpsLocationListener); } } 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.