Autore Topic: memorizzare posizione gps ogni 3 secondi. è possiible?  (Letto 1208 volte)

Offline specialdo

  • Nuovo arrivato
  • *
  • Post: 20
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Lg Optimus One
  • Sistema operativo:
    Mac OS X 10.6.8
memorizzare posizione gps ogni 3 secondi. è possiible?
« il: 11 Aprile 2014, 12:17:12 CEST »
0
ciao a tutti
dovrei fare un'applicazione che memorizzi su file di testo sulla sd la posizione dell'utente tramite il gps ogni 3 secondi. sulla documentazione ufficiale non ho trovato nulla. è possibile farlo o no? grazie!


Offline pup3770

  • Utente junior
  • **
  • Post: 89
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy s3
  • Sistema operativo:
    Android
Re:memorizzare posizione gps ogni 3 secondi. è possiible?
« Risposta #1 il: 22 Aprile 2014, 11:42:34 CEST »
0
Ciao, non sono programmatore Android ma sto studiando il linguaggio per un APP che sto realizzando. Comunque che ogni 3 secondi ti rileva le coordinate certo che si può fare. Non so come ricavi le coordinate ma io faccio così:

Codice (Java): [Seleziona]
package com.AlessandroRosina.localandsavegps;

import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class Coordinate extends Activity {

        DataBaseHelper db_coordinate;

       
        @Override
        protected void onCreate(Bundle savedInstanceState) {
               

                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_coordinate);
                               
                 
        LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
 
 
        boolean gps = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
 
        if (!gps) {
 
                new AlertDialog.Builder(this).setTitle("GPS Disabilitato").create().show();
 
 
                TextView providerText = (TextView) findViewById(R.id.provider_txt);
                providerText.setText("Sto usando la connessione dati");
 
            lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,
                    60000, // 1 minute interval between updates
                    100, // 100 meters between updates
                    new LocationListener() {
 
                                        @Override
                                        public void onLocationChanged(Location location) {
 
                                        TextView latitudine = (TextView) findViewById(R.id.latitude_txt);
                                        TextView longitudine = (TextView) findViewById(R.id.longitude_txt);
 
                                        latitudine.setText("La latitudine è: "+String.valueOf(location.getLatitude()));
                                        longitudine.setText("La longitudine è: "+String.valueOf(location.getLongitude()));
                                        }
 
                                        @Override
                                        public void onProviderDisabled(String provider) {}
 
                                        @Override
                                        public void onProviderEnabled(String provider) {}
 
                                        @Override
                                        public void onStatusChanged(String provider, int status, Bundle extras) {}
 
            });
        } else {
 
                TextView providerText = (TextView) findViewById(R.id.provider_txt);
                providerText.setText("Sto usando il GPS");
 
 
            lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,
                    20000, // 20 seconds interval between updates
                    100, // 100 meters between updates
                    new LocationListener() {


                                        @Override
                                        public void onLocationChanged(Location location) {

                                               
                                        TextView latitudine = (TextView) findViewById(R.id.latitude_txt);
                                        TextView longitudine = (TextView) findViewById(R.id.longitude_txt);
 
                                        latitudine.setText("La latitudine è: "+String.valueOf(location.getLatitude()));
                                        longitudine.setText("La longitudine è: "+String.valueOf(location.getLongitude()));
 

                                        db_coordinate = new DataBaseHelper(getApplicationContext());
                                 
                                        String latitudine_db = "";
                                        String longitudine_db = "";
                                        latitudine_db = String.valueOf(location.getLatitude());
                                        longitudine_db = String.valueOf(location.getLongitude());
                                       
                                        ContentValues v = new ContentValues();

                                        v.put("latitudine", latitudine_db);    
                                        v.put("longitudine", longitudine_db);
                                        db_coordinate.getWritableDatabase().insert("coordinate", null, v);

                                        Toast.makeText(getApplicationContext(), "Coordinate salvate correttamente", Toast.LENGTH_SHORT).show();
                                       
                                       
                                        }
 
                                        @Override
                                        public void onProviderDisabled(String provider) {}
 
                                        @Override
                                        public void onProviderEnabled(String provider) {}
 
                                        @Override
                                        public void onStatusChanged(String provider, int status, Bundle extras) {}
 
            });
        }

        }

        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
                // Inflate the menu; this adds items to the action bar if it is present.
                getMenuInflater().inflate(R.menu.coordinate, menu);
                return true;
        }
       
}

di tutto il codice, l'aggiornamento automatico della localizzazione lo trovi:
Codice (Java): [Seleziona]
TextView providerText = (TextView) findViewById(R.id.provider_txt);
                providerText.setText("Sto usando il GPS");
 
 
            lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,
                    20000, // 20 seconds interval between updates
                    100, // 100 meters between updates
                    new LocationListener() {

infatti come vedi ogni 20 secondi o ogni 100 metri lui aggiorna la posizione.

Dimmi se ti serve altro.

Considera che attualmente io prelevo le coordinate e le salvo di volta in volta in un database che posso visualizzare quando voglio e si trova nella scheda SD (perché ho impostato l'app che deve stare installata su SD).

Offline Elmvor

  • Utente normale
  • ***
  • Post: 166
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Ubuntu 14.04, Windows 8.1
Re:memorizzare posizione gps ogni 3 secondi. è possiible?
« Risposta #2 il: 30 Aprile 2014, 11:39:06 CEST »
0
Scusa vorrei dei chiarimenti. Nella mia app ho già un'implementazione di LocationListener --> onLocationChanged che parte in automatico all'avvio dell'applicazione con settaggi creati da un oggetto LocationRequest (tempo minimo, massimo, precisione...).

Quello che hai realizzato te mi serve per registrare dei movimenti. Avvio tramite tasto una registrazione che ogni tot metri mi aggiunge un marker ad una lista. Fermo la registrazione e disegno il tracciato ottenuto unendo i marker. Ora però:

1) La nuova richiesta di update non va in conflitto con quella già in corso?
Infatti ho appena controllato. Il LocationListener automatico non funziona più se avvio la registrazione.
2) Come si fermano gli update richiesti al LocationManager nella tua implementazione?

Grazie
« Ultima modifica: 30 Aprile 2014, 11:43:52 CEST da Elmvor »

Offline pup3770

  • Utente junior
  • **
  • Post: 89
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy s3
  • Sistema operativo:
    Android
Re:memorizzare posizione gps ogni 3 secondi. è possiible?
« Risposta #3 il: 30 Aprile 2014, 11:55:20 CEST »
0
Ciao, intanto grazie per il tuo interessamento.

Io avvio la richiesta di localizzazione mediante l'apertura di un'attività in cui chiedo le coordinate, le salvo e le visualizzo; allo scadere dei 20 secondi o dei 100 metri:

Codice (Java): [Seleziona]
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,
                    20000, // 20 seconds interval between updates
                    100, // 100 meters between updates

se non pigio su altri tasti lui riesegue la stessa activity.

Quindi se decidessi di percorrere 1 km se vado veloce il sistema mi localizza ad esempio 10 volte se sto impiegando meno di 20 secondi ogni 100 metri, se invece cammino piano, ogni 20 secondi lui attiva il GPS e mi localizza.

Quello che hai fatto tu, è praticamente quello dove volevo arrivare io solo che non sono riuscito. Il mio obiettivo era quello di localizzarmi lungo una strada ripetute volte, disegnare i punti (coordinate recuperate) sulla mappa ed unire i vari punti.

Se magari hai modo di mandarmi il progetto mi fai una gradita cortesia. (magari ti mando la mia e-mail in privato).

Andiamo al tuo problema, in che senso:

Citazione
1) La nuova richiesta di update non va in conflitto con quella già in corso?

Se ho capito bene tu dici, se io mi localizzo ad esempio alle 20:00:00, e poi mi localizzo alle 20:00:20 e poi mi localizzo alle 20:00:40 queste tre localizzazioni non si sovrappongono? Se è così, ti dico no, non danno nessun problema perché:

Codice (Java): [Seleziona]
else {
 
                TextView providerText = (TextView) findViewById(R.id.provider_txt);
                providerText.setText("Sto usando il GPS");
 
 
            lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,
                    20000, // 20 seconds interval between updates
                    100, // 100 meters between updates
                    new LocationListener() {


                                        @Override
                                        public void onLocationChanged(Location location) {

                                               
                                        TextView latitudine = (TextView) findViewById(R.id.latitude_txt);
                                        TextView longitudine = (TextView) findViewById(R.id.longitude_txt);
 
                                        latitudine.setText("La latitudine è: "+String.valueOf(location.getLatitude()));
                                        longitudine.setText("La longitudine è: "+String.valueOf(location.getLongitude()));
 

                                        db_coordinate = new DataBaseHelper(getApplicationContext());
                                 
                                        String latitudine_db = "";
                                        String longitudine_db = "";
                                        latitudine_db = String.valueOf(location.getLatitude());
                                        longitudine_db = String.valueOf(location.getLongitude());
                                       
                                        ContentValues v = new ContentValues();

                                        v.put("latitudine", latitudine_db);    
                                        v.put("longitudine", longitudine_db);
                                        db_coordinate.getWritableDatabase().insert("coordinate", null, v);

                                        Toast.makeText(getApplicationContext(), "Coordinate salvate correttamente", Toast.LENGTH_SHORT).show();
                                       
                                       
                                        }
 
                                        @Override
                                        public void onProviderDisabled(String provider) {}
 
                                        @Override
                                        public void onProviderEnabled(String provider) {}
 
                                        @Override
                                        public void onStatusChanged(String provider, int status, Bundle extras) {}
 
            });
        }

come puoi vedere ogni volta che entro nell'else recupero le coordinate e con:

Codice (Java): [Seleziona]
v.put("latitudine", latitudine_db);    
                                        v.put("longitudine", longitudine_db);
                                        db_coordinate.getWritableDatabase().insert("coordinate", null, v);

                                        Toast.makeText(getApplicationContext(), "Coordinate salvate correttamente", Toast.LENGTH_SHORT).show();

mi salvo nel db le coordinate.

Quindi credo che tu dovresti prelevare dal db le coordinate rigo per rigo e associarle al marker in modo che il singolo marker è dato da: latitudine e longitudine che prelevi dal db.

Per la seconda domanda:
Citazione
2) Come si fermano gli update richiesti al LocationManager nella tua implementazione?

vabbè nel mio caso come ho scritto prima, essendo che io richiedo la localizzazione ogni volta che avvio l'activity lui mi preleva le coordinate, appena esco non le preleva più. Se io rimango nell'activity lui ad ogni scadenza del tempo o metraggio impostato (nel mio caso 20 secondi o 100 metri) mi preleva le coordinate, ma se metti ad esempio un tasto che ti interrompe l'else, il gioco è fatto.

Dimmi se è chiaro altrimenti provo a capire meglio il tuo problema

Offline Elmvor

  • Utente normale
  • ***
  • Post: 166
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Ubuntu 14.04, Windows 8.1
Re:memorizzare posizione gps ogni 3 secondi. è possiible?
« Risposta #4 il: 30 Aprile 2014, 12:20:00 CEST »
0
Premetto che non posso mandarti il progetto poiché:

1) E' la mia tesi di laurea
2) Lo sto aggiornando con nuove funzioni per pubblicarla sul Market

Comunque in realtà non ho affatto risolto quello che voglio fare. Io visualizzo la mappa nell'Activity principale (su come inserire una mappa è pieno di discussioni in questa sezione), e sempre nella medesima Activity io implemento l'interfaccia LocationListener per ascoltare i cambi di posizione del dispositivo. Questo lo faccio così:

onCreate()

Codice: [Seleziona]
.
.
//Si crea il  LocationClient al quale si passa il riferimento al callback
//delle implementazioni dell'interfaccia
mLocationClient = new LocationClient(this, mConnectionCallbacks, mOnConnectionFailedListener);
.
.

LocationListener

Codice: [Seleziona]
//Implementazione del listener per la gestione dell'update
    private LocationListener mLocationListener = new LocationListener() {
        @Override
        public void onLocationChanged(Location location) {
           ...
           implementi quello che vuoi quando la locazione è cambiata
        }
};

Poi bisogna implementare le due interfacce che ho passato come argomento al LocationClient, ConnectionCallbacks che al suo interno implementa i metodi onConnect ed onDisconnect, e OnConnectionFailedListener che al suo interno implementa il metodo onConnectionFailed.

I nomi dei metodi sono abbastanza autoesplicativi. In essi devi stabilire cosa fare al momento della connessione del LocationClient, della sua disconnessione o di eventuali errori di connessione. Il metodo più importante è l'onConnect dove io faccio questo:

Codice: [Seleziona]
//Otteniamo la nostra posizione
mCurrentLocation = mLocationClient.getLastLocation();
if (mCurrentLocation != null) {
    Toast.makeText(MainActivity.this, "Ultima Location: "
                        + mCurrentLocation.getLatitude() + ","
                        + mCurrentLocation.getLongitude(), Toast.LENGTH_SHORT).show();
} else {
    Toast.makeText(MainActivity.this, "Location non ancora disponibile", Toast.LENGTH_SHORT).show();
}
//Creazione di un LocationRequest
final LocationRequest locationRequest = new LocationRequest();
//Intervallo di update
locationRequest.setInterval(UPDATE_INTERVAL);
//Intervallo di update minimo
locationRequest.setFastestInterval(FASTEST_UPDATE_INTERVAL);
//Alta priorita'
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
//Si imposta il LocationRequest al LocationClient
mLocationClient.requestLocationUpdates(locationRequest, mLocationListener);

Poi associo il LocationClient al ciclo di vita dell'activity: lo connetti nell'onStart (locationClient.connect()), lo disconnetti nell'onStop (rimuovendo il locationListener associato).

Se io voglio registrare un percorso non posso affidarmi a questa implementazione poiché quel che accade è che mi aggiunge troppi marker in base al tempo trascorso, (UPDATE_INTERVAL) quindi pure se sto fermo vedo i markers che vengono aggiunti alla mappa. Io vorrei aggiungerli in base ai metri percorsi, come hai fatto te. Solo che se utilizzo il tuo stesso identico codice, quello che ho postato qui sopra non funziona più (lo devo comunque utilizzare per altri scopi). Devo capirne bene il meccanismo. Probabilmente devo creare più LocationListener da disconnettere e connettere nei punti opportuni del codice. Ci vorrebbe un utente più esperto ad illuminarmi.

Comunque gira in questa sezione e vedrai come si aggiunge una mappa all'activity. E' un'operazione un po macchinosa ma non difficile. Poi aggiungere Marker è banale. Dai Marker puoi ricavare latitudine e longitudine (oggetto LatLng) e per ottenere il percorso tra due punti devi effettuare una richiesta HTTP alle Google Directions Api.

Offline pup3770

  • Utente junior
  • **
  • Post: 89
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy s3
  • Sistema operativo:
    Android
Re:memorizzare posizione gps ogni 3 secondi. è possiible?
« Risposta #5 il: 30 Aprile 2014, 12:32:16 CEST »
0
Ok grazie per i chiarimenti. Si di guide ne ho trovate tante ma sono vecchie oppure a me non funzionano. Io il progetto come il tuo, se è quello che dici nel senso fare un tracker gps, lo sto cercando di fare per una materia che si chiama Geolocalizzazione 2, tu invece per la tesi...strano.. comunque se hai magari qualche link dove spiegano bene e metodo funzionante il procedimento per inserire la Mappa nell'activity te ne sarei grado. Poi dimmi come si chiama l'app una volta caricata nello store così la scarico.

Comunque in merito al tuo problema si può fare in maniera statica è brutta ma funzionale. Al posto di mettere 20 secondi come intervallo metti 20000 così di sicuro non utilizzerà questo criterio e passerà direttamente ai metri.

Codice (Java): [Seleziona]
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,
                    200000000000, // saranno tanti (non so quanti :-))
                    100, // 100 meters between updates


vedi link: http://developer.android.com/reference/android/location/LocationManager.html

Alla fine quello è un campo che può essere raggirato. E comunque al posto di "100" che sta per "100 metri" puoi mettere anche 50 così hai una precisione maggiore.

Spero di esserti stato di aiuto

Offline Elmvor

  • Utente normale
  • ***
  • Post: 166
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Ubuntu 14.04, Windows 8.1
Re:memorizzare posizione gps ogni 3 secondi. è possiible?
« Risposta #6 il: 30 Aprile 2014, 14:29:34 CEST »
0
Io mi sono già laureato :) Comunque l'app non fa solo quello che ho detto.

Per iniziare ho seguito questa guida: https://developers.google.com/maps/documentation/android/start#getting_the_google_maps_android_api_v2

« Ultima modifica: 30 Aprile 2014, 14:33:05 CEST da Elmvor »

Offline pup3770

  • Utente junior
  • **
  • Post: 89
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy s3
  • Sistema operativo:
    Android
Re:memorizzare posizione gps ogni 3 secondi. è possiible?
« Risposta #7 il: 30 Aprile 2014, 14:49:47 CEST »
0
scusa non volevo offenderti, pensavo fosse lo stesso mio progetto..cmq adesso do un'occhiata. grazie mille

Offline Elmvor

  • Utente normale
  • ***
  • Post: 166
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Ubuntu 14.04, Windows 8.1
Re:memorizzare posizione gps ogni 3 secondi. è possiible?
« Risposta #8 il: 30 Aprile 2014, 16:09:07 CEST »
0
No no nessuna offesa, non fraintendere :)

Scusa c'è una cosa che non capisco che non mi pare specificata nemmeno nella documentazione ufficiale.
Nel metodo requestLocationUpdates si passa la distanza minima tra due intervalli di update e il tempo minimo. Non ho capito come vengono considerati, insieme? Cioè se io imposto 5000 per il tempo e 10 per la distanza, anche se sto fermo dopo 5 secondi viene invocato il metodo di update?
« Ultima modifica: 30 Aprile 2014, 17:03:43 CEST da Elmvor »

Offline arlabs

  • Utente normale
  • ***
  • Post: 430
  • Respect: +49
    • Mostra profilo
  • Dispositivo Android:
    GalaxyS6, Nexus5
  • Play Store ID:
    AR Labs
  • Sistema operativo:
    Windows 10
Re:memorizzare posizione gps ogni 3 secondi. è possiible?
« Risposta #9 il: 30 Aprile 2014, 17:55:40 CEST »
0
http://developer.android.com/reference/android/location/LocationManager.html#requestLocationUpdates(long, float, android.location.Criteria, android.app.PendingIntent)

Citazione
The minDistance parameter can also be used to control the frequency of location updates. If it is greater than 0 then the location provider will only send your application an update when the location has changed by at least minDistance meters, AND at least minTime milliseconds have passed. However it is more difficult for location providers to save power using the minDistance parameter, so minTime should be the primary tool to conserving battery life.

Questo significa che non si può mettere 200000000000.

Ciao.

Offline pup3770

  • Utente junior
  • **
  • Post: 89
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy s3
  • Sistema operativo:
    Android
Re:memorizzare posizione gps ogni 3 secondi. è possiible?
« Risposta #10 il: 02 Maggio 2014, 16:23:23 CEST »
0
alt un attimo..
Citazione
arlabs
quello che hai sottolineato tu già se ne era parlato, non capisco perché lo hai scritto nuovamente..comunque.


Codice (Java): [Seleziona]
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,
                    2000000000, // 20 seconds interval between updates
                    100, // 100 meters between updates
                    new LocationListener() {

effettivamente "200000000000" non si può scrivere ma: "2000000000" si perché non supera le 10 cifre numeriche. Quindi visto che si può scrivere "2000000000", si potrà utilizzare il numero intero più grande che è il "9" e quindi avere: "9999999999" ovvero:

Codice (Java): [Seleziona]
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,
                    9999999999, // 2777777,78 ore interval between updates
                    100, // 100 meters between updates
                    new LocationListener() {

che come potete leggere, verificare anche mediante il sito: http://www.convertworld.com/it/tempo/Secondi.html, il valore "9999999999" corrisponde in ore a "2777777,78" ore, ovvero "316,88" anni. Non penso che un qualsiasi utente tiene attiva l'app e si sta fermo per "316,88" anni a meno che non sia un pazzo, quindi, impostando come fatto avrai che l'app ogni "100 metri" recupera la sua posizione.

Eclipse quando scrivo: "9999999999" non da errori quindi suppongo che eseguendo l'app funziona, considerate che se al posto di 10 numeri interi ne metto 11 mi da errore quindi questa è un ulteriore conferma che funzionerà, ma per avere la conferma basta compilare ed eseguire e vedere se da errori.

Nota. Credo che prima viene esaminato il primo valore e poi il secondo quindi se "o uno o l'altro". Ma è facile da provare.

Facci sapere se provi !!!

Offline Elmvor

  • Utente normale
  • ***
  • Post: 166
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Ubuntu 14.04, Windows 8.1
Re:memorizzare posizione gps ogni 3 secondi. è possiible?
« Risposta #11 il: 02 Maggio 2014, 17:20:42 CEST »
0
Ho fatto una prova ieri con gps attivo mettendo 10 metri come spazio e 5 secondi come tempo. Se sto fermo non mi aggiunge nulla, se mi muovo si. Quindi per ora non so spiegarmelo, anche se è esattamente il comportamento che mi interessa avere :D

Offline pup3770

  • Utente junior
  • **
  • Post: 89
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy s3
  • Sistema operativo:
    Android
Re:memorizzare posizione gps ogni 3 secondi. è possiible?
« Risposta #12 il: 02 Maggio 2014, 17:41:11 CEST »
0
Ah benissimo, grazie per aver fatto questa prova. Allora deduco che lui appena legge:

Codice (Java): [Seleziona]
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,
                    9999999999, // 20 seconds interval between updates
                    100, // 100 meters between updates
                    new LocationListener() {

quindi credo che lui dia priorità al movimento inteso come spostamento/shift delle coordinate. Quindi perfetto.

Se mi sposto rileva. Se vado piano e sono passiti "x" secondi ma ancora non ho superato il limite in metri per l'aggiornamento aggiorna allo scadere del timeout altrimenti no. Se supero i metri indicati nel tempo inferiore a quello di intervallo mi preleva nuovamente le coordinate.

Penso che abbiamo capito. Spero che se nessuno risponde diversamente vuol dire che il funzionamento è questo. Prego chi conosce meglio di noi il metodo, di chiarire le idee se non dovesse essere come stiamo dicendo noi.

Offline Elmvor

  • Utente normale
  • ***
  • Post: 166
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Ubuntu 14.04, Windows 8.1
Re:memorizzare posizione gps ogni 3 secondi. è possiible?
« Risposta #13 il: 03 Maggio 2014, 13:44:53 CEST »
0
Nooo aspetta. Ho appena fatto un'altra prova da casa. Mi ha aggiunto 5 markers stando fermo, senza rispettare il tempo di 2 secondi che gli ho dato. Sembra aggiungerli quando vuole lui.

Update: me ne ha aggiunti 2 a breve distanza di tempo nonostante abbia impostato 20 secondi -.-
« Ultima modifica: 03 Maggio 2014, 13:51:46 CEST da Elmvor »

Offline pup3770

  • Utente junior
  • **
  • Post: 89
  • Respect: +1
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy s3
  • Sistema operativo:
    Android
Re:memorizzare posizione gps ogni 3 secondi. è possiible?
« Risposta #14 il: 03 Maggio 2014, 16:25:18 CEST »
0
Non vorrei contraddirti, ma di default io la prima volta che ho inserito il metodo, avevo:
Codice (Java): [Seleziona]
 lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,
                    60000,
                    100,
                    new LocationListener() {

che corrisponde ad 1 minuto. Effettivamente lui, mi rilevava le coordinate (appariva proprio il simbolo del GPS), una volta visualizzate non si vedeva più il simbolo e dopo esattamente 1 minuto (misurato con il cronometro), si vedeva nuovamente l'icona del GPS e rilevava nuovamente le Coordinate.

Adesso lo utilizzo:
Codice (Java): [Seleziona]
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,
                    20000, // 20 seconds interval between updates
                    100, // 100 meters between updates
                    new LocationListener() {

ed effettivamente ogni 20 secondi mi rileva le Coordinate (sempre nello stesso modo di come ho descritto sopra).

Io ho provato solo con 20 secondi e 60 secondi e funziona per come ho descritto. Mi sembra strano che sia come dici tu che prende le coordinate quando vuole. Considera che nella mia APP non si scappa perché ad ogni recupero delle coordinate che lui fa, aggiunge una voce al DB che visualizzando effettivamente è corretto.


NOTA. Ti sembrerà banale ma a me è successo che impazziva l'APP, ho risolto sotto consiglio di un utente: prova a disinstallare l'APP e a reinstallarla in modo da pulire tracce di dati.