GPS continuu localizează în versiunea 2.3.5 (nu în 2.2)

Am un program care utilizează GPS pentru a localiza o persoană la fiecare 2 minute. Pentru aceasta, codul este:

private boolean flagLocalizacion = false;
private LocationListener locationListener;
private Location ultimaLocalizacion;
private LocationManager locationManager;  

@Override
public void onCreate(Bundle savedInstanceState) {
    locationListener = new LocationListener() { 
        public void onLocationChanged(Location location) {
            if (location!=null) {
                if(ultimaLocalizacion == null && flagLocalizacion) {
                    ultimaLocalizacion = location;
                    Toast.makeText(getApplicationContext(), "Longitude: " + location.getLongitude() + "Latitude: " + location.getLatitude(), Toast.LENGTH_SHORT).show();
                } else if ((ultimaLocalizacion.getLatitude() != location.getLatitude()
                            || ultimaLocalizacion.getLongitude() != location.getLongitude()) && flagLocalizacion) {
                    ultimaLocalizacion = location;
                    Toast.makeText(getApplicationContext(), "Longitude: " + location.getLongitude() + "Latitude: "  + location.getLatitude(), Toast.LENGTH_SHORT).show();
                }                   
            }
        }
        public void onStatusChanged(String provider, int status, Bundle extras) {}
        public void onProviderEnabled(String provider) {
            System.out.println("gps");
        }
        public void onProviderDisabled(String provider) {
            System.out.println("No gps");
        }
    };                                                                   Button botonComenzar = (Button) findViewById(R.id.bComenzar);
    botonComenzar.setOnClickListener(new OnClickListener() {
        @SuppressWarnings("static-access")
        public void onClick(View v) {
            LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
            locationManager.requestLocationUpdates(locationManager.GPS_PROVIDER, 12000, 30, locationListener);
            Toast.makeText(getApplicationContext(), "Activada Localizacion", Toast.LENGTH_SHORT).show();
            flagLocalizacion = true;    
        }
    });

Problema mea este:

Această aplicație funcționează corect în versiunea 2.2. Dar software-ul a eșuat atunci când l-am instalat într-un telefon care are 2.3.5., Eșecul este că localice continuu, nu la fiecare 2 minute. Aveți gânduri despre motivul pentru care se întâmplă acest lucru?

Îţi mulţumesc.

0
Mai întâi de toate, nu este 2 minute = 120000ms și nu 12000ms? 12000ms = 12s dacă matematica mea are dreptate.
adăugat autor praneetloke, sursa

1 răspunsuri

Reînnoirea GPS continuă (adică, cu un interval între actualizările GPS de 1 sec), indiferent de minTime solicitat, este o problemă cunoscută cu multe telefoane Android înainte de JellyBean.

Discuție completă despre această problemă cu echipa Android este aici:

https://android-review.googlesource.com/#/c/34230/

Un nou test CTSVerifier a fost adăugat în Android 4.1 JellyBean care ar trebui să împiedice acest lucru să se întâmple pe JellyBean și mai mare.

Pentru dispozitivele pre-Jelly Bean care sunt afectate de acest lucru, singura opțiune pentru o soluție este să anulați înregistrarea manuală și să înregistrați din nou dispozitivul LocationListener la orice interval de timp doriți să actualizați GPS-ul.

0
adăugat
Android dezvoltatori, România — Moldova
Android dezvoltatori, România — Moldova
27 participanți

Parteneri: ciupacabra.com, @php_ro, @js_ro, @node_ro iOS: @ro_ios Reguli: https://github.com/js-ro/it-telegram/blob/master/RULES.md